| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #from __future__ import unicode_literals
- # -*- coding: utf-8 -*-
- from PyQt4.QtCore import Qt, SIGNAL
- from PyQt4.QtGui import QDialog, QColor, QMessageBox, QColorDialog
- from ui.ecran_creerPlateau import Ui_crp_fenetre
- class EcranCreerPlateau(QDialog):
- """interface de creation/chargement de plateau"""
- def __init__(self, parent=None):
- """initialisation de la fenetre"""
- super (EcranCreerPlateau, self).__init__()
- self.couleur = QColor(0, 255, 0, 80)
- self._majEnCours = False
- self._resultat = None
- self.createWidgets()
-
- def createWidgets(self):
- """construction de l'interface"""
- #construction de l'interface
- self.ui = Ui_crp_fenetre()
- self.ui.setupUi(self)
- self.setWindowModality(Qt.ApplicationModal)
- self.ui.crp_couleur.setStyleSheet("QLabel {backGround:%s}" %(self.couleur))
- self.connect(self.ui.crp_couleur, SIGNAL("clicked()"), self.selectionCouleur)
- self.connect(self.ui.crp_listeDimensions, SIGNAL("activated(int)"), self.majDimensions)
- self.connect(self.ui.crp_largeur, SIGNAL("valueChanged(int)"), self.majListeDimensions)
- self.connect(self.ui.crp_hauteur, SIGNAL("valueChanged(int)"), self.majListeDimensions)
-
- self.connect(self.ui.crp_plafond, SIGNAL("toggled(bool)"), self.majAffichage)
- self.connect(self.ui.crp_nom, SIGNAL("textEdited(QString)"), self.majAffichage)
-
- self.connect(self.ui.crp_ok, SIGNAL("clicked()"), self.finir)
- self.ui.crp_ok.setShortcut("Enter")
- def afficher(self, plateau):
- """affiche la fenetre avec le plateau en parametre, ou un nouveau plateau sinon"""
- self.ui.crp_nom.majTexte(plateau.nom())
- self.ui.crp_chapitre.setValue(int(plateau.chapitre))
- self.ui.crp_presentation.majTexte(plateau.presentation)
- if plateau.zP != None:
- self.ui.crp_plafond.setChecked(True)
- self.ui.crp_zP.setValue(plateau.zP)
-
- nouveau = (plateau.nbCasesX == 0)
- self.ui.crp_formes.setEnabled(nouveau)
- self.ui.crp_hauteur.setEnabled(nouveau)
- self.ui.crp_largeur.setEnabled(nouveau)
- self.ui.crp_listeDimensions.setEnabled(nouveau)
- self.ui.crp_couleur.setEnabled(nouveau)
-
- self._retour = plateau
- self.majAffichage()
-
- self.show()
- def resultat(self):
- """renvoie le plateau ainsi parametre"""
- self._retour.majNom(self.ui.crp_nom.texte())
- self._retour.chapitre = str(self.ui.crp_chapitre.value())
- self._retour.presentation = self.ui.crp_presentation.texte()
- self._retour.couleurInit = self.couleur
-
- if self.ui.crp_formes.isEnabled():
- if self.ui.crp_formeHexa.isChecked():
- self._retour.formeCases = "H"
- else:
- self._retour.formeCases = "C"
-
- self._retour.nbCasesX = self.ui.crp_largeur.value()
- self._retour.nbCasesY = self.ui.crp_hauteur.value()
- if (self._retour.nbCasesX * self._retour.nbCasesY) > 10000:
- reponse = QMessageBox.question(self, 'Message',
- "Attention ! \nLe nombre élevé de cases peut entrainer des ralentissements " \
- "importants...\nVoulez vous continuer?", QMessageBox.Yes |
- QMessageBox.No, QMessageBox.No)
- if reponse == QMessageBox.No: return
- if self.ui.crp_plafond.isChecked():
- self._retour.zP = self.ui.crp_zP.value()
- return self._retour
-
- def majAffichage(self):
- self.ui.crp_zP.setEnabled(self.ui.crp_plafond.isChecked())
- self.ui.crp_ok.setEnabled(len(self.ui.crp_nom.texte()) > 0)
- self.ui.crp_ok.setDefault(len(self.ui.crp_nom.texte()) > 0)
-
- def selectionCouleur(self):
- """selectionne la couleur dans la boite de dialogue dediee"""
- couleur = QColorDialog(self).getColor(QColor("white"), self)
- if couleur.isValid():
- nomCouleur = couleur.name()
- self.ui.crp_couleur.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur))
- self.couleur = couleur
- def majDimensions(self, index):
- if not self._majEnCours:
- dimensionsRapides = [(30,20), (50,30), (100,70), \
- (20,30), (30,50), (70,100), \
- (25, 25), (40, 40), (80, 80), \
- (1,1) ]
- largeur, hauteur = dimensionsRapides[index]
- self._majEnCours = True
- self.ui.crp_largeur.setValue(largeur)
- self.ui.crp_hauteur.setValue(hauteur)
- self._majEnCours = False
- def majListeDimensions(self):
- """l'utilisateur a modifie une dimension,
- la liste affiche 'personnalise'"""
- if not self._majEnCours:
- self._majEnCours = True
- self.ui.crp_listeDimensions.setCurrentIndex(9)
- self._majEnCours = False
- def finir(self):
- self.done(1)
-
-
-
|