#from __future__ import unicode_literals # -*- coding: utf-8 -*- from __future__ import division from time import time, sleep, strftime, localtime from PyQt4.QtCore import * from PyQt4.QtGui import * from ui.ecran_creationPlateau import Ui_creationPlateau from outilsSvg import * class EcranCreationPlateau(QDialog): """interface de creation/chargement de plateau""" def __init__(self, fenetrePrincipale, terrain=None, parent=None): """initialisation de la fenetre""" super (EcranCreationPlateau, self).__init__() self.fenetre = fenetrePrincipale self.couleur = QColor(0, 255, 0, 80) self.idSvgPlusRecent = None #id de la sauvegarde du plateau le plus recent self.createWidgets() self.majAffichage() self.focusBoutonChargerEC() def createWidgets(self): """construction de l'interface""" #construction de l'interface self.ui = Ui_creationPlateau() self.ui.setupUi(self) self.ui.couleurCasesPlateau.setStyleSheet("QLabel {backGround:%s}" %(self.couleur)) self.majListeChargement() self.connect(self.ui.creerPlateau, SIGNAL("clicked()"), self.creerPlateau) self.connect(self.ui.nomPlateau, SIGNAL("textEdited(QString)"), self.focusBoutonCreer) self.connect(self.ui.nomPlateau, SIGNAL("textEdited(QString)"), self.majAffichage) self.connect(self.ui.listPlateau, SIGNAL("cellPressed(int, int)"), self.majAffichage) self.connect(self.ui.listPlateau, SIGNAL("cellPressed(int, int)"), self.focusBoutonCharger) self.connect(self.ui.selectionCouleur, SIGNAL("clicked()"), self.selectionCouleur) self.connect(self.ui.supprimerPlateau, SIGNAL("clicked()"), self.supprimerPlateau) self.connect(self.ui.chargerPlateau, SIGNAL("clicked()"), self.chargerPlateau) self.connect(self.ui.chargerPlateauEC, SIGNAL("clicked()"), self.chargerPlateauEC) self.connect(self.ui.chapitreChargementPlateau, SIGNAL("valueChanged(int)"), self.majListeChargement) self.connect(self.ui.toutAfficherPlateau, SIGNAL("stateChanged(int)"), self.majListeChargement) def creerPlateau(self): nom = self.ui.nomPlateau.text().toUtf8() largeur = self.ui.largeurPlateau.value() hauteur = self.ui.hauteurPlateau.value() chapitre = str(self.ui.chapitrePlateau.value()) if self.ui.formeCase_hexagone.isChecked(): formeCases = "H" else: formeCases = "C" ok = True if (largeur * hauteur) > 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: ok = False if ok == True: self.fenetre.creerPlateau(nom, chapitre, formeCases, largeur, hauteur, self.couleur) self.close() def chargerPlateau(self): """charge le plateau selectionne""" index = str(self.ui.listPlateau.item(self.ui.listPlateau.currentRow(), 0).text().toUtf8()) self.fenetre.chargerPlateau(index) self.close() def chargerPlateauEC(self): """charge le plateau le pus recent""" if self.idSvgPlusRecent != None: self.fenetre.chargerPlateau(self.idSvgPlusRecent) self.close() def supprimerPlateau(self): """supprime le plateau selectionne""" reponse = QMessageBox.question(self, 'Message', "Etes vous sûr de vouloir supprimer ce plateau?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reponse == QMessageBox.Yes: index = str(self.ui.listPlateau.item(self.ui.listPlateau.currentRow(), 0).text().toUtf8()) os.remove("parties\\{}\\svg\\{}.p".format(self.fenetre.partie, index)) supprSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie), index) self.majListeChargement() def majListeChargement(self): """remplit ou maj la liste des plateaux sauvegardes""" #on met a jour la largeur des colonnes self.ui.listPlateau.setColumnWidth(0, 0) #colonne de l'index (invisible) self.ui.listPlateau.setColumnWidth(1, 55) self.ui.listPlateau.setColumnWidth(2, 110) self.ui.listPlateau.setColumnWidth(3, 60) self.ui.listPlateau.setColumnWidth(4, 80) self.ui.listPlateau.setColumnWidth(5, 50) self.ui.listPlateau.setColumnWidth(6, 50) ## self.ui.listPlateau.setColumnHidden(6, True) #on vide la liste si necessaire while self.ui.listPlateau.rowCount() > 0: self.ui.listPlateau.removeRow(0) infosSvg = afficheSvg("parties\\{}\\svg\\infos_sauvegarde".format(self.fenetre.partie)) ligne = 0 for id_svg in infosSvg: if self.idSvgPlusRecent == None or infosSvg[id_svg]["dateSvg"] > infosSvg[self.idSvgPlusRecent]["dateSvg"]: self.idSvgPlusRecent = id_svg if infosSvg[id_svg]["chapitre"] == str(self.ui.chapitreChargementPlateau.value()) or bool(self.ui.toutAfficherPlateau.checkState()) == True: self.ui.listPlateau.insertRow(ligne) self.ui.listPlateau.setItem(ligne, 0, QTableWidgetItem(QString.fromUtf8(str(id_svg)))) self.ui.listPlateau.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(" "+infosSvg[id_svg]["chapitre"]))) self.ui.listPlateau.setItem(ligne, 2, QTableWidgetItem(QString.fromUtf8(infosSvg[id_svg]["nom"]))) self.ui.listPlateau.setItem(ligne, 3, QTableWidgetItem(QString.fromUtf8(strftime('%d/%m/%y %H:%M',localtime(infosSvg[id_svg]["dateCreation"]))))) self.ui.listPlateau.setItem(ligne, 4, QTableWidgetItem(QString.fromUtf8(strftime('%d/%m/%y %H:%M',localtime(infosSvg[id_svg]["dateSvg"]))))) if infosSvg[id_svg]["public"] == True: txt = "Oui" else: txt = "Non" self.ui.listPlateau.setItem(ligne, 5, QTableWidgetItem(QString.fromUtf8(txt))) self.ui.listPlateau.setItem(ligne, 6, QTableWidgetItem(QString.fromUtf8(str(infosSvg[id_svg]["dateSvg"])))) ligne += 1 for i in range(1,5): self.ui.listPlateau.sizeHintForColumn(i) #on trie par date ## trierTable(self.ui.listPlateau, 6, 1) def majAffichage(self): self.ui.creerPlateau.setEnabled(len(self.ui.nomPlateau.text().toUtf8()) > 0) self.ui.chargerPlateau.setEnabled(self.ui.listPlateau.currentRow()>=0) self.ui.supprimerPlateau.setEnabled(self.ui.listPlateau.currentRow()>=0) self.ui.chargerPlateauEC.setEnabled(self.ui.listPlateau.rowCount() > 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.couleurCasesPlateau.setStyleSheet("QLabel {backGround:%s}" %(nomCouleur)) self.couleur = couleur def focusBoutonChargerEC(self): self.ui.chargerPlateauEC.setFocus() def focusBoutonCharger(self): self.ui.chargerPlateau.setFocus() def focusBoutonCreer(self): self.ui.creerPlateau.setFocus()