#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)