EcranEditionDecors.py 8.8 KB

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