Selaa lähdekoodia

Ecran parties, evolution de l'apparence

olinox14 10 vuotta sitten
vanhempi
commit
0915fb4d47
87 muutettua tiedostoa jossa 1429 lisäystä ja 726 poistoa
  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
 
-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.FenetreEditionPartie import FenetreEditionPartie
@@ -22,15 +22,10 @@ class DMonde(QMainWindow):
     def __init__(self, parent=None):
         """initialisation de la fenetre"""
         super (DMonde, self).__init__()
-#         self.plateau = None
-#         self.util = "Joueur"
         self.profil = Profil()
         self.partie = None
-#         self.regles = ""
-#         self.idPlateauEnCours = ""
-#         self.plateauConnecte = False
-#         self.pjs = []   #liste des idM des personnages du groupe
         self.createWidgets()
+        self.mapper = QSignalMapper()
 
     def createWidgets(self):
         """construction de l'interface"""
@@ -38,27 +33,100 @@ class DMonde(QMainWindow):
         self.ui.setupUi(self)
         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()
 
+    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):
         """operations menees a l'ouverture de la fenetre principale"""
-#         self.majLargeurOnglets()
         self.majAffichage()
-#         self.chargerPartie("")        
 
     def rafraichir(self):
         """fonction utilisee pour forcer le repaint"""
         self.majLargeurOnglets()
 
-    def estMj(self):
-        return True
-
     def majAffichage(self):
         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(2, actif)
         self.ui.dm_panneauCentre.setTabEnabled(3, actif)
@@ -68,18 +136,27 @@ class DMonde(QMainWindow):
         val = (self.ui.dm_panneauCentre.width() - 20) / 4
         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):
         fen = FenetreEditionPartie()
         fen.nouvelle()
         fen.show()
         r = fen.exec_()
         if r == 1:
-            partie = fen.resultat()
-            self.partie = partie
-            self.partie.afficher(self)
-            self.majPartieEnCours()
-            self.majAffichage()
-            
+            self.majPartie( fen.resultat() )
         del fen
 
     def editerPartie(self):
@@ -89,14 +166,13 @@ class DMonde(QMainWindow):
         fen.show()
         r = fen.exec_()
         if r == 1:
-            partie = fen.resultat()
-            self.partie = partie
-            self.partie.majAffichage()
+            self.majPartie( fen.resultat() )
         del fen
         
     def fermerPartie(self):
-        if self.partie:
+        if self.partie != None:
             self.partie.fermer()
+            self.partie = None
             self.majAffichage()
 
     def afficherEcranChargerPartie(self):
@@ -114,17 +190,9 @@ class DMonde(QMainWindow):
         chemin = os.path.join( os.path.join( repParties, "{}\\".format(idPartie) ), "{}.dm".format(idPartie) )
         partie = chargerMat( chemin )
         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):
         self.majLargeurOnglets()
         

BIN
couleurs.PNG


+ 5 - 4
lib/EcranChargerPartie.py

@@ -60,7 +60,7 @@ class EcranChargerPartie(QDialog):
     def majListeChargement(self):
         """remplit ou maj la liste des plateaux sauvegardes"""
         #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():
             self.ui.chpt_liste.setColumnWidth(col, largeurs[col]);
 
@@ -79,14 +79,15 @@ class EcranChargerPartie(QDialog):
                 ligne = self.ui.chpt_liste.nouvelleLigneFin()
                 self.ui.chpt_liste.majTexte(ligne, 0, partie.idM())
                 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():
             self.ui.chpt_liste.sizeHintForColumn(col)
             
         #on trie par date
         self.ui.chpt_liste.setSortingEnabled(True)
-        self.ui.chpt_liste.sortItems(5, 1)
+        self.ui.chpt_liste.sortItems(4, 1)
         self.majAffichage()
         
 

+ 8 - 8
lib/EcranEditionMateriel.py

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

+ 0 - 1
lib/FenetreEditionPartie.py

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

+ 43 - 51
lib/Partie.py

@@ -25,8 +25,6 @@ class Partie(Materiel):
         super(Partie, self).__init__()
         self._type = "pt"
         self._repCible = "parties"
-        self._nom = "Partie"
-        self.dateMaj = ""  #date de la derniere mise a jour
         
         self.prog = None
 #         self.nom = "Partie"
@@ -36,7 +34,7 @@ class Partie(Materiel):
         self.idRg = None    #id des regles utilisees
 
         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._chEC = 1                  #chapitre en cours
@@ -45,13 +43,13 @@ class Partie(Materiel):
 #         self.journal = Journal()
 
     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)
 
     def __setstate__(self, state):
         self.__dict__ = state
         super(Partie, self).__init__()
+        self.plateau = None
 
     def nom(self):
         return self._nom
@@ -59,38 +57,25 @@ class Partie(Materiel):
     def majNom(self, 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):
         """on affiche la partie"""
         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:
             self.prog.ui.cbt_enCours.setEnabled(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.majAffichage()
 
-    def creer(self):
-        self.idP = uid("pr")
-
-    def fermer(self):
-        pass
-    
-    def enregistrer(self):
-        super(Partie, self).enregistrer()
-
     def majAffichage(self):
         """met a jour l'interface avec les informations de la partie"""
         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
 
     ##### groupe ########"
-    
     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)
 
     def pjAjouterAListe(self, pj = None):
-        compteur = len(self.pjs)
+        compteur = len(self.prog.ui.grp_deroulement_layout)
         colonne = (compteur % 3) * 2
         ligne = int(compteur / 3)
-        self.pjs.append(pj.idM())
         panneau = FramePj(compteur)
         if pj:
             panneau.chargerPj(pj)
         panneau.setObjectName(QString("pj_panneau_{}".format(compteur)))
         self.prog.connect(panneau, SIGNAL("pjModifie(int)"), self.pjEnregistrer)
         self.prog.ui.grp_deroulement_layout.addWidget(panneau, ligne, colonne)
-
+        
         ## pour l'espacement entre les panneaux
         w = QWidget()
         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))
         pj = panneau.pj()
         supprimerMat(pj.idM(), "grp")
+        self.pjs.remove(pj.idM())
         self.ui.grp_deroulement_layout.removeWidget(panneau)
 
     def nouveauPj(self):
@@ -149,31 +132,38 @@ class Partie(Materiel):
         fen.exec_()
         pj = fen.mat()
         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):
         panneau = self.prog.findChild(QFrame, "pj_panneau_{}".format(idPj))
         pj = panneau.pj()
         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 ##########
+
     def nouveauPlateau(self):
         """ouvre la fenetre de creation de plateau"""
-        if self._plEc != None: return
+        if self.plateau != None: return
         fenCP = EcranCreerPlateau()
-        fenCP.afficher( Plateau(self.prog) )
+        fenCP.afficher( Plateau() )
         r = fenCP.exec_()
         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)
         del fenCP
         
-        
     def afficherEcranChargerPlateau(self):
         """ouvre la fenetre de chargement de plateau"""
-        if self._plEc != None: return
+        if self.plateau != None: return
         fen = EcranChargerPlateau(self)
         fen.show()
         r = fen.exec_()
@@ -192,21 +182,23 @@ class Partie(Materiel):
             self.chargerPlateau(dernier)
         
     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) 
 
     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"))
     
     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):
         """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):
     """plateau de jeu contenant les cases, decors et pions"""
-    def __init__(self, fenetre, parent=None):
+    def __init__(self, parent=None):
         super(Plateau, self).__init__()
         #parametres et variables
         self._type = "pl"
-        self.fenetre = fenetre
 
         ##partie et infos plateau
         self.chapitre = 0
@@ -103,8 +102,9 @@ class Plateau(QGraphicsScene, Materiel):
     def decors(self):
         return self.pions.combattants()
 
-    def creer(self):
+    def creer(self, fenetre):
         """cree le plateau"""
+        self.fenetre = fenetre
         self.dateCreation = time()
         self.creePar = self.fenetre.profil.pseudo()
         self.hCase = 120  #hauteur d'une case
@@ -212,52 +212,53 @@ class Plateau(QGraphicsScene, Materiel):
         
     def connexions(self):
         """connecte le plateau aux differents widgets de la fenetre principale"""
+        pass
         #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_rayonAttaqueZone, SIGNAL("valueChanged(int)"), self.majRayonZone, Qt.UniqueConnection)
 
@@ -292,9 +293,9 @@ class Plateau(QGraphicsScene, Materiel):
         self.initListeAttaques()
         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)
 
         #mise a jour de l'interface d'informations
@@ -586,10 +587,6 @@ class Plateau(QGraphicsScene, Materiel):
         effets = ["brule", "eau", "glace", "poison", "aucun"]
         self.activerMode(Modes.MajCasesEffet, effets[index])
 
-    def modeCreationPion(self):
-        """enclenche le mode de creation de pions simples"""
-        self.majMode("pionCreation")
-
     def majModeSupprimerPions(self):
         """enclenche le mode suppression de pions sur clic gauche (creatures ou decors)"""
         self.activerMode(Modes.SuppressionPion)
@@ -653,15 +650,6 @@ class Plateau(QGraphicsScene, Materiel):
     def majModeCombatZone(self):
         action = choisirAttaqueZone()   
         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):
         self.activerMode(Modes.CreationEntreeSortie, "E")
@@ -1055,178 +1043,7 @@ class Plateau(QGraphicsScene, Materiel):
         """centre la vue sur le pion"""
         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):
         """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"""
     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"""
 
+def classe(txt):
+    """retourne une classe a partir d'une string"""
+    return getattr(sys.modules[__name__], txt)
+
+
 def mini(e1, e2):
     """renvoie le plus petit entier"""
     if e1 <= e2:

+ 11 - 5
lib/framePj.py

@@ -34,7 +34,7 @@ class FramePj(QFrame):
 
     def signalerModif(self):
         """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):
         """retourne le pj represente"""
@@ -75,10 +75,16 @@ class FramePj(QFrame):
     def majApparence(self):
         """affiche le fond de la couleur du pion, et epaissit la bordure au survol"""
 #         "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):
         self.setEnabled(True)

+ 2 - 2
lib/gM.py

@@ -66,8 +66,8 @@ class GestionMateriel(object):
 
     def reinitModePlateau(self):
         """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):
         self.importer(0)

+ 12 - 3
lib/mat.py

@@ -3,6 +3,7 @@
 gestion des materiels: pateaux, maquettes, decors, creatures, terrains, pieges
 '''
 import os
+from time import time
 
 from PyQt4.QtCore import QObject
 from PyQt4.QtGui import QPixmap
@@ -10,11 +11,10 @@ from PyQt4.QtGui import QPixmap
 from lib.commun import uid, rep, enregistrerSous, charger
 
 
-
 def chargerMat(idM, cible = ""):
     """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)))
     else:
         mat = charger(idM)
@@ -34,6 +34,8 @@ class Materiel(QObject):
             self._type = "ma"
             self._nom = ""
             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):
         return self._nom
@@ -57,5 +59,12 @@ class Materiel(QObject):
         if len(self._idM) == 0: self._idM = uid(self.typ())
         if len(cible) == 0: cible = self._repCible
         cible = os.path.join(rep(cible), "{}.dm".format(self._idM))
+        self._dMaj = time()
         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):
         super(RImage, self).__init__()
         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):
         """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">
     <bool>false</bool>
    </attribute>
+   <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
+    <bool>true</bool>
+   </attribute>
    <attribute name="verticalHeaderVisible">
     <bool>false</bool>
    </attribute>
@@ -195,7 +198,12 @@
    </column>
    <column>
     <property name="text">
-     <string>Date</string>
+     <string>Créé le</string>
+    </property>
+   </column>
+   <column>
+    <property name="text">
+     <string>Modifié le</string>
     </property>
    </column>
    <column>

+ 8 - 3
lib/ui/ecran_chargerPartie.py

@@ -2,7 +2,7 @@
 
 # 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
 #
 # 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.setCornerButtonEnabled(True)
         self.chpt_liste.setObjectName(_fromUtf8("chpt_liste"))
-        self.chpt_liste.setColumnCount(4)
+        self.chpt_liste.setColumnCount(5)
         self.chpt_liste.setRowCount(0)
         item = QtGui.QTableWidgetItem()
         self.chpt_liste.setHorizontalHeaderItem(0, item)
@@ -87,9 +87,12 @@ class Ui_chpt_fenetre(object):
         self.chpt_liste.setHorizontalHeaderItem(2, item)
         item = QtGui.QTableWidgetItem()
         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().setDefaultSectionSize(80)
         self.chpt_liste.horizontalHeader().setHighlightSections(False)
+        self.chpt_liste.horizontalHeader().setSortIndicatorShown(True)
         self.chpt_liste.verticalHeader().setVisible(False)
         self.chpt_liste.verticalHeader().setDefaultSectionSize(24)
         self.chpt_liste.verticalHeader().setHighlightSections(False)
@@ -131,8 +134,10 @@ class Ui_chpt_fenetre(object):
         item = self.chpt_liste.horizontalHeaderItem(1)
         item.setText(_translate("chpt_fenetre", "Nom", None))
         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.setText(_translate("chpt_fenetre", "Modifié le", None))
+        item = self.chpt_liste.horizontalHeaderItem(4)
         item.setText(_translate("chpt_fenetre", "date_tri", None))
         self.chpt_ok.setText(_translate("chpt_fenetre", "Ok", 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'
 #
-# Created: Thu Oct 08 15:40:27 2015
+# Created: Fri Oct 09 16:16:33 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # 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'
 #
-# Created: Fri Aug 28 14:11:16 2015
+# Created: Wed Oct 21 17:33:36 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # 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.setMaximumSize(QtCore.QSize(181, 263))
         palette = QtGui.QPalette()
-        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
+        brush = QtGui.QBrush(QtGui.QColor(249, 249, 249))
         brush.setStyle(QtCore.Qt.SolidPattern)
         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)
         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)
         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)
         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)
         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)
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
         pj_panneau.setPalette(palette)
         font = QtGui.QFont()
         font.setFamily(_fromUtf8("Verdana"))
         pj_panneau.setFont(font)
+        pj_panneau.setWindowOpacity(0.8)
         pj_panneau.setAutoFillBackground(True)
         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.setGeometry(QtCore.QRect(10, 110, 161, 51))
         font = QtGui.QFont()

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 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">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>249</red>
+        <green>249</green>
+        <blue>249</blue>
        </color>
       </brush>
      </colorrole>
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
       </brush>
      </colorrole>
@@ -48,18 +48,18 @@
      <colorrole role="Base">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>249</red>
+        <green>249</green>
+        <blue>249</blue>
        </color>
       </brush>
      </colorrole>
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
       </brush>
      </colorrole>
@@ -68,18 +68,18 @@
      <colorrole role="Base">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
       </brush>
      </colorrole>
      <colorrole role="Window">
       <brush brushstyle="SolidPattern">
        <color alpha="255">
-        <red>255</red>
-        <green>255</green>
-        <blue>255</blue>
+        <red>227</red>
+        <green>227</green>
+        <blue>227</blue>
        </color>
       </brush>
      </colorrole>
@@ -94,6 +94,9 @@
   <property name="windowTitle">
    <string>PJ</string>
   </property>
+  <property name="windowOpacity">
+   <double>0.800000000000000</double>
+  </property>
   <property name="autoFillBackground">
    <bool>true</bool>
   </property>
@@ -101,7 +104,7 @@
    <enum>QFrame::StyledPanel</enum>
   </property>
   <property name="frameShadow">
-   <enum>QFrame::Sunken</enum>
+   <enum>QFrame::Plain</enum>
   </property>
   <widget class="DmLabel" name="pj_nom">
    <property name="geometry">

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 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.

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä