EcranEditionTerrain.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. class EcranEditionTerrain(QDialog):
  7. """interface de creation/edition de terrains"""
  8. def __init__(self, terrain=None, parent=None):
  9. """initialisation de la fenetre"""
  10. super (EcranEditionTerrain, self).__init__()
  11. self.createWidgets()
  12. self.terrain = terrain
  13. if terrain == None:
  14. self.accesCreation()
  15. else:
  16. self.accesEdition()
  17. self.majAffichage("")
  18. def createWidgets(self):
  19. """construction de l'interface"""
  20. #construction de l'interface
  21. self.ui = Ui_editionTerrain()
  22. self.ui.setupUi(self)
  23. self.connect(self.ui.enregistrerTerrain, SIGNAL("clicked()"), self.enregistrer)
  24. self.connect(self.ui.annulerTerrain, SIGNAL("clicked()"), self.annuler)
  25. self.connect(self.ui.supprimerTerrain, SIGNAL("clicked()"), self.supprimer)
  26. self.connect(self.ui.idTerrain, SIGNAL("textEdited(QString)"), self.majAffichage)
  27. self.connect(self.ui.nomTerrain, SIGNAL("textEdited(QString)"), self.majAffichage)
  28. self.connect(self.ui.couleurTerrain, SIGNAL("clicked()"), self.selectionCouleur)
  29. def accesEdition(self):
  30. """ouverture en mode edition"""
  31. self.ui.idTerrain.setEnabled(True)
  32. self.ui.idTerrain.setText(QString.fromUtf8(str(self.terrain.id)))
  33. self.ui.nomTerrain.setText(QString.fromUtf8(str(self.terrain.nom)))
  34. if self.terrain.couleur.isValid():
  35. self.ui.affichageCouleurTerrain.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name()))
  36. self.ui.imgTextureTerrain.setText(QString.fromUtf8(str(self.terrain.imgTexture)))
  37. self.ui.modDeplacementTerrain.setValue(self.terrain.modDeplacement)
  38. if self.terrain.visibilite:
  39. self.ui.visibiliteTerrain.setCheckState(2)
  40. else:
  41. self.ui.visibiliteTerrain.setCheckState(0)
  42. if self.terrain.franchissable:
  43. self.ui.franchissableTerrain.setCheckState(2)
  44. else:
  45. self.ui.franchissableTerrain.setCheckState(0)
  46. self.ui.supprimerTerrain.setEnabled(True)
  47. self.ui.idTerrain.setEnabled(False)
  48. def accesCreation(self):
  49. """ouverture en mode creation"""
  50. self.terrain = Terrain()
  51. self.ui.idTerrain.setEnabled(True)
  52. self.ui.idTerrain.setText(QString.fromUtf8(str(self.nouvelIdTerrain())))
  53. self.ui.idTerrain.setEnabled(False)
  54. def majAffichage(self, txt):
  55. """verifie la validite des saisies"""
  56. self.ui.enregistrerTerrain.setEnabled(len(self.ui.idTerrain.text().toUtf8()) > 0 and len(self.ui.nomTerrain.text().toUtf8()) > 0)
  57. def nouvelIdTerrain(self):
  58. """renvoie un identifiant pour un nouveau terrain"""
  59. dicoSvg = afficheSvg("librairie\\terrain")
  60. nouvelId = 1
  61. while str(nouvelId) in dicoSvg.keys():
  62. nouvelId += 1
  63. return str(nouvelId)
  64. def selectionCouleur(self):
  65. """selectionne la couleur dans la boite de dialogue dediee"""
  66. couleur = QColorDialog(self).getColor(QColor("white"), self)
  67. if couleur.isValid():
  68. nomCouleur = couleur.name()
  69. self.ui.affichageCouleurTerrain.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  70. self.terrain.couleur = couleur
  71. def enregistrer(self):
  72. """enregistre le terrain cree/edite"""
  73. self.terrain.id = str(self.ui.idTerrain.text().toUtf8())
  74. self.terrain.nom = str(self.ui.nomTerrain.text().toUtf8())
  75. self.terrain.imgTexture = str(self.ui.imgTextureTerrain.text().toUtf8())
  76. self.terrain.modDeplacement = float(self.ui.modDeplacementTerrain.value())
  77. self.terrain.visibilite = bool(self.ui.visibiliteTerrain.checkState())
  78. self.terrain.franchissable = bool(self.ui.franchissableTerrain.checkState())
  79. enregistrer(self.terrain.id, self.terrain, "librairie\\terrain")
  80. self.terrain = None
  81. self.close()
  82. self.emit(SIGNAL("majListTerrains()"))
  83. def supprimer(self):
  84. """supprimer l'enregistrement de ce terrain"""
  85. supprSvg("terrain", self.terrain.id)
  86. self.close()
  87. self.emit(SIGNAL("majListTerrains()"))
  88. def annuler(self):
  89. """annule la creation/edition"""
  90. self.terrain = None
  91. self.close()