Prechádzať zdrojové kódy

Fenetre selection de pj operationnelle

olinox 10 rokov pred
rodič
commit
36d042699e
3 zmenil súbory, kde vykonal 80 pridanie a 97 odobranie
  1. 18 30
      lib/EcranSelectionPj.py
  2. 23 19
      lib/ui/ecran_selectionPj.py
  3. 39 48
      lib/ui/selectionPj.ui

+ 18 - 30
EcranSelectionPj.py → lib/EcranSelectionPj.py

@@ -5,17 +5,17 @@ from time import time, sleep, strftime, localtime
 from sys import argv
 from PyQt4.QtCore import *
 from PyQt4.QtGui import *
-from lib.Combattant import Combattant
-from lib.ui.ecran_selectionPj import Ui_spj_fenetre
+from Combattant import Combattant
+from ui.ecran_selectionPj import Ui_spj_fenetre
 
-from lib.outilsSvg import *
+from outilsSvg import *
 
 class EcranSelectionPj(QDialog):
     """interface de creation/chargement de plateau"""
     def __init__(self, terrain=None, parent=None):
         """initialisation de la fenetre"""
         super (EcranSelectionPj, self).__init__(parent)
-        self._pjs = []
+        self._pj = None
         self._nbLignes = 0
         self.createWidgets()
 
@@ -24,43 +24,31 @@ class EcranSelectionPj(QDialog):
         #construction de l'interface
         self.ui = Ui_spj_fenetre()
         self.ui.setupUi(self)
-        self.connect(self.ui.spj_ok, SIGNAL("clicked()"), self.ok)
-        self.connect(self.ui.spj_annuler, SIGNAL("clicked()"), self.annuler)
+        self.connect(self.ui.spj_liste, SIGNAL("cellClicked(int, int)"), self.pjSelectionne)
+        self.ui.spj_liste.setColumnWidth(0,0)
+        self.ui.spj_liste.setColumnWidth(1,40)
 
     def charger(self, listePj):
         idPj = 0
         for pj in listePj:
-            item = QListWidgetItem()
-            item.setData(0, idPj)
-            item.setIcon(QIcon("img\\{}".format(pj.logo)))
+            self.ui.spj_liste.nouvelleLigneFin()
+            self.ui.spj_liste.majTexte(idPj, 0, idPj)
+            
+            item = QTableWidgetItem(QIcon("img\\{}".format(pj.logo)), QString(""))
+            self.ui.spj_liste.setItem(idPj, 1, item)
+
+            item = QTableWidgetItem()
             item.setText(QString().fromUtf8(pj.nom))
             police = QFont(QString("Verdana"))
             police.setBold(True)
             item.setFont(police)
-            self.ui.spj_liste.insertItem(idPj, item)
+            self.ui.spj_liste.setItem(idPj, 2, item)
             idPj += 1
         self._nbLignes = idPj
             
     def selection(self):
-        return self._pjs
+        return self._pj
 
-    def ok(self):
-        for ligne in range(0, self._nbLignes):
-            item = self.ui.spj_liste.item(ligne)
-            if self.ui.spj_liste.isItemSelected(item):
-                self._pjs.append(str(item.data(ligne).toString().toUtf8()))
+    def pjSelectionne(self, ligne, colonne):
+        self._pj = self.ui.spj_liste.texte(ligne, 0)
         self.done(1)
-
-    def annuler(self):
-        self.done(0)
-    
-        
-if __name__ == "__main__":
-   app = QApplication(argv)
-   lst = chargerUnique("F:\\DMonde\\parties\\Partie1\\groupe")
-   dm = EcranSelectionPj()
-   dm.charger(lst)
-   dm.show()
-   r = app.exec_()
-   print dm.selection()
-   exit(r)      

+ 23 - 19
lib/ui/ecran_selectionPj.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'selectionPj.ui'
 #
-# Created: Fri Jun 26 17:51:01 2015
+# Created: Fri Jun 26 19:32:11 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # WARNING! All changes made in this file will be lost!
@@ -35,7 +35,7 @@ class Ui_spj_fenetre(object):
         spj_fenetre.setFont(font)
         self.verticalLayout = QtGui.QVBoxLayout(spj_fenetre)
         self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
-        self.spj_liste = QtGui.QListWidget(spj_fenetre)
+        self.spj_liste = DmTableWidget(spj_fenetre)
         palette = QtGui.QPalette()
         brush = QtGui.QBrush(QtGui.QColor(248, 248, 248))
         brush.setStyle(QtCore.Qt.SolidPattern)
@@ -48,35 +48,39 @@ class Ui_spj_fenetre(object):
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
         self.spj_liste.setPalette(palette)
         self.spj_liste.setFrameShape(QtGui.QFrame.WinPanel)
+        self.spj_liste.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
         self.spj_liste.setEditTriggers(QtGui.QAbstractItemView.EditKeyPressed)
         self.spj_liste.setProperty("showDropIndicator", False)
-        self.spj_liste.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
+        self.spj_liste.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
         self.spj_liste.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
+        self.spj_liste.setGridStyle(QtCore.Qt.NoPen)
         self.spj_liste.setObjectName(_fromUtf8("spj_liste"))
+        self.spj_liste.setColumnCount(3)
+        self.spj_liste.setRowCount(0)
+        item = QtGui.QTableWidgetItem()
+        self.spj_liste.setHorizontalHeaderItem(0, item)
+        item = QtGui.QTableWidgetItem()
+        self.spj_liste.setHorizontalHeaderItem(1, item)
+        item = QtGui.QTableWidgetItem()
+        self.spj_liste.setHorizontalHeaderItem(2, item)
+        self.spj_liste.horizontalHeader().setVisible(False)
+        self.spj_liste.horizontalHeader().setStretchLastSection(True)
+        self.spj_liste.verticalHeader().setVisible(False)
         self.verticalLayout.addWidget(self.spj_liste)
-        self.horizontalLayout = QtGui.QHBoxLayout()
-        self.horizontalLayout.setContentsMargins(-1, 0, -1, -1)
-        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
-        self.spj_annuler = QtGui.QPushButton(spj_fenetre)
-        self.spj_annuler.setMinimumSize(QtCore.QSize(0, 25))
-        self.spj_annuler.setObjectName(_fromUtf8("spj_annuler"))
-        self.horizontalLayout.addWidget(self.spj_annuler)
-        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.horizontalLayout.addItem(spacerItem)
-        self.spj_ok = QtGui.QPushButton(spj_fenetre)
-        self.spj_ok.setMinimumSize(QtCore.QSize(120, 25))
-        self.spj_ok.setObjectName(_fromUtf8("spj_ok"))
-        self.horizontalLayout.addWidget(self.spj_ok)
-        self.verticalLayout.addLayout(self.horizontalLayout)
 
         self.retranslateUi(spj_fenetre)
         QtCore.QMetaObject.connectSlotsByName(spj_fenetre)
 
     def retranslateUi(self, spj_fenetre):
         spj_fenetre.setWindowTitle(_translate("spj_fenetre", "Ajouter un ou des personnages", None))
-        self.spj_annuler.setText(_translate("spj_fenetre", "Annuler", None))
-        self.spj_ok.setText(_translate("spj_fenetre", "Ajouter", None))
+        item = self.spj_liste.horizontalHeaderItem(0)
+        item.setText(_translate("spj_fenetre", "idPj", None))
+        item = self.spj_liste.horizontalHeaderItem(1)
+        item.setText(_translate("spj_fenetre", "img", None))
+        item = self.spj_liste.horizontalHeaderItem(2)
+        item.setText(_translate("spj_fenetre", "nom", None))
 
+from dm import DmTableWidget
 
 if __name__ == "__main__":
     import sys

+ 39 - 48
lib/ui/selectionPj.ui

@@ -35,7 +35,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QListWidget" name="spj_liste">
+    <widget class="DmTableWidget" name="spj_liste">
      <property name="palette">
       <palette>
        <active>
@@ -76,6 +76,9 @@
      <property name="frameShape">
       <enum>QFrame::WinPanel</enum>
      </property>
+     <property name="horizontalScrollBarPolicy">
+      <enum>Qt::ScrollBarAlwaysOff</enum>
+     </property>
      <property name="editTriggers">
       <set>QAbstractItemView::EditKeyPressed</set>
      </property>
@@ -83,61 +86,49 @@
       <bool>false</bool>
      </property>
      <property name="selectionMode">
-      <enum>QAbstractItemView::MultiSelection</enum>
+      <enum>QAbstractItemView::SingleSelection</enum>
      </property>
      <property name="selectionBehavior">
       <enum>QAbstractItemView::SelectRows</enum>
      </property>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <property name="topMargin">
-      <number>0</number>
+     <property name="gridStyle">
+      <enum>Qt::NoPen</enum>
      </property>
-     <item>
-      <widget class="QPushButton" name="spj_annuler">
-       <property name="minimumSize">
-        <size>
-         <width>0</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>Annuler</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="spj_ok">
-       <property name="minimumSize">
-        <size>
-         <width>120</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>Ajouter</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+     <attribute name="horizontalHeaderVisible">
+      <bool>false</bool>
+     </attribute>
+     <attribute name="horizontalHeaderStretchLastSection">
+      <bool>true</bool>
+     </attribute>
+     <attribute name="verticalHeaderVisible">
+      <bool>false</bool>
+     </attribute>
+     <column>
+      <property name="text">
+       <string>idPj</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>img</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>nom</string>
+      </property>
+     </column>
+    </widget>
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>DmTableWidget</class>
+   <extends>QTableWidget</extends>
+   <header>dm.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>