EcranCreerPlateau.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from PyQt4.QtCore import Qt, SIGNAL
  4. from PyQt4.QtGui import QDialog, QColor, QMessageBox, QColorDialog
  5. from ui.ecran_creerPlateau import Ui_crp_fenetre
  6. class EcranCreerPlateau(QDialog):
  7. """interface de creation/chargement de plateau"""
  8. def __init__(self, parent=None):
  9. """initialisation de la fenetre"""
  10. super (EcranCreerPlateau, self).__init__()
  11. self.couleur = QColor(0, 255, 0, 80)
  12. self._majEnCours = False
  13. self._resultat = None
  14. self.createWidgets()
  15. def createWidgets(self):
  16. """construction de l'interface"""
  17. #construction de l'interface
  18. self.ui = Ui_crp_fenetre()
  19. self.ui.setupUi(self)
  20. self.setWindowModality(Qt.ApplicationModal)
  21. self.ui.crp_couleur.setStyleSheet("QLabel {backGround:%s}" %(self.couleur))
  22. self.connect(self.ui.crp_couleur, SIGNAL("clicked()"), self.selectionCouleur)
  23. self.connect(self.ui.crp_listeDimensions, SIGNAL("activated(int)"), self.majDimensions)
  24. self.connect(self.ui.crp_largeur, SIGNAL("valueChanged(int)"), self.majListeDimensions)
  25. self.connect(self.ui.crp_hauteur, SIGNAL("valueChanged(int)"), self.majListeDimensions)
  26. self.connect(self.ui.crp_plafond, SIGNAL("toggled(bool)"), self.majAffichage)
  27. self.connect(self.ui.crp_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
  28. self.connect(self.ui.crp_ok, SIGNAL("clicked()"), self.finir)
  29. self.ui.crp_ok.setShortcut("Enter")
  30. def afficher(self, plateau):
  31. """affiche la fenetre avec le plateau en parametre, ou un nouveau plateau sinon"""
  32. self.ui.crp_nom.majTexte(plateau.nom())
  33. self.ui.crp_chapitre.setValue(int(plateau.chapitre))
  34. self.ui.crp_presentation.majTexte(plateau.presentation)
  35. if plateau.zP != None:
  36. self.ui.crp_plafond.setChecked(True)
  37. self.ui.crp_zP.setValue(plateau.zP)
  38. nouveau = (plateau.nbCasesX == 0)
  39. self.ui.crp_formes.setEnabled(nouveau)
  40. self.ui.crp_hauteur.setEnabled(nouveau)
  41. self.ui.crp_largeur.setEnabled(nouveau)
  42. self.ui.crp_listeDimensions.setEnabled(nouveau)
  43. self.ui.crp_couleur.setEnabled(nouveau)
  44. self._retour = plateau
  45. self.majAffichage()
  46. self.show()
  47. def resultat(self):
  48. """renvoie le plateau ainsi parametre"""
  49. self._retour.majNom(self.ui.crp_nom.texte())
  50. self._retour.chapitre = str(self.ui.crp_chapitre.value())
  51. self._retour.presentation = self.ui.crp_presentation.texte()
  52. self._retour.couleurInit = self.couleur
  53. if self.ui.crp_formes.isEnabled():
  54. if self.ui.crp_formeHexa.isChecked():
  55. self._retour.formeCases = "H"
  56. else:
  57. self._retour.formeCases = "C"
  58. self._retour.nbCasesX = self.ui.crp_largeur.value()
  59. self._retour.nbCasesY = self.ui.crp_hauteur.value()
  60. if (self._retour.nbCasesX * self._retour.nbCasesY) > 10000:
  61. reponse = QMessageBox.question(self, 'Message',
  62. "Attention ! \nLe nombre élevé de cases peut entrainer des ralentissements " \
  63. "importants...\nVoulez vous continuer?", QMessageBox.Yes |
  64. QMessageBox.No, QMessageBox.No)
  65. if reponse == QMessageBox.No: return
  66. if self.ui.crp_plafond.isChecked():
  67. self._retour.zP = self.ui.crp_zP.value()
  68. return self._retour
  69. def majAffichage(self):
  70. self.ui.crp_zP.setEnabled(self.ui.crp_plafond.isChecked())
  71. self.ui.crp_ok.setEnabled(len(self.ui.crp_nom.texte()) > 0)
  72. self.ui.crp_ok.setDefault(len(self.ui.crp_nom.texte()) > 0)
  73. def selectionCouleur(self):
  74. """selectionne la couleur dans la boite de dialogue dediee"""
  75. couleur = QColorDialog(self).getColor(QColor("white"), self)
  76. if couleur.isValid():
  77. nomCouleur = couleur.name()
  78. self.ui.crp_couleur.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
  79. self.couleur = couleur
  80. def majDimensions(self, index):
  81. if not self._majEnCours:
  82. dimensionsRapides = [(30,20), (50,30), (100,70), \
  83. (20,30), (30,50), (70,100), \
  84. (25, 25), (40, 40), (80, 80), \
  85. (1,1) ]
  86. largeur, hauteur = dimensionsRapides[index]
  87. self._majEnCours = True
  88. self.ui.crp_largeur.setValue(largeur)
  89. self.ui.crp_hauteur.setValue(hauteur)
  90. self._majEnCours = False
  91. def majListeDimensions(self):
  92. """l'utilisateur a modifie une dimension,
  93. la liste affiche 'personnalise'"""
  94. if not self._majEnCours:
  95. self._majEnCours = True
  96. self.ui.crp_listeDimensions.setCurrentIndex(9)
  97. self._majEnCours = False
  98. def finir(self):
  99. self.done(1)