Procházet zdrojové kódy

Surcharge des QTableWidget utilisées pour
les listes de terrains, décors et créatures

unknown před 10 roky
rodič
revize
1383870617
7 změnil soubory, kde provedl 71 přidání a 81 odebrání
  1. 1 1
      lib/Pion.py
  2. 21 63
      lib/Plateau.py
  3. 1 1
      lib/Terrain.py
  4. binární
      lib/biblio/terrain
  5. 16 6
      lib/ui/dm.py
  6. 15 7
      lib/ui/ecran_principal.py
  7. 17 3
      lib/ui/mainwindow.ui

+ 1 - 1
lib/Pion.py

@@ -57,7 +57,7 @@ class Pion(QGraphicsItem):
         """renvoie le nom et le numero complementaire du pion"""
         return "{} {}".format(self.nom, self.numComplementaire)
 
-    def logo(self):
+    def icone(self):
         """renvoie l'image a afficher dans les listes"""
         return self.logo
 

+ 21 - 63
lib/Plateau.py

@@ -207,8 +207,8 @@ class Plateau(QGraphicsScene):
         self.fenetre.connect(self.fenetre.ui.cp_listeCreatures, SIGNAL("cellClicked(int,int)"), self.modeCreationCombattant, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_listeDecors, SIGNAL("cellClicked(int,int)"), self.modeCreationDecor, Qt.UniqueConnection)
         
-##        self.fenetre.connect(self.fenetre.ui.terrainEdit, SIGNAL("clicked()"), self.terrainEdit, Qt.UniqueConnection)
-##        self.fenetre.connect(self.fenetre.ui.terrainNouveau, SIGNAL("clicked()"), self.terrainNouveau, Qt.UniqueConnection)
+        self.fenetre.connect(self.fenetre.ui.cp_editerTerrain, SIGNAL("clicked()"), self.terrainEdit, Qt.UniqueConnection)
+        self.fenetre.connect(self.fenetre.ui.cp_nouveauTerrain, SIGNAL("clicked()"), self.terrainNouveau, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_editerCombattant, SIGNAL("clicked()"), self.creatureEdit, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_nouveauCombattant, SIGNAL("clicked()"), self.creatureNouveau, Qt.UniqueConnection)
 ##        self.fenetre.connect(self.fenetre.ui.decorEdit, SIGNAL("clicked()"), self.decorEdit, Qt.UniqueConnection)
@@ -305,9 +305,16 @@ class Plateau(QGraphicsScene):
 ##        self.fenetre.ui.cbt_nomPlateau.setText(QString.fromUtf8(self.nom))
         self.majBoutonsCouleursPerso()
 ##        self.majBoutonsCaches()
-        self.majListTerrains()
-        self.majListCreatures()
-        self.majListDecors()
+        self.fenetre.ui.cp_listeTerrains.defFichier("lib\\biblio\\terrain")
+        self.fenetre.ui.cp_listeTerrains.initAffichage()
+        self.fenetre.ui.cp_listeCreatures.defFichier("lib\\biblio\\combattant")
+        self.fenetre.ui.cp_listeCreatures.initAffichage()
+        self.fenetre.ui.cp_listeDecors.defFichier("lib\\biblio\\decor")
+        self.fenetre.ui.cp_listeDecors.initAffichage()
+        self.majListeTerrains()
+        self.majListeCreatures()
+        self.majListeDecors()
+        
         self.initListeOrdreJeu()
         self.initListeAttaques()
 ##        self.fenetre.ui.notesMjPlateau.setText(QString.fromUtf8(self.notes))
@@ -378,25 +385,9 @@ class Plateau(QGraphicsScene):
         if r == 1:
             self.majListeTerrains()
  
-    def majListTerrains(self):
+    def majListeTerrains(self):
         """mise a jour de la liste des terrains depuis la sauvegarde"""
-        dico = afficheSvg("lib\\biblio\\terrain")
-        while self.fenetre.ui.cp_listeTerrains.rowCount() > 0:
-            self.fenetre.ui.cp_listeTerrains.removeRow(0)
-        index = 0    
-        self.fenetre.ui.cp_listeTerrains.hideColumn(0)
-        self.fenetre.ui.cp_listeTerrains.sizeHintForColumn(1)
-        for elt in dico:
-            terrain = dico[elt]
-            self.fenetre.ui.cp_listeTerrains.insertRow(int(index))
-            self.fenetre.ui.cp_listeTerrains.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
-            icon = QIcon("img\\"+terrain.imgTexture)
-            item = QTableWidgetItem(icon,QString.fromUtf8(terrain.nom))
-            self.fenetre.ui.cp_listeTerrains.setItem(int(index),1,item)
-            index += 1
-        self.fenetre.ui.cp_listeTerrains.setIconSize(QSize(30,20))   
-        self.fenetre.ui.cp_listeTerrains.sizeHintForColumn(1)
-        self.fenetre.ui.cp_listeTerrains.sortItems(0)
+        self.fenetre.ui.cp_listeTerrains.maj()
         self.majMode("standard")
 
     def terrainEdit(self):
@@ -418,26 +409,11 @@ class Plateau(QGraphicsScene):
         self.editionCreature.setAttribute(Qt.WA_DeleteOnClose)
         r = self.editionCreature.exec_()
         if r == 1:
-            self.majListCreatures()
+            self.majListeCreatures()
         
-    def majListCreatures(self):
+    def majListeCreatures(self):
         """mise a jour de la liste des creatures depuis la sauvegarde"""
-        dico = afficheSvg("lib\\biblio\\combattant")
-        while self.fenetre.ui.cp_listeCreatures.rowCount() > 0:
-            self.fenetre.ui.cp_listeCreatures.removeRow(0)
-        index = 0    
-        self.fenetre.ui.cp_listeCreatures.hideColumn(0)
-        self.fenetre.ui.cp_listeCreatures.sizeHintForColumn(1)
-        for elt in dico:
-            creature = dico[elt]
-            self.fenetre.ui.cp_listeCreatures.insertRow(int(index))
-            self.fenetre.ui.cp_listeCreatures.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
-            icon = QIcon("img\\"+creature.logo)
-            item = QTableWidgetItem(icon,QString.fromUtf8(creature.nom))
-            self.fenetre.ui.cp_listeCreatures.setItem(int(index),1,item)
-            index += 1
-        self.fenetre.ui.cp_listeCreatures.setIconSize(QSize(30,20))   
-        self.fenetre.ui.cp_listeCreatures.sizeHintForColumn(1)
+        self.fenetre.ui.cp_listeCreatures.maj()
         self.majMode("standard")
 
     def creatureEdit(self):
@@ -460,34 +436,16 @@ class Plateau(QGraphicsScene):
         self.editionDecor.setAttribute(Qt.WA_DeleteOnClose)
         r = self.editionDecor.exec_()
         if r == 1:
-            self.majListDecors()
+            self.majListeDecors()
             
-    def majListDecors(self):
+    def majListeDecors(self):
         """mise a jour de la liste des decors depuis la sauvegarde"""
-        dico = afficheSvg("lib\\biblio\\decor")
-        while self.fenetre.ui.cp_listeDecors.rowCount() > 0:
-            self.fenetre.ui.cp_listeDecors.removeRow(0)
-        index = 0    
-        self.fenetre.ui.cp_listeDecors.hideColumn(0)
-        self.fenetre.ui.cp_listeDecors.sizeHintForColumn(1)
-        for elt in dico:
-            decor = dico[elt]
-            self.fenetre.ui.cp_listeDecors.insertRow(int(index))
-            self.fenetre.ui.cp_listeDecors.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
-            icon = QIcon("img\\"+decor.logo)
-            item = QTableWidgetItem(icon,QString.fromUtf8(decor.nom))
-            self.fenetre.ui.cp_listeDecors.setItem(int(index),1,item)
-            index += 1
-        self.fenetre.ui.cp_listeDecors.setIconSize(QSize(30,20))   
-        self.fenetre.ui.cp_listeDecors.sizeHintForColumn(1)
+        self.fenetre.ui.cp_listeDecors.maj()
         self.majMode("standard")
 
     def decorEdit(self):
         """ouvre la fenetre 'decors' en mode edition"""
-        index = self.fenetre.ui.cp_listeDecors.item(self.fenetre.ui.cp_listeDecors.currentRow(), 0)
-        if index > 0:
-            decor = charger("lib\\biblio\\decor", str(index.text().toUtf8()))
-            self.afficheEcranEditionDecors(decor)
+        self.afficheEcranEditionDecors(self.fenetre.ui.cp_listeDecors.actuel())
         
     def decorNouveau(self):
         """ouvre la fenetre 'decors' en mode edition"""

+ 1 - 1
lib/Terrain.py

@@ -15,6 +15,6 @@ class Terrain():
         self.visibilite = True       #peut on voir au travers 
         self.modDeplacement = 1.00   #modificateur a appliquer au deplacement
 
-    def logo(self):
+    def icone(self):
         """renvoie l'image a afficher dans les listes"""
         return self.imgTexture

binární
lib/biblio/terrain


+ 16 - 6
lib/ui/dm.py

@@ -2,6 +2,7 @@
 """ensemble des widgets surchargés"""
 from PyQt4.QtCore import *
 from PyQt4.QtGui import *
+from lib.outilsSvg import *
 
 class DmGraphicsView(QGraphicsView):
     """surcharge de QGraphicsView"""
@@ -27,23 +28,33 @@ class DmTableWidget(QTableWidget):
 
     def masquerColonneId(self):
         """masque la colonne en position 0 qui contient les identifiants"""
-        self.fenetre.ui.cp_listeTerrains.hideColumn(0)
+        self.setColumnWidth(0, 0)
         
 
 class DmTableBiblio(DmTableWidget):
     """table utilisee pour afficher les bibliotheques d'objets:
         terrains, decors, creatures"""
-    def __init__(self, fichier, parent = None):
-        """prend en parametre le fichier de sauvegarde contenant les objets"""
+    def __init__(self, parent = None):
         super(DmTableBiblio, self).__init__(parent)
-        self.fichier = fichier
+        self.fichier = ""
         self.masquerColonneId()
 
+    def defFichier(self, fichier):
+        """definit le fichier de sauvegarde qui la source des donnees de la table"""
+        self.fichier = fichier
+
+    def initAffichage(self):
+        """fait les differents reglages relatifs a l'apparence"""
+        self.setColumnWidth(0, 0)
+        self.setIconSize(QSize(30,20))   
+        self.horizontalHeader().setStretchLastSection(True)
+        
     def remplir(self):
         """remplit la table avec les donnees contenues dans le dictionnaire de la savuvegarde"""
         dico = afficheSvg(self.fichier)
         self.majEnCours = True
         self.setSortingEnabled(False)
+        index = 0
         for elt in dico:
             objet = dico[elt]
             self.insertRow(int(index))
@@ -51,12 +62,11 @@ class DmTableBiblio(DmTableWidget):
             #code de l'objet
             self.setItem(int(index),0,QTableWidgetItem(QString.fromUtf8(elt)))
             #icone et nom
-            icon = QIcon("img\\"+objet.logo())
+            icon = QIcon("img\\"+objet.icone())
             item = QTableWidgetItem(icon,QString.fromUtf8(objet.nom))
             self.setItem(int(index),1,item)
             
             index += 1        
-        self.setIconSize(QSize(30,20))   
         self.sizeHintForColumn(1)
         self.setSortingEnabled(True)
         self.sortItems(1)

+ 15 - 7
lib/ui/ecran_principal.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'mainwindow.ui'
 #
-# Created: Tue May 19 11:36:05 2015
+# Created: Wed May 20 11:09:16 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # WARNING! All changes made in this file will be lost!
@@ -583,7 +583,7 @@ class Ui_principal(object):
         self.cp_afficherTerrains.setObjectName(_fromUtf8("cp_afficherTerrains"))
         self.verticalLayout_4 = QtGui.QVBoxLayout(self.cp_afficherTerrains)
         self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
-        self.cp_listeTerrains = QtGui.QTableWidget(self.cp_afficherTerrains)
+        self.cp_listeTerrains = DmTableBiblio(self.cp_afficherTerrains)
         self.cp_listeTerrains.setMinimumSize(QtCore.QSize(81, 0))
         self.cp_listeTerrains.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
         self.cp_listeTerrains.setEditTriggers(QtGui.QAbstractItemView.AnyKeyPressed|QtGui.QAbstractItemView.DoubleClicked)
@@ -602,6 +602,12 @@ class Ui_principal(object):
         self.cp_listeTerrains.horizontalHeader().setVisible(False)
         self.cp_listeTerrains.verticalHeader().setVisible(False)
         self.verticalLayout_4.addWidget(self.cp_listeTerrains)
+        self.cp_nouveauTerrain = QtGui.QPushButton(self.cp_afficherTerrains)
+        self.cp_nouveauTerrain.setObjectName(_fromUtf8("cp_nouveauTerrain"))
+        self.verticalLayout_4.addWidget(self.cp_nouveauTerrain)
+        self.cp_editerTerrain = QtGui.QPushButton(self.cp_afficherTerrains)
+        self.cp_editerTerrain.setObjectName(_fromUtf8("cp_editerTerrain"))
+        self.verticalLayout_4.addWidget(self.cp_editerTerrain)
         icon19 = QtGui.QIcon()
         icon19.addPixmap(QtGui.QPixmap(_fromUtf8("img/paysage.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
         self.cp_ongletsListes.addTab(self.cp_afficherTerrains, icon19, _fromUtf8(""))
@@ -609,7 +615,7 @@ class Ui_principal(object):
         self.cp_afficherDecors.setObjectName(_fromUtf8("cp_afficherDecors"))
         self.verticalLayout_7 = QtGui.QVBoxLayout(self.cp_afficherDecors)
         self.verticalLayout_7.setObjectName(_fromUtf8("verticalLayout_7"))
-        self.cp_listeDecors = QtGui.QTableWidget(self.cp_afficherDecors)
+        self.cp_listeDecors = DmTableBiblio(self.cp_afficherDecors)
         self.cp_listeDecors.setMinimumSize(QtCore.QSize(81, 0))
         self.cp_listeDecors.setEditTriggers(QtGui.QAbstractItemView.AnyKeyPressed|QtGui.QAbstractItemView.DoubleClicked)
         self.cp_listeDecors.setIconSize(QtCore.QSize(2, 2))
@@ -633,7 +639,7 @@ class Ui_principal(object):
         self.cp_afficherCreatures.setObjectName(_fromUtf8("cp_afficherCreatures"))
         self.verticalLayout_6 = QtGui.QVBoxLayout(self.cp_afficherCreatures)
         self.verticalLayout_6.setObjectName(_fromUtf8("verticalLayout_6"))
-        self.cp_listeCreatures = QtGui.QTableWidget(self.cp_afficherCreatures)
+        self.cp_listeCreatures = DmTableBiblio(self.cp_afficherCreatures)
         self.cp_listeCreatures.setMinimumSize(QtCore.QSize(81, 0))
         self.cp_listeCreatures.setEditTriggers(QtGui.QAbstractItemView.AnyKeyPressed|QtGui.QAbstractItemView.DoubleClicked)
         self.cp_listeCreatures.setIconSize(QtCore.QSize(2, 2))
@@ -1334,7 +1340,7 @@ class Ui_principal(object):
         self.retranslateUi(principal)
         self.dm_panneauCentre.setCurrentIndex(0)
         self.cp_ongletsListes.setCurrentIndex(2)
-        self.pi_ongletsListes.setCurrentIndex(3)
+        self.pi_ongletsListes.setCurrentIndex(0)
         self.tabStatutAppli.setCurrentIndex(2)
         QtCore.QMetaObject.connectSlotsByName(principal)
 
@@ -1424,6 +1430,8 @@ class Ui_principal(object):
         item.setText(_translate("principal", "code", None))
         item = self.cp_listeTerrains.horizontalHeaderItem(1)
         item.setText(_translate("principal", "Terrain", None))
+        self.cp_nouveauTerrain.setText(_translate("principal", "Nouveau", None))
+        self.cp_editerTerrain.setText(_translate("principal", "Editer", None))
         self.cp_ongletsListes.setTabToolTip(self.cp_ongletsListes.indexOf(self.cp_afficherTerrains), _translate("principal", "Afficher la liste des terrains", None))
         item = self.cp_listeDecors.horizontalHeaderItem(0)
         item.setText(_translate("principal", "code", None))
@@ -1470,7 +1478,7 @@ class Ui_principal(object):
         self.pi_attaqueDist.setToolTip(_translate("principal", "Effectuer une attaque à distance", None))
         self.pi_attaqueDist.setText(_translate("principal", "...", None))
         item = self.pi_listeAttributs.horizontalHeaderItem(0)
-        item.setText(_translate("principal", "Nouvelle colonne", None))
+        item.setText(_translate("principal", "Id", None))
         item = self.pi_listeAttributs.horizontalHeaderItem(1)
         item.setText(_translate("principal", "Valeur", None))
         item = self.pi_listeAttributsAttaqueEC.horizontalHeaderItem(0)
@@ -1531,7 +1539,7 @@ class Ui_principal(object):
         self.actionParam_tres.setText(_translate("principal", "Paramètres", None))
         self.actionLexique.setText(_translate("principal", "Lexique", None))
 
-from dm import DmGraphicsView
+from dm import DmGraphicsView, DmTableBiblio
 
 if __name__ == "__main__":
     import sys

+ 17 - 3
lib/ui/mainwindow.ui

@@ -1852,7 +1852,7 @@
                   </size>
                  </property>
                  <property name="currentIndex">
-                  <number>0</number>
+                  <number>2</number>
                  </property>
                  <widget class="QWidget" name="cp_afficherTerrains">
                   <attribute name="icon">
@@ -1915,6 +1915,20 @@
                      </column>
                     </widget>
                    </item>
+                   <item>
+                    <widget class="QPushButton" name="cp_nouveauTerrain">
+                     <property name="text">
+                      <string>Nouveau</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QPushButton" name="cp_editerTerrain">
+                     <property name="text">
+                      <string>Editer</string>
+                     </property>
+                    </widget>
+                   </item>
                   </layout>
                  </widget>
                  <widget class="QWidget" name="cp_afficherDecors">
@@ -1930,7 +1944,7 @@
                   </attribute>
                   <layout class="QVBoxLayout" name="verticalLayout_7">
                    <item>
-                    <widget class="QTableWidget" name="cp_listeDecors">
+                    <widget class="DmTableBiblio" name="cp_listeDecors">
                      <property name="minimumSize">
                       <size>
                        <width>81</width>
@@ -1987,7 +2001,7 @@
                   </attribute>
                   <layout class="QVBoxLayout" name="verticalLayout_6">
                    <item>
-                    <widget class="QTableWidget" name="cp_listeCreatures">
+                    <widget class="DmTableBiblio" name="cp_listeCreatures">
                      <property name="minimumSize">
                       <size>
                        <width>81</width>