EcranEditionDecors.py 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. from PyQt4.QtCore import *
  5. from PyQt4.QtGui import *
  6. from ui.ecran_editionDecor import Ui_editionDecor
  7. class EcranEditionDecors(QDialog):
  8. """interface de creation/edition de decors"""
  9. def __init__(self, decor=None, formeCases = "H", parent=None):
  10. """initialisation de la fenetre"""
  11. super (EcranEditionDecors, self).__init__()
  12. self.decor = decor
  13. self.pixGraphique = None
  14. self.formeCases = formeCases
  15. self.createWidgets()
  16. if decor == None:
  17. self.accesCreation()
  18. else:
  19. self.accesEdition()
  20. self.majAffichage("")
  21. def createWidgets(self):
  22. """construction de l'interface"""
  23. #construction de l'interface
  24. self.ui = Ui_editionDecor()
  25. self.ui.setupUi(self)
  26. self.connect(self.ui.enregistrerDecor, SIGNAL("clicked()"), self.enregistrer)
  27. self.connect(self.ui.annulerDecor, SIGNAL("clicked()"), self.annuler)
  28. self.connect(self.ui.supprimerDecor, SIGNAL("clicked()"), self.supprimer)
  29. self.connect(self.ui.idDecor, SIGNAL("textEdited(QString)"), self.majAffichage)
  30. self.connect(self.ui.nomDecor, SIGNAL("textEdited(QString)"), self.majAffichage)
  31. self.connect(self.ui.couleurDecor, SIGNAL("clicked()"), self.selectionCouleur)
  32. self.connect(self.ui.imgDecor, SIGNAL("textEdited(QString)"), self.majApercuImage)
  33. self.connect(self.ui.imgLogoDecor, SIGNAL("textEdited(QString)"), self.majApercuImage)
  34. self.connect(self.ui.imgAfficherDecor, SIGNAL("stateChanged(int)"), self.majApercuImage)
  35. self.connect(self.ui.imgPivoteDecor, SIGNAL("stateChanged(int)"), self.majApercuImage)
  36. self.connect(self.ui.imgMasqueDecor, SIGNAL("stateChanged(int)"), self.majApercuImage)
  37. self.connect(self.ui.imgTailleXDecor, SIGNAL("valueChanged(int)"), self.majApercuImage)
  38. self.connect(self.ui.imgTailleYDecor, SIGNAL("valueChanged(int)"), self.majApercuImage)
  39. self.connect(self.ui.imgPosXDecor, SIGNAL("valueChanged(int)"), self.majApercuImage)
  40. self.connect(self.ui.imgPosYDecor, SIGNAL("valueChanged(int)"), self.majApercuImage)
  41. self.connect(self.ui.imgRotationDecor, SIGNAL("valueChanged(int)"), self.majApercuImage)
  42. self.connect(self.ui.imgReinitDecor, SIGNAL("clicked()"), self.reinitImage)
  43. self.vueForme = VueEditionForme(self, self.formeCases)
  44. self.vueForme.creer()
  45. def accesEdition(self):
  46. """ouverture en mode edition"""
  47. self.ui.idDecor.setEnabled(True)
  48. self.ui.idDecor.setText(QString.fromUtf8(str(self.decor.id)))
  49. self.ui.nomDecor.setText(QString.fromUtf8(str(self.decor.nom)))
  50. if self.decor.couleur.isValid():
  51. self.ui.affichageCouleurDecor.setStyleSheet("QLabel {backGround:%s}" %(self.decor.couleur.name()))
  52. self.ui.imgLogoDecor.setText(QString.fromUtf8(str(self.decor.logo)))
  53. if self.decor.img["nom"] != self.decor.logo:
  54. self.ui.imgDecor.setText(QString.fromUtf8(str(self.decor.img["nom"])))
  55. self.ui.imgTailleXDecor.setValue(self.decor.img["kx"])
  56. self.ui.imgTailleYDecor.setValue(self.decor.img["ky"])
  57. self.ui.imgPosXDecor.setValue(self.decor.img["dx"])
  58. self.ui.imgPosYDecor.setValue(self.decor.img["dy"])
  59. self.ui.imgRotationDecor.setValue(self.decor.img["rotation"])
  60. self.ui.imgPivoteDecor.setChecked(self.decor.img["pivote"])
  61. self.ui.imgMasqueDecor.setChecked(self.decor.img["masqueAuto"])
  62. self.ui.hauteurDecor.setValue(self.decor.hauteur)
  63. self.ui.couvertDecor.setChecked(self.decor.couvert)
  64. self.ui.escaladeDecor.setChecked(self.decor.escalade)
  65. self.ui.franchissablePiedDecor.setChecked(self.decor.franchissablePied)
  66. self.ui.franchissableVolDecor.setChecked(self.decor.franchissableVol)
  67. self.ui.bruleDecor.setChecked(self.decor.brule)
  68. self.vueForme.majForme(self.decor.formeDef[self.formeCases])
  69. self.ui.supprimerDecor.setEnabled(True)
  70. self.ui.idDecor.setEnabled(False)
  71. self.majApercuImage()
  72. def accesCreation(self):
  73. """ouverture en mode creation"""
  74. self.decor = Decor()
  75. self.ui.idDecor.setEnabled(True)
  76. self.ui.idDecor.setText(QString.fromUtf8(str(self.nouvelIdCreature())))
  77. self.ui.idDecor.setEnabled(False)
  78. self.majApercuImage()
  79. def majAffichage(self, txt):
  80. """verifie la validite des saisies"""
  81. self.ui.enregistrerDecor.setEnabled(len(self.ui.idDecor.text().toUtf8()) > 0 and len(self.ui.nomDecor.text().toUtf8()) > 0)
  82. def nouvelIdCreature(self):
  83. """renvoie un identifiant pour un nouveau decor"""
  84. dicoSvg = afficheSvg("librairie\\decor")
  85. nouvelId = 1
  86. while str(nouvelId) in dicoSvg.keys():
  87. nouvelId += 1
  88. return str(nouvelId)
  89. def selectionCouleur(self):
  90. """selectionne la couleur dans la boite de dialogue dediee"""
  91. couleur = QColorDialog(self).getColor(QColor("white"), self)
  92. if couleur.isValid():
  93. nomCouleur = couleur.name()
  94. self.ui.affichageCouleurDecor.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  95. self.decor.couleur = couleur
  96. def majApercuImage(self):
  97. """met a jour l'image sur l'apercu du pion"""
  98. if self.ui.imgAfficherDecor.isChecked():
  99. if len(str(self.ui.imgDecor.text().toUtf8())) > 0:
  100. img = str(self.ui.imgDecor.text().toUtf8())
  101. self.vueForme.majImage(img, self.ui.imgTailleXDecor.value() \
  102. , self.ui.imgTailleYDecor.value() \
  103. , self.ui.imgPosXDecor.value() \
  104. , self.ui.imgPosYDecor.value() \
  105. , self.ui.imgRotationDecor.value() \
  106. , self.ui.imgPivoteDecor.isChecked() \
  107. , self.ui.imgMasqueDecor.isChecked())
  108. else:
  109. img = str(self.ui.imgLogoDecor.text().toUtf8())
  110. self.vueForme.majImage(img)
  111. else:
  112. img = ""
  113. self.vueForme.majImage(img)
  114. def reinitImage(self):
  115. self.ui.imgTailleXDecor.setValue(10)
  116. self.ui.imgTailleYDecor.setValue(10)
  117. self.ui.imgPosXDecor.setValue(0)
  118. self.ui.imgPosYDecor.setValue(0)
  119. self.ui.imgRotationDecor.setValue(0)
  120. self.ui.imgPivoteDecor.setChecked(False)
  121. self.ui.imgMasqueDecor.setChecked(False)
  122. self.majApercuImage()
  123. def enregistrer(self):
  124. """enregistre le terrain cree/edite"""
  125. self.decor.id = str(self.ui.idDecor.text().toUtf8())
  126. self.decor.nom = str(self.ui.nomDecor.text().toUtf8())
  127. self.decor.logo = str(self.ui.imgLogoDecor.text().toUtf8())
  128. if len(str(self.ui.imgDecor.text().toUtf8())) > 0:
  129. self.decor.img["nom"] = str(self.ui.imgDecor.text().toUtf8())
  130. self.decor.img["kx"] = self.ui.imgTailleXDecor.value()
  131. self.decor.img["ky"] = self.ui.imgTailleYDecor.value()
  132. self.decor.img["dx"] = self.ui.imgPosXDecor.value()
  133. self.decor.img["dy"] = self.ui.imgPosYDecor.value()
  134. self.decor.img["rotation"] = self.ui.imgRotationDecor.value()
  135. self.decor.img["pivote"] = self.ui.imgPivoteDecor.isChecked()
  136. self.decor.img["masqueAuto"] = self.ui.imgMasqueDecor.isChecked()
  137. else:
  138. self.decor.img["nom"] = str(self.ui.imgLogoDecor.text().toUtf8())
  139. self.decor.img["kx"] = 10
  140. self.decor.img["ky"] = 10
  141. self.decor.img["dx"] = 0
  142. self.decor.img["dy"] = 0
  143. self.decor.img["rotation"] = 0
  144. self.decor.img["pivote"] = False
  145. self.decor.img["masqueAuto"] = self.ui.imgMasqueDecor.isChecked()
  146. self.decor.hauteur = int(self.ui.hauteurDecor.value())
  147. self.decor.couvert = self.ui.couvertDecor.isChecked()
  148. self.decor.brule = self.ui.bruleDecor.isChecked()
  149. self.decor.franchissablePied = self.ui.franchissablePiedDecor.isChecked()
  150. self.decor.franchissableVol = self.ui.franchissableVolDecor.isChecked()
  151. self.decor.escalade = self.ui.escaladeDecor.isChecked()
  152. self.decor.formeDef[self.formeCases] = self.vueForme.formeDef()
  153. enregistrer(self.decor.id, self.decor, "librairie\\decor")
  154. self.decor = None
  155. self.emit(SIGNAL("majListDecors()"))
  156. self.close()
  157. def supprimer(self):
  158. """supprimer l'enregistrement de ce terrain"""
  159. supprSvg("librairie\\decor", self.decor.id)
  160. self.emit(SIGNAL("majListDecors()"))
  161. self.close()
  162. def annuler(self):
  163. """annule la creation/edition"""
  164. self.decor = None
  165. self.close()