EcranEditionTerrain.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. import os
  5. import sys
  6. from PyQt4.QtCore import *
  7. from PyQt4.QtGui import *
  8. from Terrain import Terrain
  9. from outilsSvg import *
  10. import rsc, uid
  11. from ui.ecran_editionTerrain import Ui_et_fenetre
  12. class EcranEditionTerrain(QDialog):
  13. """interface de creation/edition de terrains"""
  14. def __init__(self, terrain=None, parent=None):
  15. """initialisation de la fenetre"""
  16. super (EcranEditionTerrain, self).__init__()
  17. self.createWidgets()
  18. self.terrain = terrain
  19. if terrain == None:
  20. self.terrain = Terrain()
  21. else:
  22. self.accesEdition()
  23. self.majAffichage("")
  24. def createWidgets(self):
  25. """construction de l'interface"""
  26. #construction de l'interface
  27. self.ui = Ui_et_fenetre()
  28. self.ui.setupUi(self)
  29. self.connect(self.ui.et_enregistrer, SIGNAL("clicked()"), self.enregistrer)
  30. self.connect(self.ui.et_annuler, SIGNAL("clicked()"), self.annuler)
  31. self.connect(self.ui.et_supprimer, SIGNAL("clicked()"), self.supprimer)
  32. self.connect(self.ui.et_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
  33. self.connect(self.ui.et_selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur)
  34. self.connect(self.ui.et_selectionFichier, SIGNAL("clicked()"), self.selectionFichier)
  35. def accesEdition(self):
  36. """ouverture en mode edition"""
  37. self.ui.et_nom.setText(QString.fromUtf8(str(self.terrain.nom)))
  38. if self.terrain.imgTexture.estValide():
  39. self.ui.et_apercu.chargerImage(self.terrain.imgTexture)
  40. else:
  41. if self.terrain.couleur.isValid():
  42. self.ui.et_apercu.setText(QString(""))
  43. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name()))
  44. if self.terrain.nage:
  45. self.ui.et_depNage.setChecked(True)
  46. elif not self.terrain.franchissable:
  47. self.ui.et_depAucun.setChecked(True)
  48. self.ui.et_supprimer.setEnabled(True)
  49. def majAffichage(self, txt):
  50. """verifie la validite des saisies"""
  51. self.ui.et_enregistrer.setEnabled(len(self.ui.et_nom.text().toUtf8()) > 0)
  52. def nouvelIdTerrain(self):
  53. """renvoie un identifiant pour un nouveau terrain"""
  54. dicoSvg = afficheSvg("lib\\biblio\\terrain")
  55. nouvelId = 1
  56. while str(nouvelId) in dicoSvg.keys():
  57. nouvelId += 1
  58. return str(nouvelId)
  59. def selectionCouleur(self):
  60. """selectionne la couleur dans la boite de dialogue dediee"""
  61. couleur = QColorDialog(self).getColor(QColor("white"), self)
  62. if couleur.isValid():
  63. nomCouleur = couleur.name()
  64. self.ui.et_apercu.setText(QString(""))
  65. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  66. self.terrain.couleur = couleur
  67. def selectionFichier(self):
  68. """selectionne le fichier de texture dans la boite de dialogue dediee"""
  69. img = rsc.selectionImage()
  70. if img:
  71. self.ui.et_apercu.chargerImage(img)
  72. def enregistrer(self):
  73. """enregistre le terrain cree/edite"""
  74. if not self.terrain.id:
  75. self.terrain.id = self.nouvelIdTerrain()
  76. self.terrain.nom = str(self.ui.et_nom.text().toUtf8())
  77. if self.ui.et_apercu.image():
  78. self.terrain.imgTexture = self.ui.et_apercu.image()
  79. self.terrain.franchissable = (not self.ui.et_depAucun.isChecked())
  80. self.terrain.nage = self.ui.et_depNage.isChecked()
  81. enregistrer(self.terrain.id, self.terrain, "lib\\biblio\\terrain")
  82. self.terrain = None
  83. self.done(1)
  84. def supprimer(self):
  85. """supprimer l'enregistrement de ce terrain"""
  86. supprSvg("terrain", self.terrain.id)
  87. self.done(1)
  88. def annuler(self):
  89. """annule la creation/edition"""
  90. self.terrain = None
  91. self.done(0)
  92. if __name__ == "__main__":
  93. app = QApplication(sys.argv)
  94. ecran = EcranEditionTerrain()
  95. ecran.show()
  96. r = app.exec_()
  97. exit(r)