EcranEditionTerrain.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. import os
  5. from PyQt4.QtCore import *
  6. from PyQt4.QtGui import *
  7. from Terrain import Terrain
  8. from ui.ecran_editionTerrain import Ui_et_fenetre
  9. from outilsSvg import *
  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.nomImg = ""
  16. self.createWidgets()
  17. self.terrain = terrain
  18. if terrain == None:
  19. self.terrain = Terrain()
  20. else:
  21. self.accesEdition()
  22. self.majAffichage("")
  23. def createWidgets(self):
  24. """construction de l'interface"""
  25. #construction de l'interface
  26. self.ui = Ui_et_fenetre()
  27. self.ui.setupUi(self)
  28. self.connect(self.ui.et_enregistrer, SIGNAL("clicked()"), self.enregistrer)
  29. self.connect(self.ui.et_annuler, SIGNAL("clicked()"), self.annuler)
  30. self.connect(self.ui.et_supprimer, SIGNAL("clicked()"), self.supprimer)
  31. self.connect(self.ui.et_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
  32. self.connect(self.ui.et_selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur)
  33. self.connect(self.ui.et_selectionFichier, SIGNAL("clicked()"), self.selectionFichier)
  34. def accesEdition(self):
  35. """ouverture en mode edition"""
  36. self.ui.et_nom.setText(QString.fromUtf8(str(self.terrain.nom)))
  37. if os.path.exists(self.terrain.imgTexture):
  38. pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture)))
  39. if not pix.isNull():
  40. self.ui.et_apercu.setText(QString(""))
  41. pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture)))
  42. self.ui.et_apercu.setPixmap(pix)
  43. else:
  44. if self.terrain.couleur.isValid():
  45. self.ui.et_apercu.setText(QString(""))
  46. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name()))
  47. ## if self.terrain.visibilite:
  48. ## self.ui.visibiliteTerrain.setCheckState(2)
  49. ## else:
  50. ## self.ui.visibiliteTerrain.setCheckState(0)
  51. ## if self.terrain.franchissable:
  52. ## self.ui.franchissableTerrain.setCheckState(2)
  53. ## else:
  54. ## self.ui.franchissableTerrain.setCheckState(0)
  55. self.ui.et_supprimer.setEnabled(True)
  56. def majAffichage(self, txt):
  57. """verifie la validite des saisies"""
  58. self.ui.et_enregistrer.setEnabled(len(self.ui.et_nom.text().toUtf8()) > 0)
  59. def nouvelIdTerrain(self):
  60. """renvoie un identifiant pour un nouveau terrain"""
  61. dicoSvg = afficheSvg("lib\\biblio\\terrain")
  62. nouvelId = 1
  63. while str(nouvelId) in dicoSvg.keys():
  64. nouvelId += 1
  65. return str(nouvelId)
  66. def selectionCouleur(self):
  67. """selectionne la couleur dans la boite de dialogue dediee"""
  68. couleur = QColorDialog(self).getColor(QColor("white"), self)
  69. if couleur.isValid():
  70. nomCouleur = couleur.name()
  71. self.ui.et_apercu.setText(QString(""))
  72. self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  73. self.terrain.couleur = couleur
  74. def selectionFichier(self):
  75. """selectionne le fichier de texture dans la boite de dialogue dediee"""
  76. fichier = QFileDialog.getOpenFileName(self,
  77. "Selectionnez une image",
  78. "\\img",
  79. "Images (*.png *.jpg)")
  80. pix = QPixmap(fichier)
  81. if not pix.isNull():
  82. self.nomImg = fichier
  83. self.ui.et_apercu.setText(QString(""))
  84. self.ui.et_apercu.setPixmap(pix)
  85. else:
  86. dial = QMessageBox(self)
  87. dial.setText("Format non reconnu")
  88. dial.setWindowTitle("Erreur")
  89. dial.setStandardButtons(QMessageBox.Ok)
  90. dial.exec_()
  91. def enregistrer(self):
  92. """enregistre le terrain cree/edite"""
  93. self.terrain.id = self.nouvelIdTerrain()
  94. self.terrain.nom = str(self.ui.et_nom.text().toUtf8())
  95. self.terrain.imgTexture = self.nomImg
  96. ## self.terrain.franchissable = bool(self.ui.franchissableTerrain.checkState())
  97. enregistrer(self.terrain.id, self.terrain, "lib\\biblio\\terrain")
  98. self.terrain = None
  99. self.done(1)
  100. def supprimer(self):
  101. """supprimer l'enregistrement de ce terrain"""
  102. supprSvg("terrain", self.terrain.id)
  103. self.done(1)
  104. def annuler(self):
  105. """annule la creation/edition"""
  106. self.terrain = None
  107. self.done(0)