Browse Source

Ecran parties, evolution de l'apparence

olinox14 10 years ago
parent
commit
0915fb4d47
87 changed files with 1429 additions and 726 deletions
  1. 105 37
      DMonde.py
  2. BIN
      couleurs.PNG
  3. 5 4
      lib/EcranChargerPartie.py
  4. 8 8
      lib/EcranEditionMateriel.py
  5. 0 1
      lib/FenetreEditionPartie.py
  6. 43 51
      lib/Partie.py
  7. 52 235
      lib/Plateau.py
  8. 0 1
      lib/commun.py
  9. 5 0
      lib/dmF.py
  10. 11 5
      lib/framePj.py
  11. 2 2
      lib/gM.py
  12. 12 3
      lib/mat.py
  13. 1 1
      lib/rsc.py
  14. 20 1
      lib/test.py
  15. 9 1
      lib/ui/chargerPartie.ui
  16. 8 3
      lib/ui/ecran_chargerPartie.py
  17. 1 1
      lib/ui/ecran_editionPartie.py
  18. 9 8
      lib/ui/ecran_panneauPj.py
  19. 327 190
      lib/ui/ecran_principal.py
  20. 102 0
      lib/ui/panneauPartie.ui
  21. 22 19
      lib/ui/panneauPj.ui
  22. 556 155
      lib/ui/principal.ui
  23. BIN
      parties/defaut/cbt/plpjyh8Zg5.dm
  24. BIN
      parties/defaut/cbt/plpjylZoNc.dm
  25. BIN
      parties/defaut/ptpkioCBxb.dm
  26. BIN
      parties/defaut/ptpkioFRUD.dm
  27. BIN
      parties/defaut/ptpkioFlff.dm
  28. BIN
      parties/defaut/ptpkipfahr.dm
  29. BIN
      parties/defaut/ptpkjopXtx.dm
  30. 4 0
      parties/ptpkjopXtx/cbt/infos_sauvegarde
  31. BIN
      parties/ptpkjopXtx/cbt/plpkjoDFoE.dm
  32. BIN
      parties/ptpkjopXtx/grp/pjpkjpc2dM.dm
  33. BIN
      parties/ptpkjopXtx/grp/pjpkjpdc3C.dm
  34. BIN
      parties/ptpkjopXtx/grp/pjpkjpeHVv.dm
  35. BIN
      parties/ptpkjopXtx/grp/pjpkjpf593.dm
  36. BIN
      parties/ptpkjopXtx/grp/pjpkjpfJhQ.dm
  37. BIN
      parties/ptpkjopXtx/grp/pjpkjpgoi2.dm
  38. BIN
      parties/ptpkjopXtx/ptpkjopXtx.dm
  39. BIN
      rsc/impjhklLAW.png
  40. BIN
      rsc/impjhklLAW.rsc
  41. BIN
      rsc/impjhklLD2.rsc
  42. BIN
      rsc/impjhklLne.rsc
  43. BIN
      rsc/impjhmaVGb.rsc
  44. BIN
      rsc/impjhmaVLr.jpg
  45. BIN
      rsc/impjhmaVLr.rsc
  46. BIN
      rsc/impjhmaVXz.png
  47. BIN
      rsc/impjhmaVXz.rsc
  48. BIN
      rsc/impjhmaVjX.rsc
  49. 0 0
      rsc/impkjoLlBP.png
  50. BIN
      rsc/impkjoLlBP.rsc
  51. 0 0
      rsc/impkjoLlgl.png
  52. BIN
      rsc/impkjoLlgl.rsc
  53. 0 0
      rsc/impkjoLlij.png
  54. BIN
      rsc/impkjoLlij.rsc
  55. 0 0
      rsc/impkjoLlzn.png
  56. BIN
      rsc/impkjoLlzn.rsc
  57. 4 0
      tmp/sepjEmffOc.tmp
  58. 4 0
      tmp/sepjyibHPg.tmp
  59. 4 0
      tmp/sepjyof9wx.tmp
  60. 4 0
      tmp/sepkcj7uxq.tmp
  61. 4 0
      tmp/sepkcjv8ut.tmp
  62. 4 0
      tmp/sepkcjvUhf.tmp
  63. 4 0
      tmp/sepkcjvuWS.tmp
  64. 4 0
      tmp/sepkcjwsvd.tmp
  65. 4 0
      tmp/sepkckbbIl.tmp
  66. 4 0
      tmp/sepkckoE4t.tmp
  67. 4 0
      tmp/sepkcpfKxZ.tmp
  68. 4 0
      tmp/sepkcpgrTQ.tmp
  69. 4 0
      tmp/sepkcptidX.tmp
  70. 4 0
      tmp/sepkfjrtId.tmp
  71. 4 0
      tmp/sepkfoBpKc.tmp
  72. 4 0
      tmp/sepkfoCUdz.tmp
  73. 4 0
      tmp/sepkfoRPx2.tmp
  74. 4 0
      tmp/sepkfoXhT6.tmp
  75. 4 0
      tmp/sepkfoYtOa.tmp
  76. 4 0
      tmp/sepkikI2s6.tmp
  77. 4 0
      tmp/sepkinTuDn.tmp
  78. 4 0
      tmp/sepkinUGsj.tmp
  79. 4 0
      tmp/sepkioE8bv.tmp
  80. 5 0
      tmp/sepkjo3Gt2.tmp
  81. 5 0
      tmp/sepkjoWGTP.tmp
  82. 4 0
      tmp/sepkjorSEv.tmp
  83. 4 0
      tmp/sepkjrFtf5.tmp
  84. 4 0
      tmp/sepkjsCUSs.tmp
  85. 4 0
      tmp/sepkjsL8BV.tmp
  86. 4 0
      tmp/sepkkqSGWZ.tmp
  87. 5 0
      tmp/sepkno9PH2.tmp

+ 105 - 37
DMonde.py

@@ -5,8 +5,8 @@
 
 
 import os
 import os
 
 
-from PyQt4.QtCore import SIGNAL
-from PyQt4.QtGui import QMainWindow, QApplication
+from PyQt4.QtCore import SIGNAL, Qt, QSignalMapper
+from PyQt4.QtGui import QMainWindow, QApplication, QGraphicsView
 
 
 from lib.EcranChargerPartie import EcranChargerPartie
 from lib.EcranChargerPartie import EcranChargerPartie
 from lib.FenetreEditionPartie import FenetreEditionPartie
 from lib.FenetreEditionPartie import FenetreEditionPartie
@@ -22,15 +22,10 @@ class DMonde(QMainWindow):
     def __init__(self, parent=None):
     def __init__(self, parent=None):
         """initialisation de la fenetre"""
         """initialisation de la fenetre"""
         super (DMonde, self).__init__()
         super (DMonde, self).__init__()
-#         self.plateau = None
-#         self.util = "Joueur"
         self.profil = Profil()
         self.profil = Profil()
         self.partie = None
         self.partie = None
-#         self.regles = ""
-#         self.idPlateauEnCours = ""
-#         self.plateauConnecte = False
-#         self.pjs = []   #liste des idM des personnages du groupe
         self.createWidgets()
         self.createWidgets()
+        self.mapper = QSignalMapper()
 
 
     def createWidgets(self):
     def createWidgets(self):
         """construction de l'interface"""
         """construction de l'interface"""
@@ -38,27 +33,100 @@ class DMonde(QMainWindow):
         self.ui.setupUi(self)
         self.ui.setupUi(self)
         self.connect(self.ui.dm_panneauCentre, SIGNAL("currentChanged(int)"), self.rafraichir) 
         self.connect(self.ui.dm_panneauCentre, SIGNAL("currentChanged(int)"), self.rafraichir) 
         
         
-        self.connect(self.ui.pt_nouvelle, SIGNAL("clicked()"), self.nouvellePartie) 
-        self.connect(self.ui.pt_editer, SIGNAL("clicked()"), self.editerPartie) 
-        self.connect(self.ui.pt_fermer, SIGNAL("clicked()"), self.fermerPartie) 
-        self.connect(self.ui.pt_charger, SIGNAL("clicked()"), self.afficherEcranChargerPartie) 
+        ### DM
+        self.connect(   self.ui.pt_nouvelle,           SIGNAL("clicked()"),               self.nouvellePartie) 
+        self.connect(   self.ui.pt_editer,             SIGNAL("clicked()"),               self.editerPartie) 
+        self.connect(   self.ui.pt_fermer,             SIGNAL("clicked()"),               self.fermerPartie) 
+        self.connect(   self.ui.pt_charger,            SIGNAL("clicked()"),               self.afficherEcranChargerPartie) 
+        
+        ### partie
+
+        ### plateau
+        self.ui.cbt_vue.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
+        self.ui.cp_ongletsListes.setStyleSheet("QTabBar::tab { width: 41px; }")
+        self.ui.pi_ongletsListes.setStyleSheet("QTabBar::tab { width: 38px; }")   
+        
         self.ouverture()
         self.ouverture()
 
 
+    def connexionsPartie(self):
+        return [
+                ( self.ui.pt_enregistrer   , "clicked()"   ,self.partie.enregistrer                   , None ), \
+                ( self.ui.cbt_enCours      , "clicked()"   ,self.partie.chargerDernierPlateau         , None ), \
+                ( self.ui.cbt_charger      , "clicked()"   ,self.partie.afficherEcranChargerPlateau   , None ), \
+                ( self.ui.cbt_creer        , "clicked()"   ,self.partie.nouveauPlateau                , None ), \
+                ( self.ui.cbt_sauver       , "clicked()"   ,self.partie.enregistrerPlateau            , None ), \
+                ( self.ui.cbt_fermer       , "clicked()"   ,self.partie.fermerPlateau                 , None ), \
+                ( self.ui.grp_nouveauPj    , "clicked()"   ,self.partie.nouveauPj                     , None )
+                ]
+
+    def connecterPartie(self, actif = True):
+        if not self.partie: return
+        for w, s, f, p in self.connexionsPartie():
+            if actif:
+                self.connect(w, SIGNAL(s), f, Qt.UniqueConnection)
+                if p != None: pass    
+            else:
+                self.disconnect(w, SIGNAL(s))
+
+    def connexionsPlateau(self):
+        return  [ 
+                (self.ui.cbt_modeCreation      , "clicked()"              , self.partie.plateau.plateauModeCreation          , None ), \
+                (self.ui.cbt_modeCombat        , "clicked()"              , self.partie.plateau.plateauModeCombat            , None ), \
+                (self.ui.cbt_etapeSuivante     , "clicked()"              , self.partie.plateau.etapeSuivante                , None ), \
+                (self.ui.pc_listePJ            , "cellClicked(int, int)"  , self.partie.plateau.ajouterPj                    , None ), \
+                (self.ui.cbt_nom               , "clicked()"              , self.partie.plateau.afficherEcranPlateau         , None ), \
+                (self.ui.cbt_afficherGestion   , "clicked()"              , self.partie.plateau.afficheEcranGestionCombat    , None ), \
+                (self.ui.pi_listeAttributs     , "cellChanged(int,int)"   , self.partie.plateau.listeAttributCelluleModifiee , None ), \
+                (self.ui.cp_dialogueCouleurs   , "clicked()"              , self.partie.plateau.modePeintureCase             , None ), \
+                (self.ui.cp_afficherNotes      , "clicked()"              , self.partie.plateau.agrandirNotesMjPlateau       , None ), \
+                (self.ui.pi_fiche              , "clicked()"              , self.partie.plateau.afficherFichePion            , None ), \
+                (self.ui.cp_listeTerrains      , "cellClicked(int,int)"   , self.partie.plateau.modeMajTerrainCase           , None ), \
+                (self.ui.cp_listeCreatures     , "cellClicked(int,int)"   , self.partie.plateau.modeCreationCombattant       , None ), \
+                (self.ui.cp_listeDecors        , "cellClicked(int,int)"   , self.partie.plateau.modeCreationDecor            , None ), \
+                (self.ui.cp_epaisseurPinceau   , "valueChanged(int)"      , self.partie.plateau.majEpaisseurPinceau          , None ), \
+                (self.ui.cp_pipetteCouleur     , "clicked()"              , self.partie.plateau.modeCopieTerrain             , None ), \
+                (self.ui.cp_effets             , "activated(int)"         , self.partie.plateau.modeCaseEffet                , None ), \
+                (self.ui.cp_gomme              , "clicked()"              , self.partie.plateau.majModeSupprimerPions        , None ), \
+                (self.ui.cp_placerEntree       , "clicked()"              , self.partie.plateau.majModeDefinirEntree         , None ), \
+                (self.ui.cp_placerCache        , "clicked()"              , self.partie.plateau.majModePlacerCache           , None ), \
+                (self.ui.cp_placerSortie       , "clicked()"              , self.partie.plateau.majModeDefinirSortie         , None ), \
+                (self.ui.cp_defPlacement       , "clicked()"              , self.partie.plateau.majModeZonePlacement         , None ), \
+                (self.ui.pi_notes              , "textChanged()"          , self.partie.plateau.majNotesCombattant           , None ), \
+                (self.ui.cp_formeSimple        , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.cp_formeLigne         , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.cp_formeLigneOrientee , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.cp_formePot           , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.cp_formeRectVide      , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.cp_formeRectPlein     , "clicked()"              , self.partie.plateau.majModeForme                 , None ), \
+                (self.ui.act_deplacement       , "clicked()"              , self.partie.plateau.majModeCombatDeplacement     , None ), \
+                (self.ui.act_attaqueCac        , "clicked()"              , self.partie.plateau.majModeCombatAttaqueCaC      , None ), \
+                (self.ui.act_attaqueDist       , "clicked()"              , self.partie.plateau.majModeCombatAttaqueDist     , None ), \
+                (self.ui.act_attaqueZone       , "clicked()"              , self.partie.plateau.majModeCombatZone            , None ) 
+                ]
+
+    def connecterPlateau(self, actif = True):
+        if not self.partie: return
+        if not self.partie.plateau: return
+        
+        for w, s, f, p in self.connexionsPlateau():
+            if actif:
+                self.connect(w, SIGNAL(s), f, Qt.UniqueConnection)
+                if p != None:
+                    self.mapper.setMapping( w, p )
+            else:
+                self.disconnect(w, SIGNAL(s))
+
     def ouverture(self):
     def ouverture(self):
         """operations menees a l'ouverture de la fenetre principale"""
         """operations menees a l'ouverture de la fenetre principale"""
-#         self.majLargeurOnglets()
         self.majAffichage()
         self.majAffichage()
-#         self.chargerPartie("")        
 
 
     def rafraichir(self):
     def rafraichir(self):
         """fonction utilisee pour forcer le repaint"""
         """fonction utilisee pour forcer le repaint"""
         self.majLargeurOnglets()
         self.majLargeurOnglets()
 
 
-    def estMj(self):
-        return True
-
     def majAffichage(self):
     def majAffichage(self):
         actif = (self.partie != None)
         actif = (self.partie != None)
+        if not actif: self.ui.dm_panneauCentre.setCurrentIndex(0)
         self.ui.dm_panneauCentre.setTabEnabled(1, actif)
         self.ui.dm_panneauCentre.setTabEnabled(1, actif)
         self.ui.dm_panneauCentre.setTabEnabled(2, actif)
         self.ui.dm_panneauCentre.setTabEnabled(2, actif)
         self.ui.dm_panneauCentre.setTabEnabled(3, actif)
         self.ui.dm_panneauCentre.setTabEnabled(3, actif)
@@ -68,18 +136,27 @@ class DMonde(QMainWindow):
         val = (self.ui.dm_panneauCentre.width() - 20) / 4
         val = (self.ui.dm_panneauCentre.width() - 20) / 4
         self.ui.dm_panneauCentre.setStyleSheet("QTabBar::tab { height: 25; width: "+str(val)+"px; }")        
         self.ui.dm_panneauCentre.setStyleSheet("QTabBar::tab { height: 25; width: "+str(val)+"px; }")        
 
 
+    ### gestion partie
+    def majPartie(self, partie):
+        if partie:
+            self.partie = partie
+            s = sessionEnCours()
+            idM = self.partie.idM() if self.partie else "defaut"
+            s.majPartie(idM)
+            s.enregistrer()
+            self.connecterPartie()
+            self.partie.afficher(self)
+            self.majAffichage()   
+        else:
+            self.partie = None   
+
     def nouvellePartie(self):
     def nouvellePartie(self):
         fen = FenetreEditionPartie()
         fen = FenetreEditionPartie()
         fen.nouvelle()
         fen.nouvelle()
         fen.show()
         fen.show()
         r = fen.exec_()
         r = fen.exec_()
         if r == 1:
         if r == 1:
-            partie = fen.resultat()
-            self.partie = partie
-            self.partie.afficher(self)
-            self.majPartieEnCours()
-            self.majAffichage()
-            
+            self.majPartie( fen.resultat() )
         del fen
         del fen
 
 
     def editerPartie(self):
     def editerPartie(self):
@@ -89,14 +166,13 @@ class DMonde(QMainWindow):
         fen.show()
         fen.show()
         r = fen.exec_()
         r = fen.exec_()
         if r == 1:
         if r == 1:
-            partie = fen.resultat()
-            self.partie = partie
-            self.partie.majAffichage()
+            self.majPartie( fen.resultat() )
         del fen
         del fen
         
         
     def fermerPartie(self):
     def fermerPartie(self):
-        if self.partie:
+        if self.partie != None:
             self.partie.fermer()
             self.partie.fermer()
+            self.partie = None
             self.majAffichage()
             self.majAffichage()
 
 
     def afficherEcranChargerPartie(self):
     def afficherEcranChargerPartie(self):
@@ -114,17 +190,9 @@ class DMonde(QMainWindow):
         chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) )
         chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) )
         partie = chargerMat( chemin )
         partie = chargerMat( chemin )
         if partie:
         if partie:
-            self.partie = partie
-            self.partie.afficher(self)
-            self.majPartieEnCours()
-            self.majAffichage()
-
-    def majPartieEnCours(self):
-        s = sessionEnCours()
-        idM = self.partie.idM() if self.partie else "defaut"
-        s.majPartie(idM)
-        s.enregistrer()
+            self.majPartie( partie )
 
 
+    ### evenements
     def resizeEvent(self, event):
     def resizeEvent(self, event):
         self.majLargeurOnglets()
         self.majLargeurOnglets()
         
         

BIN
couleurs.PNG


+ 5 - 4
lib/EcranChargerPartie.py

@@ -60,7 +60,7 @@ class EcranChargerPartie(QDialog):
     def majListeChargement(self):
     def majListeChargement(self):
         """remplit ou maj la liste des plateaux sauvegardes"""
         """remplit ou maj la liste des plateaux sauvegardes"""
         #on met a jour la largeur des colonnes
         #on met a jour la largeur des colonnes
-        largeurs = [0, 370, 100, 0]
+        largeurs = [0, 290, 90, 90, 0]
         for col in self.ui.chpt_liste.colonnes():
         for col in self.ui.chpt_liste.colonnes():
             self.ui.chpt_liste.setColumnWidth(col, largeurs[col]);
             self.ui.chpt_liste.setColumnWidth(col, largeurs[col]);
 
 
@@ -79,14 +79,15 @@ class EcranChargerPartie(QDialog):
                 ligne = self.ui.chpt_liste.nouvelleLigneFin()
                 ligne = self.ui.chpt_liste.nouvelleLigneFin()
                 self.ui.chpt_liste.majTexte(ligne, 0, partie.idM())
                 self.ui.chpt_liste.majTexte(ligne, 0, partie.idM())
                 self.ui.chpt_liste.majTexte(ligne, 1, partie.nom() ) 
                 self.ui.chpt_liste.majTexte(ligne, 1, partie.nom() ) 
-                self.ui.chpt_liste.majTexte(ligne, 2, strftime('%d/%m/%y %H:%M',localtime(partie.dateMaj)) )
-                self.ui.chpt_liste.majData(ligne, 3, partie.dateMaj )
+                self.ui.chpt_liste.majTexte(ligne, 2, strftime('%d/%m/%y %H:%M',localtime(partie.dateCreation() )) )
+                self.ui.chpt_liste.majTexte(ligne, 3, strftime('%d/%m/%y %H:%M',localtime(partie.dateMaj() )) )
+                self.ui.chpt_liste.majData(ligne, 4, partie.dateMaj() )
         for col in self.ui.chpt_liste.colonnes():
         for col in self.ui.chpt_liste.colonnes():
             self.ui.chpt_liste.sizeHintForColumn(col)
             self.ui.chpt_liste.sizeHintForColumn(col)
             
             
         #on trie par date
         #on trie par date
         self.ui.chpt_liste.setSortingEnabled(True)
         self.ui.chpt_liste.setSortingEnabled(True)
-        self.ui.chpt_liste.sortItems(5, 1)
+        self.ui.chpt_liste.sortItems(4, 1)
         self.majAffichage()
         self.majAffichage()
         
         
 
 

+ 8 - 8
lib/EcranEditionMateriel.py

@@ -173,7 +173,7 @@ class EdSectionBase(object):
 class EdEnTete(EdSectionBase):
 class EdEnTete(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdEnTete, self).__init__(ecran)
         super(EdEnTete, self).__init__(ecran)
-        self._filtre = ["cb", "dc"]
+        self._filtre = ["cb", "dc", "pj"]
         
         
     def construire(self):
     def construire(self):
         if self.ecran.mode() == "creation":
         if self.ecran.mode() == "creation":
@@ -215,7 +215,7 @@ class EdEnTete(EdSectionBase):
 class EdPageCreation(EdSectionBase):
 class EdPageCreation(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageCreation, self).__init__(ecran)
         super(EdPageCreation, self).__init__(ecran)
-        self._filtre = ["cb", "dc"]
+        self._filtre = ["cb", "dc", "pj"]
         self._modes = ["creation"]
         self._modes = ["creation"]
 
 
     def construire(self):
     def construire(self):
@@ -293,7 +293,7 @@ class EdPageCreation(EdSectionBase):
 class EdPageCombat(EdSectionBase):
 class EdPageCombat(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageCombat, self).__init__(ecran)
         super(EdPageCombat, self).__init__(ecran)
-        self._filtre = ["cb", "dc"]
+        self._filtre = ["cb", "dc", "pj"]
         self._modes = ["combat"]
         self._modes = ["combat"]
  
  
     def construire(self):
     def construire(self):
@@ -336,7 +336,7 @@ class EdPageCombat(EdSectionBase):
 class EdPageDeplacement(EdSectionBase):
 class EdPageDeplacement(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageDeplacement, self).__init__(ecran)
         super(EdPageDeplacement, self).__init__(ecran)
-        self._filtre = ["cb"]
+        self._filtre = ["cb", "pj"]
         
         
     def charger(self):
     def charger(self):
         self.ui().edm_taille.setValue(self.mat().h)
         self.ui().edm_taille.setValue(self.mat().h)
@@ -374,7 +374,7 @@ class EdPageProprietes(EdSectionBase):
 class EdPageAttributs(EdSectionBase):
 class EdPageAttributs(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageAttributs, self).__init__(ecran)
         super(EdPageAttributs, self).__init__(ecran)
-        self._filtre = ["cb"]
+        self._filtre = ["cb", "pj"]
         self._modes = ["creation", "combat"]
         self._modes = ["creation", "combat"]
 
 
     def layoutCarac(self):
     def layoutCarac(self):
@@ -451,7 +451,7 @@ class EdPageAttributs(EdSectionBase):
 class EdPageAttaques(EdSectionBase):
 class EdPageAttaques(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageAttaques, self).__init__(ecran)
         super(EdPageAttaques, self).__init__(ecran)
-        self._filtre = ["cb"]
+        self._filtre = ["cb", "pj"]
         self._compteurAttaque = 0
         self._compteurAttaque = 0
     
     
     def layoutAtt(self):
     def layoutAtt(self):
@@ -496,7 +496,7 @@ class EdPageAttaques(EdSectionBase):
 class EdPageInventaire(EdSectionBase):
 class EdPageInventaire(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageInventaire, self).__init__(ecran)
         super(EdPageInventaire, self).__init__(ecran)
-        self._filtre = ["cb", "dc"]
+        self._filtre = ["cb", "dc", "pj"]
         
         
     def construire(self):
     def construire(self):
         self.ecran.ui.edm_listeInventaire.construire()
         self.ecran.ui.edm_listeInventaire.construire()
@@ -549,7 +549,7 @@ class EdPageInventaire(EdSectionBase):
 class EdPageNotes(EdSectionBase):
 class EdPageNotes(EdSectionBase):
     def __init__(self, ecran):
     def __init__(self, ecran):
         super(EdPageNotes, self).__init__(ecran)
         super(EdPageNotes, self).__init__(ecran)
-        self._filtre = ["cb", "dc"]
+        self._filtre = ["cb", "dc", "pj"]
 
 
     def construire(self):
     def construire(self):
         if self.mat().typ() == "dc":
         if self.mat().typ() == "dc":

+ 0 - 1
lib/FenetreEditionPartie.py

@@ -29,7 +29,6 @@ class FenetreEditionPartie(QDialog):
 
 
     def nouvelle(self):
     def nouvelle(self):
         self._p = Partie()
         self._p = Partie()
-        self._p.creer()
         self.chargerChapitres()
         self.chargerChapitres()
 
 
     def charger(self, partie):
     def charger(self, partie):

+ 43 - 51
lib/Partie.py

@@ -25,8 +25,6 @@ class Partie(Materiel):
         super(Partie, self).__init__()
         super(Partie, self).__init__()
         self._type = "pt"
         self._type = "pt"
         self._repCible = "parties"
         self._repCible = "parties"
-        self._nom = "Partie"
-        self.dateMaj = ""  #date de la derniere mise a jour
         
         
         self.prog = None
         self.prog = None
 #         self.nom = "Partie"
 #         self.nom = "Partie"
@@ -36,7 +34,7 @@ class Partie(Materiel):
         self.idRg = None    #id des regles utilisees
         self.idRg = None    #id des regles utilisees
 
 
         self.pjs = []          #liste de Combattant()
         self.pjs = []          #liste de Combattant()
-        self._plEc = None   #plateau en cours
+        self.plateau = None   #plateau en cours
         
         
         self._ch = {1: Chapitre(1)}   #liste des chapitres (num: Chapitre)
         self._ch = {1: Chapitre(1)}   #liste des chapitres (num: Chapitre)
         self._chEC = 1                  #chapitre en cours
         self._chEC = 1                  #chapitre en cours
@@ -45,13 +43,13 @@ class Partie(Materiel):
 #         self.journal = Journal()
 #         self.journal = Journal()
 
 
     def __getstate__(self):
     def __getstate__(self):
-        self.dateMaj = time()
-        state = {key:value for key, value in self.__dict__.items() if not key in ["prog"]}
+        state = {key:value for key, value in self.__dict__.items() if not key in ["prog", "plateau"]}
         return (state)
         return (state)
 
 
     def __setstate__(self, state):
     def __setstate__(self, state):
         self.__dict__ = state
         self.__dict__ = state
         super(Partie, self).__init__()
         super(Partie, self).__init__()
+        self.plateau = None
 
 
     def nom(self):
     def nom(self):
         return self._nom
         return self._nom
@@ -59,38 +57,25 @@ class Partie(Materiel):
     def majNom(self, nom):
     def majNom(self, nom):
         if len(nom) > 0: self._nom = nom
         if len(nom) > 0: self._nom = nom
 
 
+    def fermer(self):
+        self.fermerPlateau()
+        self.viderListePj()
+        
+    
+    def enregistrer(self):
+        super(Partie, self).enregistrer()
+
     def afficher(self, prog):
     def afficher(self, prog):
         """on affiche la partie"""
         """on affiche la partie"""
         self.prog = prog
         self.prog = prog
-        self.prog.connect(self.prog.ui.pt_enregistrer, SIGNAL("clicked()"), self.enregistrer) 
-
-        self.prog.connect(self.prog.ui.cbt_enCours, SIGNAL("clicked()"), self.chargerDernierPlateau)   
-        self.prog.connect(self.prog.ui.cbt_charger, SIGNAL("clicked()"), self.afficherEcranChargerPlateau)   
-        self.prog.connect(self.prog.ui.cbt_creer, SIGNAL("clicked()"), self.nouveauPlateau)   
-        self.prog.connect(self.prog.ui.cbt_sauver, SIGNAL("clicked()"), self.enregistrerPlateau)   
-        self.prog.connect(self.prog.ui.cbt_fermer, SIGNAL("clicked()"), self.fermerPlateau)
         if len(afficheSvg(os.path.join(rep("cbt"), "infos_sauvegarde"))) == 0:
         if len(afficheSvg(os.path.join(rep("cbt"), "infos_sauvegarde"))) == 0:
             self.prog.ui.cbt_enCours.setEnabled(False)
             self.prog.ui.cbt_enCours.setEnabled(False)
         
         
         self.afficherPlateau(False)
         self.afficherPlateau(False)
-        self.prog.ui.cbt_vue.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
-        self.prog.ui.cp_ongletsListes.setStyleSheet("QTabBar::tab { width: 41px; }")
-        self.prog.ui.pi_ongletsListes.setStyleSheet("QTabBar::tab { width: 38px; }")
-        
-        self.prog.connect(self.prog.ui.grp_nouveauPj, SIGNAL("clicked()"), self.nouveauPj)
         self.chargerListePj() 
         self.chargerListePj() 
         
         
         self.majAffichage()
         self.majAffichage()
 
 
-    def creer(self):
-        self.idP = uid("pr")
-
-    def fermer(self):
-        pass
-    
-    def enregistrer(self):
-        super(Partie, self).enregistrer()
-
     def majAffichage(self):
     def majAffichage(self):
         """met a jour l'interface avec les informations de la partie"""
         """met a jour l'interface avec les informations de la partie"""
         self.prog.ui.pt_nom.majTexte("Partie: {}".format(self._nom) )
         self.prog.ui.pt_nom.majTexte("Partie: {}".format(self._nom) )
@@ -113,26 +98,23 @@ class Partie(Materiel):
         if num in self._ch: self._chEC = num
         if num in self._ch: self._chEC = num
 
 
     ##### groupe ########"
     ##### groupe ########"
-    
     def chargerListePj(self):
     def chargerListePj(self):
-        for attributsFichier in os.walk(rep("grp")):
-            for f in attributsFichier[2]:
-                pj = chargerMat(os.path.join(attributsFichier[0], f))
-                self.pjAjouterAListe(pj)
+        for idPj in self.pjs:
+            pj = chargerMat(idPj, "grp")
+            self.pjAjouterAListe(pj)
         self.prog.ui.grp_deroulement_layout.setAlignment(Qt.AlignTop)
         self.prog.ui.grp_deroulement_layout.setAlignment(Qt.AlignTop)
 
 
     def pjAjouterAListe(self, pj = None):
     def pjAjouterAListe(self, pj = None):
-        compteur = len(self.pjs)
+        compteur = len(self.prog.ui.grp_deroulement_layout)
         colonne = (compteur % 3) * 2
         colonne = (compteur % 3) * 2
         ligne = int(compteur / 3)
         ligne = int(compteur / 3)
-        self.pjs.append(pj.idM())
         panneau = FramePj(compteur)
         panneau = FramePj(compteur)
         if pj:
         if pj:
             panneau.chargerPj(pj)
             panneau.chargerPj(pj)
         panneau.setObjectName(QString("pj_panneau_{}".format(compteur)))
         panneau.setObjectName(QString("pj_panneau_{}".format(compteur)))
         self.prog.connect(panneau, SIGNAL("pjModifie(int)"), self.pjEnregistrer)
         self.prog.connect(panneau, SIGNAL("pjModifie(int)"), self.pjEnregistrer)
         self.prog.ui.grp_deroulement_layout.addWidget(panneau, ligne, colonne)
         self.prog.ui.grp_deroulement_layout.addWidget(panneau, ligne, colonne)
-
+        
         ## pour l'espacement entre les panneaux
         ## pour l'espacement entre les panneaux
         w = QWidget()
         w = QWidget()
         self.prog.ui.grp_deroulement_layout.addWidget(w, ligne, colonne + 1)
         self.prog.ui.grp_deroulement_layout.addWidget(w, ligne, colonne + 1)
@@ -141,6 +123,7 @@ class Partie(Materiel):
         panneau = self.prog.findChild(QFrame, "pj_panneau_{}".format(index))
         panneau = self.prog.findChild(QFrame, "pj_panneau_{}".format(index))
         pj = panneau.pj()
         pj = panneau.pj()
         supprimerMat(pj.idM(), "grp")
         supprimerMat(pj.idM(), "grp")
+        self.pjs.remove(pj.idM())
         self.ui.grp_deroulement_layout.removeWidget(panneau)
         self.ui.grp_deroulement_layout.removeWidget(panneau)
 
 
     def nouveauPj(self):
     def nouveauPj(self):
@@ -149,31 +132,38 @@ class Partie(Materiel):
         fen.exec_()
         fen.exec_()
         pj = fen.mat()
         pj = fen.mat()
         del fen
         del fen
-        pj.enregistrer("grp")
-        self.pjAjouterAListe(pj)
+        if pj:
+            pj.enregistrer("grp")
+            self.pjs.append(pj.idM())
+            self.pjAjouterAListe(pj)
 
 
     def pjEnregistrer(self, idPj):
     def pjEnregistrer(self, idPj):
         panneau = self.prog.findChild(QFrame, "pj_panneau_{}".format(idPj))
         panneau = self.prog.findChild(QFrame, "pj_panneau_{}".format(idPj))
         pj = panneau.pj()
         pj = panneau.pj()
         pj.enregistrer("grp")
         pj.enregistrer("grp")
 
 
+    def viderListePj(self):
+        for i in reversed(range(self.prog.ui.grp_deroulement_layout.count())): 
+            self.prog.ui.grp_deroulement_layout.itemAt(i).widget().setParent(None)
+
     ####### plateaux ##########
     ####### plateaux ##########
+
     def nouveauPlateau(self):
     def nouveauPlateau(self):
         """ouvre la fenetre de creation de plateau"""
         """ouvre la fenetre de creation de plateau"""
-        if self._plEc != None: return
+        if self.plateau != None: return
         fenCP = EcranCreerPlateau()
         fenCP = EcranCreerPlateau()
-        fenCP.afficher( Plateau(self.prog) )
+        fenCP.afficher( Plateau() )
         r = fenCP.exec_()
         r = fenCP.exec_()
         if r == 1:
         if r == 1:
-            self._plEc = fenCP.resultat()
-            self._plEc.creer()
+            self.plateau = fenCP.resultat()
+            self.prog.connecterPlateau()
+            self.plateau.creer(self.prog)
             self.afficherPlateau(True)
             self.afficherPlateau(True)
         del fenCP
         del fenCP
         
         
-        
     def afficherEcranChargerPlateau(self):
     def afficherEcranChargerPlateau(self):
         """ouvre la fenetre de chargement de plateau"""
         """ouvre la fenetre de chargement de plateau"""
-        if self._plEc != None: return
+        if self.plateau != None: return
         fen = EcranChargerPlateau(self)
         fen = EcranChargerPlateau(self)
         fen.show()
         fen.show()
         r = fen.exec_()
         r = fen.exec_()
@@ -192,21 +182,23 @@ class Partie(Materiel):
             self.chargerPlateau(dernier)
             self.chargerPlateau(dernier)
         
         
     def chargerPlateau(self, idM):
     def chargerPlateau(self, idM):
-        if self._plEc: return
-        self._plEc = chargerMat(idM, "cbt")
-        self._plEc.recreer(self.prog)  
+        if self.plateau: return
+        self.plateau = chargerMat(idM, "cbt")
+        self.prog.connecterPlateau()
+        self.plateau.recreer(self.prog)  
         self.afficherPlateau(True) 
         self.afficherPlateau(True) 
 
 
     def enregistrerPlateau(self):
     def enregistrerPlateau(self):
-        self._plEc.enregistrer("cbt")
-        infos = {"nom": self._plEc.nom(), "chapitre": self._plEc.chapitre, "dateCreation":self._plEc.dateCreation, "dateSvg":self._plEc.dateSvg, \
-                 "public": self._plEc.public, "enCours": self._plEc.enCours}
+        self.plateau.enregistrer("cbt")
+        infos = {"nom": self.plateau.nom(), "chapitre": self.plateau.chapitre, "dateCreation":self.plateau.dateCreation, "dateSvg":self.plateau.dateSvg, \
+                 "public": self.plateau.public, "enCours": self.plateau.enCours}
         enregistrer(self._plEc.idM(), infos, os.path.join(rep("cbt"), "infos_sauvegarde"))
         enregistrer(self._plEc.idM(), infos, os.path.join(rep("cbt"), "infos_sauvegarde"))
     
     
     def fermerPlateau(self):
     def fermerPlateau(self):
-        self._plEc.fermer()
-        self._plEc = None
-        self.afficherPlateau(False) 
+        if self.plateau:
+            self.plateau.fermer()
+            self.plateau = None
+            self.afficherPlateau(False)  
 
 
     def majFichierInfosSvg(self):
     def majFichierInfosSvg(self):
         """construit/maj le fichier contenant la liste des
         """construit/maj le fichier contenant la liste des

+ 52 - 235
lib/Plateau.py

@@ -34,11 +34,10 @@ import regles as regles
 
 
 class Plateau(QGraphicsScene, Materiel):
 class Plateau(QGraphicsScene, Materiel):
     """plateau de jeu contenant les cases, decors et pions"""
     """plateau de jeu contenant les cases, decors et pions"""
-    def __init__(self, fenetre, parent=None):
+    def __init__(self, parent=None):
         super(Plateau, self).__init__()
         super(Plateau, self).__init__()
         #parametres et variables
         #parametres et variables
         self._type = "pl"
         self._type = "pl"
-        self.fenetre = fenetre
 
 
         ##partie et infos plateau
         ##partie et infos plateau
         self.chapitre = 0
         self.chapitre = 0
@@ -103,8 +102,9 @@ class Plateau(QGraphicsScene, Materiel):
     def decors(self):
     def decors(self):
         return self.pions.combattants()
         return self.pions.combattants()
 
 
-    def creer(self):
+    def creer(self, fenetre):
         """cree le plateau"""
         """cree le plateau"""
+        self.fenetre = fenetre
         self.dateCreation = time()
         self.dateCreation = time()
         self.creePar = self.fenetre.profil.pseudo()
         self.creePar = self.fenetre.profil.pseudo()
         self.hCase = 120  #hauteur d'une case
         self.hCase = 120  #hauteur d'une case
@@ -212,52 +212,53 @@ class Plateau(QGraphicsScene, Materiel):
         
         
     def connexions(self):
     def connexions(self):
         """connecte le plateau aux differents widgets de la fenetre principale"""
         """connecte le plateau aux differents widgets de la fenetre principale"""
+        pass
         #modes d'interaction
         #modes d'interaction
-        self.fenetre.connect(self.fenetre.ui.cbt_modeCreation, SIGNAL("clicked()"), self.plateauModeCreation, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cbt_modeCombat, SIGNAL("clicked()"), self.plateauModeCombat, Qt.UniqueConnection)
-
-        #etapes du combat
-        self.fenetre.connect(self.fenetre.ui.cbt_etapeSuivante, SIGNAL("clicked()"), self.etapeSuivante, Qt.UniqueConnection)
-        self.connect(self.fenetre.ui.pc_listePJ, SIGNAL("cellClicked(int, int)"), self.ajouterPj)
-                
-        #affichage de fenetres
-        self.fenetre.connect(self.fenetre.ui.cbt_nom, SIGNAL("clicked()"), self.afficherEcranPlateau, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cbt_afficherGestion, SIGNAL("clicked()"), self.afficheEcranGestionCombat, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.pi_listeAttributs, SIGNAL("cellChanged(int,int)"), self.listeAttributCelluleModifiee, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_dialogueCouleurs, SIGNAL("clicked()"), self.modePeintureCase, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_afficherNotes, SIGNAL("clicked()"), self.agrandirNotesMjPlateau, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.pi_fiche, SIGNAL("clicked()"), self.afficherFichePion, Qt.UniqueConnection)
-        
-        #listes
-        self.fenetre.connect(self.fenetre.ui.cp_listeTerrains, SIGNAL("cellClicked(int,int)"), self.modeMajTerrainCase, Qt.UniqueConnection)
-        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)
-
-        #creation
-        self.fenetre.connect(self.fenetre.ui.cp_epaisseurPinceau, SIGNAL("valueChanged(int)"), self.majEpaisseurPinceau, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_pipetteCouleur, SIGNAL("clicked()"), self.modeCopieTerrain, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_effets, SIGNAL("activated(int)"), self.modeCaseEffet, Qt.UniqueConnection)
-        
-        #autres:
-        self.fenetre.connect(self.fenetre.ui.cp_gomme, SIGNAL("clicked()"), self.majModeSupprimerPions, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_placerEntree, SIGNAL("clicked()"), self.majModeDefinirEntree, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_placerCache, SIGNAL("clicked()"), self.majModePlacerCache, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_placerSortie, SIGNAL("clicked()"), self.majModeDefinirSortie, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_defPlacement, SIGNAL("clicked()"), self.majModeZonePlacement, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.pi_notes, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
-
-        #formes (dessin)
-        self.fenetre.connect(self.fenetre.ui.cp_formeSimple, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formeLigne, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formeLigneOrientee, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formePot, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formeRectVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formeRectPlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-
-        self.fenetre.connect(self.fenetre.ui.act_deplacement, SIGNAL("clicked()"), self.majModeCombatDeplacement, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.act_attaqueCac, SIGNAL("clicked()"), self.majModeCombatAttaqueCaC, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.act_attaqueDist, SIGNAL("clicked()"), self.majModeCombatAttaqueDist, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.act_attaqueZone, SIGNAL("clicked()"), self.majModeCombatZone, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cbt_modeCreation, SIGNAL("clicked()"), self.plateauModeCreation, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cbt_modeCombat, SIGNAL("clicked()"), self.plateauModeCombat, Qt.UniqueConnection)
+# 
+#         #etapes du combat
+#         self.fenetre.connect(self.fenetre.ui.cbt_etapeSuivante, SIGNAL("clicked()"), self.etapeSuivante, Qt.UniqueConnection)
+#         self.connect(self.fenetre.ui.pc_listePJ, SIGNAL("cellClicked(int, int)"), self.ajouterPj)
+#                 
+#         #affichage de fenetres
+#         self.fenetre.connect(self.fenetre.ui.cbt_nom, SIGNAL("clicked()"), self.afficherEcranPlateau, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cbt_afficherGestion, SIGNAL("clicked()"), self.afficheEcranGestionCombat, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.pi_listeAttributs, SIGNAL("cellChanged(int,int)"), self.listeAttributCelluleModifiee, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_dialogueCouleurs, SIGNAL("clicked()"), self.modePeintureCase, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_afficherNotes, SIGNAL("clicked()"), self.agrandirNotesMjPlateau, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.pi_fiche, SIGNAL("clicked()"), self.afficherFichePion, Qt.UniqueConnection)
+#         
+#         #listes
+#         self.fenetre.connect(self.fenetre.ui.cp_listeTerrains, SIGNAL("cellClicked(int,int)"), self.modeMajTerrainCase, Qt.UniqueConnection)
+#         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)
+# 
+#         #creation
+#         self.fenetre.connect(self.fenetre.ui.cp_epaisseurPinceau, SIGNAL("valueChanged(int)"), self.majEpaisseurPinceau, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_pipetteCouleur, SIGNAL("clicked()"), self.modeCopieTerrain, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_effets, SIGNAL("activated(int)"), self.modeCaseEffet, Qt.UniqueConnection)
+#         
+#         #autres:
+#         self.fenetre.connect(self.fenetre.ui.cp_gomme, SIGNAL("clicked()"), self.majModeSupprimerPions, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_placerEntree, SIGNAL("clicked()"), self.majModeDefinirEntree, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_placerCache, SIGNAL("clicked()"), self.majModePlacerCache, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_placerSortie, SIGNAL("clicked()"), self.majModeDefinirSortie, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_defPlacement, SIGNAL("clicked()"), self.majModeZonePlacement, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.pi_notes, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
+# 
+#         #formes (dessin)
+#         self.fenetre.connect(self.fenetre.ui.cp_formeSimple, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_formeLigne, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_formeLigneOrientee, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_formePot, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_formeRectVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_formeRectPlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
+# 
+#         self.fenetre.connect(self.fenetre.ui.act_deplacement, SIGNAL("clicked()"), self.majModeCombatDeplacement, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.act_attaqueCac, SIGNAL("clicked()"), self.majModeCombatAttaqueCaC, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.act_attaqueDist, SIGNAL("clicked()"), self.majModeCombatAttaqueDist, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.act_attaqueZone, SIGNAL("clicked()"), self.majModeCombatZone, Qt.UniqueConnection)
 #         self.fenetre.connect(self.fenetre.ui.pi_formeAttaqueZone, SIGNAL("activated (int)"), self.majModeCombatZone, Qt.UniqueConnection)
 #         self.fenetre.connect(self.fenetre.ui.pi_formeAttaqueZone, SIGNAL("activated (int)"), self.majModeCombatZone, Qt.UniqueConnection)
 #         self.fenetre.connect(self.fenetre.ui.pi_rayonAttaqueZone, SIGNAL("valueChanged(int)"), self.majRayonZone, Qt.UniqueConnection)
 #         self.fenetre.connect(self.fenetre.ui.pi_rayonAttaqueZone, SIGNAL("valueChanged(int)"), self.majRayonZone, Qt.UniqueConnection)
 
 
@@ -292,9 +293,9 @@ class Plateau(QGraphicsScene, Materiel):
         self.initListeAttaques()
         self.initListeAttaques()
         self.majBoutonEtape()
         self.majBoutonEtape()
 
 
-        self.fenetre.ui.act_deplacement.setCheckable(True)
-        self.fenetre.ui.act_attaqueCac.setCheckable(True)
-        self.fenetre.ui.act_attaqueDist.setCheckable(True)
+#         self.fenetre.ui.act_deplacement.setCheckable(True)
+#         self.fenetre.ui.act_attaqueCac.setCheckable(True)
+#         self.fenetre.ui.act_attaqueDist.setCheckable(True)
 #         self.fenetre.ui.act_attaqueZone.setCheckable(True)
 #         self.fenetre.ui.act_attaqueZone.setCheckable(True)
 
 
         #mise a jour de l'interface d'informations
         #mise a jour de l'interface d'informations
@@ -586,10 +587,6 @@ class Plateau(QGraphicsScene, Materiel):
         effets = ["brule", "eau", "glace", "poison", "aucun"]
         effets = ["brule", "eau", "glace", "poison", "aucun"]
         self.activerMode(Modes.MajCasesEffet, effets[index])
         self.activerMode(Modes.MajCasesEffet, effets[index])
 
 
-    def modeCreationPion(self):
-        """enclenche le mode de creation de pions simples"""
-        self.majMode("pionCreation")
-
     def majModeSupprimerPions(self):
     def majModeSupprimerPions(self):
         """enclenche le mode suppression de pions sur clic gauche (creatures ou decors)"""
         """enclenche le mode suppression de pions sur clic gauche (creatures ou decors)"""
         self.activerMode(Modes.SuppressionPion)
         self.activerMode(Modes.SuppressionPion)
@@ -653,15 +650,6 @@ class Plateau(QGraphicsScene, Materiel):
     def majModeCombatZone(self):
     def majModeCombatZone(self):
         action = choisirAttaqueZone()   
         action = choisirAttaqueZone()   
         self.modeActif.nouvelleAction(action)      
         self.modeActif.nouvelleAction(action)      
-
-#     def majModeCombatLigne(self):
-#         self.modeActif.nouvelleAction(Actions.Ligne)
-#         
-#     def majModeCombatDisque(self):
-#         self.modeActif.nouvelleAction(Actions.Disque)
-#         
-#     def majModeCombatCone(self):
-#         self.modeActif.nouvelleAction(Actions.Cone)
         
         
     def majModeDefinirEntree(self):
     def majModeDefinirEntree(self):
         self.activerMode(Modes.CreationEntreeSortie, "E")
         self.activerMode(Modes.CreationEntreeSortie, "E")
@@ -1055,178 +1043,7 @@ class Plateau(QGraphicsScene, Materiel):
         """centre la vue sur le pion"""
         """centre la vue sur le pion"""
         self.vue().centerOn(self.cases[self.pions[num].position].centreGraphique)
         self.vue().centerOn(self.cases[self.pions[num].position].centreGraphique)
 
 
-#     def coordonneesValides(self, coord):
-#         """les coordonnees entrees en parametre sont elles celles d'une case du plateau"""
-#         return (coord[0] >= 0 and coord[1] >= 0 and coord[0] < self.nbCasesX and coord[1] < self.nbCasesY)
-# 
-#     def lstCoordAdjacentes(self, x, y):
-#         """renvoie la liste des coordonnees adjacentes, !!!! sans condition d'existence sur le plateau !!!!
-#            attention: l'ordre est important"""
-#         if self.formeCases == "H":
-#             if 1 == (x % 2):
-#                 voisins = [(x, y-1), (x+1, y), (x+1, y+1), (x,  y+1), (x-1, y+1), (x-1, y)]
-#             else:
-#                 voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x,  y+1), (x-1, y), (x-1, y-1)]
-#         else:
-#             voisins = [(x, y-1), (x+1, y), (x,   y+1), (x-1, y)]
-#         return voisins      
-
-#     def zone(self, origine, rayon, zR = 0):
-#         """renvoie un dictionnaire representant la liste des coordonnees des cases comprises dans la zone
-#            la zone en question est la liste des cases situees a une distance d des coordonnees d'origine"""
-#         if not self.coordonneesValides(origine) or not rayon >= 0: return {}
-#         if rayon == 0: return {origine: 0}
-#         resultat = {}
-#         aVerifier = [] ; aVerifier2 = [] ; k = 0        
-#         #on part de la premiere case, puis on itere a partir de chaque nouveau depart sur les voisins
-#         aVerifier.append(origine)
-#         while k <= rayon:
-#             for depart in aVerifier:
-#                 for coord in self.cases[depart].voisins:
-#                     if not coord in aVerifier and not coord in aVerifier2 and not coord in resultat:
-#                         aVerifier2.append(coord)      
-#             for elt in aVerifier:
-#                 resultat[elt] = k
-#             aVerifier = aVerifier2 ; aVerifier2 = [] ; k += 1
-#         return resultat
-
-#     def zone3d(self, origine, rayon, zCible=0):
-#         """renvoie les cases de la zone au format (x, y, z)"""
-#         retour = []
-#         zone = self.zone(origine, rayon)
-#         for coord in zone:
-#             x, y = coord
-#             dz = rayon - zone[coord]
-#             for z in range(-dz, dz + 1):
-#                 retour.append( (x, y, (zCible+z) ) )
-#         return retour            
-
-#     def cone(self, coord1, coord2):
-#         """renvoie les coord des cases composant le cone (en 2d)"""
-#         retour = []
-#         x1, y1 = coord1 ; x2, y2 = coord2
-#         if x1 % 2 == 1: y1 += 0.5
-#         if x2 % 2 == 1: y2 += 0.5
-#         
-#         if abs(y2 - y1) - abs(x2 - x1) <= 0 :
-#             #secteur horizontal
-#             angleRef = (y2 - y1) / (x2 - x1)
-#             dist2Ref = ( (x2 - x1)**2 + (y2 - y1)**2 )
-#             for coord in self.cases:
-#                 x, y = coord
-#                 if x % 2 == 1: y += 0.5
-#                 if x != x1:
-#                     angle = (y - y1) / (x - x1)
-#                     if abs( angleRef - angle ) <= 0.5 and ( (x - x1)**2 + (y - y1)**2 ) <= dist2Ref \
-#                     and ( (x - x1) * (x2 - x1) ) > 0:
-#                         retour.append(coord)                
-#         else:
-#             #secteur vertical
-#             angleRef = (x2 - x1) / (y2 - y1)
-#             dist2Ref = ( (x2 - x1)**2 + (y2 - y1)**2 )
-#             for coord in self.cases:
-#                 x, y = coord
-#                 if x % 2 == 1: y += 0.5
-#                 if y != y1:
-#                     angle = (x - x1) / (y - y1)
-#                     if abs( angleRef - angle ) <= 0.5 and ( (x - x1)**2 + (y - y1)**2 ) <= dist2Ref \
-#                     and ( (y - y1) * (y2 - y1) ) > 0:
-#                         retour.append(coord) 
-#         return retour    
-# 
-#     def cone3d(self, coord1, coord2, z1 = 0, z2 = 0):
-#         return self.cone(coord1, coord2)
-   
-
-#     def blocAdjacent(self, listeCases):
-#         """renvoie un bloc de cases adjacentes a partir de la liste en parametre"""
-#         retour = []
-#         tmp1 = [listeCases[0]]; tmp2 = [listeCases[0]]
-#         while len(tmp2) > 0:
-#             tmp2 = []
-#             #on liste les cases voisines qui sont dans la liste et pas encore verifiees
-#             for coord in tmp1:
-#                 for voisine in self.cases[coord].voisins:
-#                     if voisine in listeCases and not voisine in tmp1 and not voisine in tmp2:
-#                         tmp2.append(voisine)
-#             #chacune de ces cases prend le statut de verifiee
-#             for coord in tmp1:
-#                 listeCases.remove(coord)
-#                 retour.append(coord)
-#             tmp1 = tmp2
-#         return retour 
-    
 
 
-#     def polygone(self, x, y):
-#         """renvoie l'objet graphique hexagone de la case de coordonnees (x, y)"""
-#         polygone = QPolygonF()
-#         if self.formeCases == "H":
-#             #si x est impair sur un plateau a cases hexagonales, le y est augmente de 0.5
-#             if 1 == (x % 2):
-#                 y += 0.5
-#             polygone  << QPointF(((x*0.866)+0.2886)*120,  y*120) \
-#                       << QPointF(((x*0.866)+0.866)*120,   y*120) \
-#                       << QPointF(((x*0.866)+1.1547)*120, (y+0.5)*120) \
-#                       << QPointF(((x*0.866)+0.866)*120,  (y+1)*120) \
-#                       << QPointF(((x*0.866)+0.2886)*120, (y+1)*120)  \
-#                       << QPointF( (x*0.866)*120,         (y+0.5)*120)
-#         else:
-#             polygone  << QPointF(x*120,      y*120) \
-#                       << QPointF((x+1)*120,  y*120) \
-#                       << QPointF((x+1)*120,  (y+1)*120) \
-#                       << QPointF(x*120,      (y+1)*120)          
-#         return polygone
-    
-#     def polygoneAgglo(self, listeCases):
-#         """renvoie un polygone contruit par agglomeration des polygones des cases de la liste
-#            les cases doivent etre adjacentes (cases hexagonales ou carrees)"""
-#         segments = []
-#         #on parcourt les faces des polygones des cases, et on ne garde que ceux qui n'ont pas de case 'en face'
-#         for coord in listeCases:
-#             polygone = self.polygone(coord[0], coord[1])
-#             voisins = self.lstCoordAdjacentes(coord[0], coord[1])
-#             
-#             for i in range(0, len(voisins)):
-#                 if not voisins[i] in listeCases:
-#                     j = i+1
-#                     if j > len(voisins) - 1:
-#                         j = 0
-#                     segments.append(QLineF(polygone[i], polygone[j]))
-# 
-#         #on 'accroche' les segments les uns aux autres, dans l'ordre
-#         if not len(segments) > 0: return None
-#         segments2 = [segments[0]]
-#         for segment2 in segments2:
-#             for segment in segments:
-#                 if not QLineF(segment.p1(), segment.p2()) in segments2 and not QLineF(segment.p2(), segment.p1()) in segments2:
-#                     if sqrt((segment.p1().x()-segment2.p2().x())**2+(segment.p1().y()-segment2.p2().y())**2) < 1:
-#                         segments2.append(QLineF(segment.p1(), segment.p2()))
-#                     elif sqrt((segment.p2().x()-segment2.p2().x())**2+(segment.p2().y()-segment2.p2().y())**2) < 1:   
-#                         segments2.append(QLineF(segment.p2(), segment.p1()))
-# 
-#         pointsPolygone = []
-#         premierPoint = segments2[0].p1()
-#         pointsPolygone.append(premierPoint)
-#         for segment in segments2:
-#             pointSuivant = segment.p2()
-#             if pointSuivant != premierPoint:
-#                 pointsPolygone.append(pointSuivant)
-# 
-#         #creation du polygone
-#         polygone = QPolygonF()
-#         for point in pointsPolygone:   
-#             polygone.append(point)   
-# 
-#         return polygone  
-
-#     def coordCentreListeCases(self, listeCases):
-#         """renvoie les coordonnees centrales d'une liste de cases"""
-#         retour = None
-#         if len(listeCases) > 0:
-#             listeTriee = sorted(listeCases)
-#             posMilieu = int(len(listeCases)/2)
-#             retour = listeTriee[posMilieu]
-#         return retour    
 
 
     def coordonneesAuPoint(self, point):
     def coordonneesAuPoint(self, point):
         """renvoie les coordonnees de la case situee au QPointF entre en parametre"""
         """renvoie les coordonnees de la case situee au QPointF entre en parametre"""

+ 0 - 1
lib/commun.py

@@ -155,5 +155,4 @@ def lstLibStatuts():
     """liste des noms des statuts qui peuvent affecter les combattants et decors"""
     """liste des noms des statuts qui peuvent affecter les combattants et decors"""
     return {0: "Etourdi", 1: "Gelé", 2: "Paralysé", 3:"Empoisonné", 4: "Brûlé", 5:"Verrouillé"}
     return {0: "Etourdi", 1: "Gelé", 2: "Paralysé", 3:"Empoisonné", 4: "Brûlé", 5:"Verrouillé"}
 
 
-    
 
 

+ 5 - 0
lib/dmF.py

@@ -1,5 +1,10 @@
 """fonctions generiques DMonde"""
 """fonctions generiques DMonde"""
 
 
+def classe(txt):
+    """retourne une classe a partir d'une string"""
+    return getattr(sys.modules[__name__], txt)
+
+
 def mini(e1, e2):
 def mini(e1, e2):
     """renvoie le plus petit entier"""
     """renvoie le plus petit entier"""
     if e1 <= e2:
     if e1 <= e2:

+ 11 - 5
lib/framePj.py

@@ -34,7 +34,7 @@ class FramePj(QFrame):
 
 
     def signalerModif(self):
     def signalerModif(self):
         """on signale a la fenetre principale que le personnage a ete modifie"""
         """on signale a la fenetre principale que le personnage a ete modifie"""
-        self.emit(SIGNAL("pjModifie()"), self.idPj)
+        self.emit(SIGNAL("pjModifie(int)"), self.idPj)
 
 
     def pj(self):
     def pj(self):
         """retourne le pj represente"""
         """retourne le pj represente"""
@@ -75,10 +75,16 @@ class FramePj(QFrame):
     def majApparence(self):
     def majApparence(self):
         """affiche le fond de la couleur du pion, et epaissit la bordure au survol"""
         """affiche le fond de la couleur du pion, et epaissit la bordure au survol"""
 #         "QFrame {background-color: " + self._pj.couleur.lighter(150).name() + ";" \
 #         "QFrame {background-color: " + self._pj.couleur.lighter(150).name() + ";" \
-        self.setStyleSheet("QFrame {background-color: rgb(249,249,249);" \
-                           "border: 2px solid " + self._pj.couleur.lighter(110).name() + ";" \
-                           "border-radius: 5px;}" \
-                           "QLabel {border-width: 0px;}")
+#         self.setStyleSheet("QFrame {background-color: rgb(249,249,249);" \
+#                            "border: 2px solid " + self._pj.couleur.lighter(110).name() + ";" \
+#                            "border-radius: 5px;}" \
+#                            "QLabel {border-width: 0px;}")
+        couleur = self._pj.couleur
+        while couleur.lightness() < 240:
+            couleur = couleur.lighter(110)
+        r, g, b, alpha = couleur.getRgb()
+        rgb = "{}, {}, {}".format(r, g, b)
+        self.setStyleSheet("QFrame {background-color: rgb("+rgb+");}")
         
         
     def enterEvent(self, event):
     def enterEvent(self, event):
         self.setEnabled(True)
         self.setEnabled(True)

+ 2 - 2
lib/gM.py

@@ -66,8 +66,8 @@ class GestionMateriel(object):
 
 
     def reinitModePlateau(self):
     def reinitModePlateau(self):
         """ramene le mode du plateau au mode creation standard"""
         """ramene le mode du plateau au mode creation standard"""
-        if self.prog.plateau:
-            self.prog.plateau.plateauModeCreation()
+        if self.prog.partie:
+            if self.prog.partie.plateau: self.prog.plateau.plateauModeCreation()
 
 
     def importerTr(self):
     def importerTr(self):
         self.importer(0)
         self.importer(0)

+ 12 - 3
lib/mat.py

@@ -3,6 +3,7 @@
 gestion des materiels: pateaux, maquettes, decors, creatures, terrains, pieges
 gestion des materiels: pateaux, maquettes, decors, creatures, terrains, pieges
 '''
 '''
 import os
 import os
+from time import time
 
 
 from PyQt4.QtCore import QObject
 from PyQt4.QtCore import QObject
 from PyQt4.QtGui import QPixmap
 from PyQt4.QtGui import QPixmap
@@ -10,11 +11,10 @@ from PyQt4.QtGui import QPixmap
 from lib.commun import uid, rep, enregistrerSous, charger
 from lib.commun import uid, rep, enregistrerSous, charger
 
 
 
 
-
 def chargerMat(idM, cible = ""):
 def chargerMat(idM, cible = ""):
     """idM peut etre seulement l'id, ou le chemin complet"""
     """idM peut etre seulement l'id, ou le chemin complet"""
-    if len(cible) == 0: cible = "jeu" 
-    if len(idM) == 10:
+#     if len(cible) == 0: cible = "jeu"
+    if len(idM) == 10 and len(cible) > 0:
         mat = charger(os.path.join(rep(cible), "{}.dm".format(idM)))
         mat = charger(os.path.join(rep(cible), "{}.dm".format(idM)))
     else:
     else:
         mat = charger(idM)
         mat = charger(idM)
@@ -34,6 +34,8 @@ class Materiel(QObject):
             self._type = "ma"
             self._type = "ma"
             self._nom = ""
             self._nom = ""
             self._regle = ""  #regle de jeu associee au materiel
             self._regle = ""  #regle de jeu associee au materiel
+            self._dCr = time() #date de creation
+            self._dMaj = ""   #date de la derniere mise a jour
 
 
     def nom(self):
     def nom(self):
         return self._nom
         return self._nom
@@ -57,5 +59,12 @@ class Materiel(QObject):
         if len(self._idM) == 0: self._idM = uid(self.typ())
         if len(self._idM) == 0: self._idM = uid(self.typ())
         if len(cible) == 0: cible = self._repCible
         if len(cible) == 0: cible = self._repCible
         cible = os.path.join(rep(cible), "{}.dm".format(self._idM))
         cible = os.path.join(rep(cible), "{}.dm".format(self._idM))
+        self._dMaj = time()
         enregistrerSous(self, cible)
         enregistrerSous(self, cible)
 
 
+    def dateCreation(self):
+        return self._dCr
+
+    def dateMaj(self):
+        return self._dMaj
+

+ 1 - 1
lib/rsc.py

@@ -114,7 +114,7 @@ class RImage(Ressource):
     def __init__(self):
     def __init__(self):
         super(RImage, self).__init__()
         super(RImage, self).__init__()
         self._type = "im"
         self._type = "im"
-        self._gommette = None    #les gommettes sont des images crees a partir d'une couleur
+        self._gomette = None    #les gommettes sont des images crees a partir d'une couleur
 
 
     def __setstate__(self, state):
     def __setstate__(self, state):
         """correctif 220915"""
         """correctif 220915"""

+ 20 - 1
lib/test.py

@@ -1,3 +1,22 @@
+import sys
 
 
 
 
-print "%03d" % 10
+class Test(object):
+    def __init__(self):
+        self._msg = "haha"
+        
+    def msg(self):
+        return self._msg
+    
+    
+def classe(txt):
+    try:
+        retour = getattr(sys.modules[__name__], txt)
+    except:
+        retour = None
+    return retour
+    
+t = "Test"
+
+tt = classe(t)()
+print tt.msg()

+ 9 - 1
lib/ui/chargerPartie.ui

@@ -174,6 +174,9 @@
    <attribute name="horizontalHeaderHighlightSections">
    <attribute name="horizontalHeaderHighlightSections">
     <bool>false</bool>
     <bool>false</bool>
    </attribute>
    </attribute>
+   <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
+    <bool>true</bool>
+   </attribute>
    <attribute name="verticalHeaderVisible">
    <attribute name="verticalHeaderVisible">
     <bool>false</bool>
     <bool>false</bool>
    </attribute>
    </attribute>
@@ -195,7 +198,12 @@
    </column>
    </column>
    <column>
    <column>
     <property name="text">
     <property name="text">
-     <string>Date</string>
+     <string>Créé le</string>
+    </property>
+   </column>
+   <column>
+    <property name="text">
+     <string>Modifié le</string>
     </property>
     </property>
    </column>
    </column>
    <column>
    <column>

+ 8 - 3
lib/ui/ecran_chargerPartie.py

@@ -2,7 +2,7 @@
 
 
 # Form implementation generated from reading ui file 'chargerPartie.ui'
 # Form implementation generated from reading ui file 'chargerPartie.ui'
 #
 #
-# Created: Thu Oct 08 16:36:53 2015
+# Created: Fri Oct 09 16:21:22 2015
 #      by: PyQt4 UI code generator 4.10.4
 #      by: PyQt4 UI code generator 4.10.4
 #
 #
 # WARNING! All changes made in this file will be lost!
 # WARNING! All changes made in this file will be lost!
@@ -77,7 +77,7 @@ class Ui_chpt_fenetre(object):
         self.chpt_liste.setGridStyle(QtCore.Qt.DotLine)
         self.chpt_liste.setGridStyle(QtCore.Qt.DotLine)
         self.chpt_liste.setCornerButtonEnabled(True)
         self.chpt_liste.setCornerButtonEnabled(True)
         self.chpt_liste.setObjectName(_fromUtf8("chpt_liste"))
         self.chpt_liste.setObjectName(_fromUtf8("chpt_liste"))
-        self.chpt_liste.setColumnCount(4)
+        self.chpt_liste.setColumnCount(5)
         self.chpt_liste.setRowCount(0)
         self.chpt_liste.setRowCount(0)
         item = QtGui.QTableWidgetItem()
         item = QtGui.QTableWidgetItem()
         self.chpt_liste.setHorizontalHeaderItem(0, item)
         self.chpt_liste.setHorizontalHeaderItem(0, item)
@@ -87,9 +87,12 @@ class Ui_chpt_fenetre(object):
         self.chpt_liste.setHorizontalHeaderItem(2, item)
         self.chpt_liste.setHorizontalHeaderItem(2, item)
         item = QtGui.QTableWidgetItem()
         item = QtGui.QTableWidgetItem()
         self.chpt_liste.setHorizontalHeaderItem(3, item)
         self.chpt_liste.setHorizontalHeaderItem(3, item)
+        item = QtGui.QTableWidgetItem()
+        self.chpt_liste.setHorizontalHeaderItem(4, item)
         self.chpt_liste.horizontalHeader().setVisible(True)
         self.chpt_liste.horizontalHeader().setVisible(True)
         self.chpt_liste.horizontalHeader().setDefaultSectionSize(80)
         self.chpt_liste.horizontalHeader().setDefaultSectionSize(80)
         self.chpt_liste.horizontalHeader().setHighlightSections(False)
         self.chpt_liste.horizontalHeader().setHighlightSections(False)
+        self.chpt_liste.horizontalHeader().setSortIndicatorShown(True)
         self.chpt_liste.verticalHeader().setVisible(False)
         self.chpt_liste.verticalHeader().setVisible(False)
         self.chpt_liste.verticalHeader().setDefaultSectionSize(24)
         self.chpt_liste.verticalHeader().setDefaultSectionSize(24)
         self.chpt_liste.verticalHeader().setHighlightSections(False)
         self.chpt_liste.verticalHeader().setHighlightSections(False)
@@ -131,8 +134,10 @@ class Ui_chpt_fenetre(object):
         item = self.chpt_liste.horizontalHeaderItem(1)
         item = self.chpt_liste.horizontalHeaderItem(1)
         item.setText(_translate("chpt_fenetre", "Nom", None))
         item.setText(_translate("chpt_fenetre", "Nom", None))
         item = self.chpt_liste.horizontalHeaderItem(2)
         item = self.chpt_liste.horizontalHeaderItem(2)
-        item.setText(_translate("chpt_fenetre", "Date", None))
+        item.setText(_translate("chpt_fenetre", "Créé le", None))
         item = self.chpt_liste.horizontalHeaderItem(3)
         item = self.chpt_liste.horizontalHeaderItem(3)
+        item.setText(_translate("chpt_fenetre", "Modifié le", None))
+        item = self.chpt_liste.horizontalHeaderItem(4)
         item.setText(_translate("chpt_fenetre", "date_tri", None))
         item.setText(_translate("chpt_fenetre", "date_tri", None))
         self.chpt_ok.setText(_translate("chpt_fenetre", "Ok", None))
         self.chpt_ok.setText(_translate("chpt_fenetre", "Ok", None))
         self.label_11.setText(_translate("chpt_fenetre", "Charger une partie", None))
         self.label_11.setText(_translate("chpt_fenetre", "Charger une partie", None))

+ 1 - 1
lib/ui/ecran_editionPartie.py

@@ -2,7 +2,7 @@
 
 
 # Form implementation generated from reading ui file 'dial_editerPartie.ui'
 # Form implementation generated from reading ui file 'dial_editerPartie.ui'
 #
 #
-# Created: Thu Oct 08 15:40:27 2015
+# Created: Fri Oct 09 16:16:33 2015
 #      by: PyQt4 UI code generator 4.10.4
 #      by: PyQt4 UI code generator 4.10.4
 #
 #
 # WARNING! All changes made in this file will be lost!
 # WARNING! All changes made in this file will be lost!

+ 9 - 8
lib/ui/ecran_panneauPj.py

@@ -2,7 +2,7 @@
 
 
 # Form implementation generated from reading ui file 'panneauPj.ui'
 # Form implementation generated from reading ui file 'panneauPj.ui'
 #
 #
-# Created: Fri Aug 28 14:11:16 2015
+# Created: Wed Oct 21 17:33:36 2015
 #      by: PyQt4 UI code generator 4.10.4
 #      by: PyQt4 UI code generator 4.10.4
 #
 #
 # WARNING! All changes made in this file will be lost!
 # WARNING! All changes made in this file will be lost!
@@ -30,31 +30,32 @@ class Ui_pj_panneau(object):
         pj_panneau.setMinimumSize(QtCore.QSize(181, 263))
         pj_panneau.setMinimumSize(QtCore.QSize(181, 263))
         pj_panneau.setMaximumSize(QtCore.QSize(181, 263))
         pj_panneau.setMaximumSize(QtCore.QSize(181, 263))
         palette = QtGui.QPalette()
         palette = QtGui.QPalette()
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(249, 249, 249))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
         palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(227, 227, 227))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
         palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(249, 249, 249))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
         palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(227, 227, 227))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
         palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(227, 227, 227))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(227, 227, 227))
         brush.setStyle(QtCore.Qt.SolidPattern)
         brush.setStyle(QtCore.Qt.SolidPattern)
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
         pj_panneau.setPalette(palette)
         pj_panneau.setPalette(palette)
         font = QtGui.QFont()
         font = QtGui.QFont()
         font.setFamily(_fromUtf8("Verdana"))
         font.setFamily(_fromUtf8("Verdana"))
         pj_panneau.setFont(font)
         pj_panneau.setFont(font)
+        pj_panneau.setWindowOpacity(0.8)
         pj_panneau.setAutoFillBackground(True)
         pj_panneau.setAutoFillBackground(True)
         pj_panneau.setFrameShape(QtGui.QFrame.StyledPanel)
         pj_panneau.setFrameShape(QtGui.QFrame.StyledPanel)
-        pj_panneau.setFrameShadow(QtGui.QFrame.Sunken)
+        pj_panneau.setFrameShadow(QtGui.QFrame.Plain)
         self.pj_nom = DmLabel(pj_panneau)
         self.pj_nom = DmLabel(pj_panneau)
         self.pj_nom.setGeometry(QtCore.QRect(10, 110, 161, 51))
         self.pj_nom.setGeometry(QtCore.QRect(10, 110, 161, 51))
         font = QtGui.QFont()
         font = QtGui.QFont()

File diff suppressed because it is too large
+ 327 - 190
lib/ui/ecran_principal.py


+ 102 - 0
lib/ui/panneauPartie.ui

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Frame</class>
+ <widget class="QFrame" name="Frame">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>420</width>
+    <height>35</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>420</width>
+    <height>35</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>420</width>
+    <height>35</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Frame</string>
+  </property>
+  <property name="frameShape">
+   <enum>QFrame::StyledPanel</enum>
+  </property>
+  <property name="frameShadow">
+   <enum>QFrame::Raised</enum>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>3</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="minimumSize">
+      <size>
+       <width>211</width>
+       <height>31</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>nom</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_2">
+     <property name="minimumSize">
+      <size>
+       <width>161</width>
+       <height>31</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>connectes</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QToolButton" name="toolButton">
+     <property name="minimumSize">
+      <size>
+       <width>31</width>
+       <height>31</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="icon">
+      <iconset resource="ressource.qrc">
+       <normaloff>:/interface/16/ressource/flecheDroite_16.png</normaloff>:/interface/16/ressource/flecheDroite_16.png</iconset>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="ressource.qrc"/>
+ </resources>
+ <connections/>
+</ui>

+ 22 - 19
lib/ui/panneauPj.ui

@@ -28,18 +28,18 @@
      <colorrole role="Base">
      <colorrole role="Base">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>249</red>
+        <green>249</green>
+        <blue>249</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
      <colorrole role="Window">
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
@@ -48,18 +48,18 @@
      <colorrole role="Base">
      <colorrole role="Base">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>249</red>
+        <green>249</green>
+        <blue>249</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
      <colorrole role="Window">
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
@@ -68,18 +68,18 @@
      <colorrole role="Base">
      <colorrole role="Base">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
      <colorrole role="Window">
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
        </color>
       </brush>
       </brush>
      </colorrole>
      </colorrole>
@@ -94,6 +94,9 @@
   <property name="windowTitle">
   <property name="windowTitle">
    <string>PJ</string>
    <string>PJ</string>
   </property>
   </property>
+  <property name="windowOpacity">
+   <double>0.800000000000000</double>
+  </property>
   <property name="autoFillBackground">
   <property name="autoFillBackground">
    <bool>true</bool>
    <bool>true</bool>
   </property>
   </property>
@@ -101,7 +104,7 @@
    <enum>QFrame::StyledPanel</enum>
    <enum>QFrame::StyledPanel</enum>
   </property>
   </property>
   <property name="frameShadow">
   <property name="frameShadow">
-   <enum>QFrame::Sunken</enum>
+   <enum>QFrame::Plain</enum>
   </property>
   </property>
   <widget class="DmLabel" name="pj_nom">
   <widget class="DmLabel" name="pj_nom">
    <property name="geometry">
    <property name="geometry">

File diff suppressed because it is too large
+ 556 - 155
lib/ui/principal.ui


BIN
parties/defaut/cbt/plpjyh8Zg5.dm


BIN
parties/defaut/cbt/plpjylZoNc.dm


BIN
parties/defaut/ptpkioCBxb.dm


BIN
parties/defaut/ptpkioFRUD.dm


BIN
parties/defaut/ptpkioFlff.dm


BIN
parties/defaut/ptpkipfahr.dm


BIN
parties/defaut/ptpkjopXtx.dm


+ 4 - 0
parties/ptpkjopXtx/cbt/infos_sauvegarde

@@ -0,0 +1,4 @@
+€}qU
+plpkjoDFoEq}q(UnomqUtestqUdateCreationqGAÕ…óÑó×
+UdateSvgqGAÕ…óÒîffUchapitreqU1UenCoursq	‰Upublicq
+‰us.

BIN
parties/ptpkjopXtx/cbt/plpkjoDFoE.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpc2dM.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpdc3C.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpeHVv.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpf593.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpfJhQ.dm


BIN
parties/ptpkjopXtx/grp/pjpkjpgoi2.dm


BIN
parties/ptpkjopXtx/ptpkjopXtx.dm


BIN
rsc/impjhklLAW.png


BIN
rsc/impjhklLAW.rsc


BIN
rsc/impjhklLD2.rsc


BIN
rsc/impjhklLne.rsc


BIN
rsc/impjhmaVGb.rsc


BIN
rsc/impjhmaVLr.jpg


BIN
rsc/impjhmaVLr.rsc


BIN
rsc/impjhmaVXz.png


BIN
rsc/impjhmaVXz.rsc


BIN
rsc/impjhmaVjX.rsc


+ 0 - 0
rsc/impjhklLne.png → rsc/impkjoLlBP.png


BIN
rsc/impkjoLlBP.rsc


+ 0 - 0
rsc/impjhmaVGb.png → rsc/impkjoLlgl.png


BIN
rsc/impkjoLlgl.rsc


+ 0 - 0
rsc/impjhmaVjX.png → rsc/impkjoLlij.png


BIN
rsc/impkjoLlij.rsc


+ 0 - 0
rsc/impjhklLD2.png → rsc/impkjoLlzn.png


BIN
rsc/impkjoLlzn.rsc


+ 4 - 0
tmp/sepjEmffOc.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepjEmffOcub.

+ 4 - 0
tmp/sepjyibHPg.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepjyibHPgub.

+ 4 - 0
tmp/sepjyof9wx.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepjyof9wxub.

+ 4 - 0
tmp/sepkcj7uxq.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcj7uxqub.

+ 4 - 0
tmp/sepkcjv8ut.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcjv8utub.

+ 4 - 0
tmp/sepkcjvUhf.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcjvUhfub.

+ 4 - 0
tmp/sepkcjvuWS.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcjvuWSub.

+ 4 - 0
tmp/sepkcjwsvd.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcjwsvdub.

+ 4 - 0
tmp/sepkckbbIl.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkckbbIlub.

+ 4 - 0
tmp/sepkckoE4t.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkckoE4tub.

+ 4 - 0
tmp/sepkcpfKxZ.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcpfKxZub.

+ 4 - 0
tmp/sepkcpgrTQ.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcpgrTQub.

+ 4 - 0
tmp/sepkcptidX.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkcptidXub.

+ 4 - 0
tmp/sepkfjrtId.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfjrtIdub.

+ 4 - 0
tmp/sepkfoBpKc.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfoBpKcub.

+ 4 - 0
tmp/sepkfoCUdz.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfoCUdzub.

+ 4 - 0
tmp/sepkfoRPx2.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfoRPx2ub.

+ 4 - 0
tmp/sepkfoXhT6.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfoXhT6ub.

+ 4 - 0
tmp/sepkfoYtOa.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkfoYtOaub.

+ 4 - 0
tmp/sepkikI2s6.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkikI2s6ub.

+ 4 - 0
tmp/sepkinTuDn.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkinTuDnub.

+ 4 - 0
tmp/sepkinUGsj.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkinUGsjub.

+ 4 - 0
tmp/sepkioE8bv.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkioE8bvub.

+ 5 - 0
tmp/sepkjo3Gt2.tmp

@@ -0,0 +1,5 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqU
+ptpkjopXtxqU_idJqhU_idSq	U
+sepkjo3Gt2ub.

+ 5 - 0
tmp/sepkjoWGTP.tmp

@@ -0,0 +1,5 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqU
+ptpkjopXtxqU_idJqhU_idSq	U
+sepkjoWGTPub.

+ 4 - 0
tmp/sepkjorSEv.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkjorSEvub.

+ 4 - 0
tmp/sepkjrFtf5.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkjrFtf5ub.

+ 4 - 0
tmp/sepkjsCUSs.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkjsCUSsub.

+ 4 - 0
tmp/sepkjsL8BV.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkjsL8BVub.

+ 4 - 0
tmp/sepkkqSGWZ.tmp

@@ -0,0 +1,4 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqhU_idJqhU_idSqU
+sepkkqSGWZub.

+ 5 - 0
tmp/sepkno9PH2.tmp

@@ -0,0 +1,5 @@
+€clib.commun
+Session
+q)�q}q(U_idUqUdefautqU_idPqU
+ptpkjopXtxqU_idJqhU_idSq	U
+sepkno9PH2ub.

Some files were not shown because too many files changed in this diff