#from __future__ import unicode_literals # -*- coding: utf-8 -*- from __future__ import division from PyQt4.QtCore import * from PyQt4.QtGui import * from ui.ecran_editionDecor import Ui_editionDecor class EcranEditionDecors(QDialog): """interface de creation/edition de decors""" def __init__(self, decor=None, formeCases = "H", parent=None): """initialisation de la fenetre""" super (EcranEditionDecors, self).__init__() self.decor = decor self.pixGraphique = None self.formeCases = formeCases self.createWidgets() if decor == None: self.accesCreation() else: self.accesEdition() self.majAffichage("") def createWidgets(self): """construction de l'interface""" #construction de l'interface self.ui = Ui_editionDecor() self.ui.setupUi(self) self.connect(self.ui.enregistrerDecor, SIGNAL("clicked()"), self.enregistrer) self.connect(self.ui.annulerDecor, SIGNAL("clicked()"), self.annuler) self.connect(self.ui.supprimerDecor, SIGNAL("clicked()"), self.supprimer) self.connect(self.ui.idDecor, SIGNAL("textEdited(QString)"), self.majAffichage) self.connect(self.ui.nomDecor, SIGNAL("textEdited(QString)"), self.majAffichage) self.connect(self.ui.couleurDecor, SIGNAL("clicked()"), self.selectionCouleur) self.connect(self.ui.imgDecor, SIGNAL("textEdited(QString)"), self.majApercuImage) self.connect(self.ui.imgLogoDecor, SIGNAL("textEdited(QString)"), self.majApercuImage) self.connect(self.ui.imgAfficherDecor, SIGNAL("stateChanged(int)"), self.majApercuImage) self.connect(self.ui.imgPivoteDecor, SIGNAL("stateChanged(int)"), self.majApercuImage) self.connect(self.ui.imgMasqueDecor, SIGNAL("stateChanged(int)"), self.majApercuImage) self.connect(self.ui.imgTailleXDecor, SIGNAL("valueChanged(int)"), self.majApercuImage) self.connect(self.ui.imgTailleYDecor, SIGNAL("valueChanged(int)"), self.majApercuImage) self.connect(self.ui.imgPosXDecor, SIGNAL("valueChanged(int)"), self.majApercuImage) self.connect(self.ui.imgPosYDecor, SIGNAL("valueChanged(int)"), self.majApercuImage) self.connect(self.ui.imgRotationDecor, SIGNAL("valueChanged(int)"), self.majApercuImage) self.connect(self.ui.imgReinitDecor, SIGNAL("clicked()"), self.reinitImage) self.vueForme = VueEditionForme(self, self.formeCases) self.vueForme.creer() def accesEdition(self): """ouverture en mode edition""" self.ui.idDecor.setEnabled(True) self.ui.idDecor.setText(QString.fromUtf8(str(self.decor.id))) self.ui.nomDecor.setText(QString.fromUtf8(str(self.decor.nom))) if self.decor.couleur.isValid(): self.ui.affichageCouleurDecor.setStyleSheet("QLabel {backGround:%s}" %(self.decor.couleur.name())) self.ui.imgLogoDecor.setText(QString.fromUtf8(str(self.decor.logo))) if self.decor.img["nom"] != self.decor.logo: self.ui.imgDecor.setText(QString.fromUtf8(str(self.decor.img["nom"]))) self.ui.imgTailleXDecor.setValue(self.decor.img["kx"]) self.ui.imgTailleYDecor.setValue(self.decor.img["ky"]) self.ui.imgPosXDecor.setValue(self.decor.img["dx"]) self.ui.imgPosYDecor.setValue(self.decor.img["dy"]) self.ui.imgRotationDecor.setValue(self.decor.img["rotation"]) self.ui.imgPivoteDecor.setChecked(self.decor.img["pivote"]) self.ui.imgMasqueDecor.setChecked(self.decor.img["masqueAuto"]) self.ui.hauteurDecor.setValue(self.decor.hauteur) self.ui.couvertDecor.setChecked(self.decor.couvert) self.ui.escaladeDecor.setChecked(self.decor.escalade) self.ui.franchissablePiedDecor.setChecked(self.decor.franchissablePied) self.ui.franchissableVolDecor.setChecked(self.decor.franchissableVol) self.ui.bruleDecor.setChecked(self.decor.brule) self.vueForme.majForme(self.decor.formeDef[self.formeCases]) self.ui.supprimerDecor.setEnabled(True) self.ui.idDecor.setEnabled(False) self.majApercuImage() def accesCreation(self): """ouverture en mode creation""" self.decor = Decor() self.ui.idDecor.setEnabled(True) self.ui.idDecor.setText(QString.fromUtf8(str(self.nouvelIdCreature()))) self.ui.idDecor.setEnabled(False) self.majApercuImage() def majAffichage(self, txt): """verifie la validite des saisies""" self.ui.enregistrerDecor.setEnabled(len(self.ui.idDecor.text().toUtf8()) > 0 and len(self.ui.nomDecor.text().toUtf8()) > 0) def nouvelIdCreature(self): """renvoie un identifiant pour un nouveau decor""" dicoSvg = afficheSvg("librairie\\decor") nouvelId = 1 while str(nouvelId) in dicoSvg.keys(): nouvelId += 1 return str(nouvelId) 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.affichageCouleurDecor.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur)) self.decor.couleur = couleur def majApercuImage(self): """met a jour l'image sur l'apercu du pion""" if self.ui.imgAfficherDecor.isChecked(): if len(str(self.ui.imgDecor.text().toUtf8())) > 0: img = str(self.ui.imgDecor.text().toUtf8()) self.vueForme.majImage(img, self.ui.imgTailleXDecor.value() \ , self.ui.imgTailleYDecor.value() \ , self.ui.imgPosXDecor.value() \ , self.ui.imgPosYDecor.value() \ , self.ui.imgRotationDecor.value() \ , self.ui.imgPivoteDecor.isChecked() \ , self.ui.imgMasqueDecor.isChecked()) else: img = str(self.ui.imgLogoDecor.text().toUtf8()) self.vueForme.majImage(img) else: img = "" self.vueForme.majImage(img) def reinitImage(self): self.ui.imgTailleXDecor.setValue(10) self.ui.imgTailleYDecor.setValue(10) self.ui.imgPosXDecor.setValue(0) self.ui.imgPosYDecor.setValue(0) self.ui.imgRotationDecor.setValue(0) self.ui.imgPivoteDecor.setChecked(False) self.ui.imgMasqueDecor.setChecked(False) self.majApercuImage() def enregistrer(self): """enregistre le terrain cree/edite""" self.decor.id = str(self.ui.idDecor.text().toUtf8()) self.decor.nom = str(self.ui.nomDecor.text().toUtf8()) self.decor.logo = str(self.ui.imgLogoDecor.text().toUtf8()) if len(str(self.ui.imgDecor.text().toUtf8())) > 0: self.decor.img["nom"] = str(self.ui.imgDecor.text().toUtf8()) self.decor.img["kx"] = self.ui.imgTailleXDecor.value() self.decor.img["ky"] = self.ui.imgTailleYDecor.value() self.decor.img["dx"] = self.ui.imgPosXDecor.value() self.decor.img["dy"] = self.ui.imgPosYDecor.value() self.decor.img["rotation"] = self.ui.imgRotationDecor.value() self.decor.img["pivote"] = self.ui.imgPivoteDecor.isChecked() self.decor.img["masqueAuto"] = self.ui.imgMasqueDecor.isChecked() else: self.decor.img["nom"] = str(self.ui.imgLogoDecor.text().toUtf8()) self.decor.img["kx"] = 10 self.decor.img["ky"] = 10 self.decor.img["dx"] = 0 self.decor.img["dy"] = 0 self.decor.img["rotation"] = 0 self.decor.img["pivote"] = False self.decor.img["masqueAuto"] = self.ui.imgMasqueDecor.isChecked() self.decor.hauteur = int(self.ui.hauteurDecor.value()) self.decor.couvert = self.ui.couvertDecor.isChecked() self.decor.brule = self.ui.bruleDecor.isChecked() self.decor.franchissablePied = self.ui.franchissablePiedDecor.isChecked() self.decor.franchissableVol = self.ui.franchissableVolDecor.isChecked() self.decor.escalade = self.ui.escaladeDecor.isChecked() self.decor.formeDef[self.formeCases] = self.vueForme.formeDef() enregistrer(self.decor.id, self.decor, "librairie\\decor") self.decor = None self.emit(SIGNAL("majListDecors()")) self.close() def supprimer(self): """supprimer l'enregistrement de ce terrain""" supprSvg("librairie\\decor", self.decor.id) self.emit(SIGNAL("majListDecors()")) self.close() def annuler(self): """annule la creation/edition""" self.decor = None self.close()