#from __future__ import unicode_literals # -*- coding: utf-8 -*- from __future__ import division import os from PyQt4.QtCore import * from PyQt4.QtGui import * from Terrain import Terrain from ui.ecran_editionTerrain import Ui_et_fenetre from outilsSvg import * class EcranEditionTerrain(QDialog): """interface de creation/edition de terrains""" def __init__(self, terrain=None, parent=None): """initialisation de la fenetre""" super (EcranEditionTerrain, self).__init__() self.nomImg = "" self.createWidgets() self.terrain = terrain if terrain == None: self.terrain = Terrain() else: self.accesEdition() self.majAffichage("") def createWidgets(self): """construction de l'interface""" #construction de l'interface self.ui = Ui_et_fenetre() self.ui.setupUi(self) self.connect(self.ui.et_enregistrer, SIGNAL("clicked()"), self.enregistrer) self.connect(self.ui.et_annuler, SIGNAL("clicked()"), self.annuler) self.connect(self.ui.et_supprimer, SIGNAL("clicked()"), self.supprimer) self.connect(self.ui.et_nom, SIGNAL("textEdited(QString)"), self.majAffichage) self.connect(self.ui.et_selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur) self.connect(self.ui.et_selectionFichier, SIGNAL("clicked()"), self.selectionFichier) def accesEdition(self): """ouverture en mode edition""" self.ui.et_nom.setText(QString.fromUtf8(str(self.terrain.nom))) if os.path.exists(self.terrain.imgTexture): pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture))) if not pix.isNull(): self.ui.et_apercu.setText(QString("")) pix = QPixmap(QString.fromUtf8(str(self.terrain.imgTexture))) self.ui.et_apercu.setPixmap(pix) else: if self.terrain.couleur.isValid(): self.ui.et_apercu.setText(QString("")) self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(self.terrain.couleur.name())) ## if self.terrain.visibilite: ## self.ui.visibiliteTerrain.setCheckState(2) ## else: ## self.ui.visibiliteTerrain.setCheckState(0) self.ui.et_depAucun.setChecked(self.terrain.franchissable) ## if self.terrain.franchissable: ## self.ui.et_depAucun.setCheckState(2) ## else: ## self.ui.et_depAucun.setCheckState(0) self.ui.et_supprimer.setEnabled(True) def majAffichage(self, txt): """verifie la validite des saisies""" self.ui.et_enregistrer.setEnabled(len(self.ui.et_nom.text().toUtf8()) > 0) def nouvelIdTerrain(self): """renvoie un identifiant pour un nouveau terrain""" dicoSvg = afficheSvg("lib\\biblio\\terrain") 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.et_apercu.setText(QString("")) self.ui.et_apercu.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur)) self.terrain.couleur = couleur def selectionFichier(self): """selectionne le fichier de texture dans la boite de dialogue dediee""" fichier = QFileDialog.getOpenFileName(self, "Selectionnez une image", "\\img", "Images (*.png *.jpg)") pix = QPixmap(fichier) if not pix.isNull(): self.nomImg = fichier self.ui.et_apercu.setText(QString("")) self.ui.et_apercu.setPixmap(pix) else: dial = QMessageBox(self) dial.setText("Format non reconnu") dial.setWindowTitle("Erreur") dial.setStandardButtons(QMessageBox.Ok) dial.exec_() def enregistrer(self): """enregistre le terrain cree/edite""" if not self.terrain.id: self.terrain.id = self.nouvelIdTerrain() self.terrain.nom = str(self.ui.et_nom.text().toUtf8()) self.terrain.imgTexture = self.nomImg self.terrain.franchissable = (not self.ui.et_depAucun.isChecked()) enregistrer(self.terrain.id, self.terrain, "lib\\biblio\\terrain") self.terrain = None self.done(1) def supprimer(self): """supprimer l'enregistrement de ce terrain""" supprSvg("terrain", self.terrain.id) self.done(1) def annuler(self): """annule la creation/edition""" self.terrain = None self.done(0)