EcranEditionTerrain.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. import sys
  5. from PyQt4.QtCore import SIGNAL, QString
  6. from PyQt4.QtGui import QDialog, QColorDialog, QColor, QApplication
  7. from Terrain import Terrain
  8. import rsc
  9. from ui.ecran_editionTerrain import Ui_et_fenetre
  10. class EcranEditionTerrain(QDialog):
  11. """interface de creation/edition de terrains"""
  12. def __init__(self, terrain = None, parent=None):
  13. """initialisation de la fenetre"""
  14. super (EcranEditionTerrain, self).__init__()
  15. self.createWidgets()
  16. self.terrain = Terrain() if not terrain else terrain
  17. if terrain: self.accesEdition()
  18. self.majAffichage()
  19. def createWidgets(self):
  20. """construction de l'interface"""
  21. #construction de l'interface
  22. self.ui = Ui_et_fenetre()
  23. self.ui.setupUi(self)
  24. self.connect(self.ui.et_enregistrer, SIGNAL("clicked()"), self.enregistrer)
  25. self.connect(self.ui.et_annuler, SIGNAL("clicked()"), self.annuler)
  26. self.connect(self.ui.et_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
  27. self.connect(self.ui.et_selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur)
  28. self.connect(self.ui.et_selectionFichier, SIGNAL("clicked()"), self.selectionFichier)
  29. def accesEdition(self):
  30. """ouverture en mode edition"""
  31. self.ui.et_nom.majTexte(self.terrain.nom())
  32. if self.terrain.imgTexture.estValide():
  33. self.ui.et_apercu.chargerImage(self.terrain.imgTexture)
  34. else:
  35. if self.terrain.couleur.isValid():
  36. self.ui.et_apercu.setText(QString(""))
  37. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name()))
  38. if self.terrain.nage:
  39. self.ui.et_depNage.setChecked(True)
  40. elif not self.terrain.franchissable:
  41. self.ui.et_depAucun.setChecked(True)
  42. def majAffichage(self):
  43. """verifie la validite des saisies"""
  44. self.ui.et_enregistrer.setEnabled(len(self.ui.et_nom.texte()) > 0)
  45. def selectionCouleur(self):
  46. """selectionne la couleur dans la boite de dialogue dediee"""
  47. couleur = QColorDialog(self).getColor(QColor("white"), self)
  48. if couleur.isValid():
  49. nomCouleur = couleur.name()
  50. self.ui.et_apercu.setText(QString(""))
  51. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  52. self.terrain.couleur = couleur
  53. def selectionFichier(self):
  54. """selectionne le fichier de texture dans la boite de dialogue dediee"""
  55. img = rsc.selectionImage()
  56. if img:
  57. self.ui.et_apercu.chargerImage(img)
  58. def enregistrer(self):
  59. """enregistre le terrain cree/edite"""
  60. self.terrain.majNom(self.ui.et_nom.texte())
  61. if self.ui.et_apercu.image():
  62. self.terrain.imgTexture = self.ui.et_apercu.image()
  63. self.terrain.franchissable = (not self.ui.et_depAucun.isChecked())
  64. self.terrain.nage = self.ui.et_depNage.isChecked()
  65. self.done(1)
  66. def annuler(self):
  67. """annule la creation/edition"""
  68. self.terrain = None
  69. self.done(0)
  70. if __name__ == "__main__":
  71. app = QApplication(sys.argv)
  72. ecran = EcranEditionTerrain()
  73. ecran.show()
  74. r = app.exec_()
  75. exit(r)