소스 검색

Ecran parties, evolution de l'apparence

olinox14 10 년 전
부모
커밋
0915fb4d47
87개의 변경된 파일1429개의 추가작업 그리고 726개의 파일을 삭제
  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()

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 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">

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 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.

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.