Bläddra i källkod

Edition des caches reconstruite (sous une nouvelle forme) et opérationnelle

unknown 10 år sedan
förälder
incheckning
800c347860
11 ändrade filer med 375 tillägg och 363 borttagningar
  1. 2 131
      lib/Cache.py
  2. 119 7
      lib/Case.py
  3. 6 4
      lib/Modes.py
  4. 89 59
      lib/Plateau.py
  5. 1 0
      lib/ui/dm.py
  6. 141 156
      lib/ui/ecran_principal.py
  7. 17 6
      lib/ui/mainwindow.ui
  8. BIN
      parties/Partie1/svg/0.p
  9. BIN
      parties/Partie1/svg/1.p
  10. BIN
      parties/Partie1/svg/2.p
  11. BIN
      parties/Partie1/svg/infos_sauvegarde

+ 2 - 131
lib/Cache.py

@@ -1,144 +1,15 @@
 #from __future__ import unicode_literals
 # -*- coding: utf-8 -*-
-from __future__ import division
-import Modes
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-from Case import Case
 
-class Cache(QGraphicsItem):
+class Cache():
     """cache place sur le plateau"""
-    def __init__(self, plateau, numero, parent=None):
-        """initialisation de la fenetre"""
-        super (Cache, self).__init__(parent)
-        self.plateau = plateau
+    def __init__(self, numero, parent=None):
         self.numero = numero
         self.nom = ""
         self._actif = False
-        self.listeCases = []
-        self._etiquette = None
-        self._listePolygones = []
-
-    def __getstate__(self):
-        """selectionne les attributs qui seront sauvegardes"""
-        self._actif = False
-        state = {key:value for key, value in self.__dict__.items() if key in ["numero", "nom", "listeCases", "_actif"]}
-        return (state)
-
-    def __setstate__(self, state):
-        """recupere les attributs sauvegardes"""
-        self.__dict__ = state
-
-    def recreer(self, plateau):
-        super (Cache, self).__init__()
-        self._etiquette = None        
-        self.plateau = plateau
-        self._listePolygones = []
-        self.creer()
-        
-    def creer(self):
-        """cree le cache sur la liste de cases en parametre"""
-        self.setFlag(QGraphicsItem.ItemIsFocusable)
-        self.setAcceptHoverEvents(True)
-        self._etiquette = QGraphicsTextItem(QString.fromUtf8("{}".format(self.nom)))
-        self._etiquette.setPos(self.mapFromScene(self.plateau.cases[self.coordCentre()].centreGraphique))
-        police = QFont("Arial",30)
-        police.setBold(True)
-        self._etiquette.setFont(police)
-        self._etiquette.setDefaultTextColor(QColor(255, 255, 255, 200))     
-        self._etiquette.setParentItem(self)
-        self._etiquette.setZValue(10)
-        for coord in self.listeCases:
-            self.ajouterPolygone(Case(self.plateau).polygone(coord[0], coord[1]))
-        self.setZValue(100)
-        self.setFlag(QGraphicsItem.ItemHasNoContents)
-        self.setHandlesChildEvents(True)
-        self.plateau.addItem(self)
-        self._actif = True
-
-    def ajouterPolygone(self, polygone):
-        polygoneGraphique = PolygoneCache(self)
-        polygoneGraphique.creer(polygone)
-        polygoneGraphique.setParentItem(self)
-        self._listePolygones.append(polygoneGraphique)
-            
-    def majForme(self, listeCases):
-        for polygone in self._listePolygones:
-            polygone.setParentItem(None)
-        self._listePolygones = []
-        self.listeCases = listeCases
-        for coord in self.listeCases:
-            self.ajouterPolygone(Case(self.plateau).polygone(coord[0], coord[1]))
-        self._etiquette.setPos(self.mapFromScene(self.plateau.cases[self.coordCentre()].centreGraphique))
-
-    def majEtiquette(self):
-        self._etiquette.setPlainText(QString().fromUtf8(self.nom))
-
-    def modeChange(self, mode):
-        if self._actif:
-            if issubclass(mode, Modes.ModeBaseCp):
-                transparence = 100
-            else:
-                transparence = 255
-            for polygone in self._listePolygones:  
-                polygone.majTransparence(transparence)
 
     def activer(self, actif):
         self._actif = actif
-        self.majAffichage()
 
     def actif(self):
         return self._actif
-
-    def majAffichage(self):
-        self.setVisible(self._actif)
-
-    def coordCentre(self):
-        """renvoie les coordonnees de la case la plus centrale de la liste"""
-        xtot = 0
-        ytot = 0
-        for coord in self.listeCases:
-            xtot += coord[0]
-            ytot += coord[1]
-
-        ecartMin = None
-        coordRetenues = None
-        for coord in self.listeCases:
-            ecartX = abs(xtot - (coord[0] * len(self.listeCases)))
-            ecartY = abs(ytot - (coord[1] * len(self.listeCases)))
-            if not ecartMin or (ecartX + ecartY) < ecartMin:
-                coordRetenues = coord
-                ecartMin = ecartX + ecartY
-        return coordRetenues
-
-    def sceneEvent(self, event):
-        """filtre les evenements souris et clavier
-            si vrai: l'evenement est bloque"""
-        retour = (not self.actif() or issubclass(self.plateau.modeActif.__class__, Modes.ModeBaseCp))
-        if not retour:
-            event.accept()
-        else:
-            event.ignore()
-        return retour
-    
-    def boundingRect(self):
-        return QRectF()
-
-class PolygoneCache(QGraphicsPolygonItem):
-    def __init__(self, cache, parent=None):
-        """initialisation de la fenetre"""
-        super (PolygoneCache, self).__init__(parent)
-        self.cache = cache
-        self.setAcceptHoverEvents(True)
-        
-    def creer(self, polygone):
-        self.setPolygon(polygone)
-        self.majTransparence(255)
-
-    def majTransparence(self, transparence):
-        self.setBrush(QColor(0,0,0,transparence))
-        pinceau = QPen()
-        pinceau.setBrush(QColor(0,0,0,transparence))
-        pinceau.setWidth(10)
-        self.setPen(pinceau)        
-

+ 119 - 7
lib/Case.py

@@ -7,6 +7,7 @@ from PyQt4.QtCore import *
 from PyQt4.QtGui import *
 from outilsSvg import *
 from Terrain import Terrain
+import Modes
 
 class Case(QGraphicsPolygonItem):
     """objet graphique representant une case du plateau"""
@@ -25,7 +26,8 @@ class Case(QGraphicsPolygonItem):
         self.centreGraphique = None
 
         self.occupeePar = {}    #objet: altitudes occupees (sous forme de tuple, ex: (0,1,2) pour une creature occupant les cases d'altitude 0, 1 et 2)
-        self.estCache = False   #est sous un cache place par le MJ (cache le terrain, les decors, les pions aux joueurs...)
+        self.cachesActifs = []       #liste des caches places par le MJ (cache le terrain, les decors, les pions aux joueurs...)
+        self.cachesInactifs = []
 
         #effet sur la case 
         self.effetActif = "" 
@@ -34,12 +36,13 @@ class Case(QGraphicsPolygonItem):
         self.polygoneEffet = None
         self.polygoneAffichageSpecial = None
         self.etiquetteAltitude = None
+        self.polygoneCache = None
         
 
     def __getstate__(self):
         """selectionne les attributs qui seront sauvegardes"""
         state = {key:value for key, value in self.__dict__.items() if key in ["x", "y", "altitude","terrain","bordure","couleur", \
-                                                                              "estCache", "ombre", "effetActif"]}
+                                                                              "ombre", "effetActif", "cachesActifs", "cachesInactifs"]}
 
         return (state)
 
@@ -102,6 +105,11 @@ class Case(QGraphicsPolygonItem):
         self.polygoneCible = QGraphicsPolygonItem(self.polygone(self.x, self.y), parent=self)
         self.polygoneCible.setVisible(False)
         self.polygoneCible.setAcceptHoverEvents(False)
+        
+        #cache
+        self.polygoneCache = PolygoneCache(self)
+        self.polygoneCache.creer()
+        self.majCache()
 
     def recreer(self, plateau):
 ##        self.plateau = plateau  #refPlateau
@@ -110,6 +118,7 @@ class Case(QGraphicsPolygonItem):
         #polygones d'affichage
         self.polygoneEffet = None
         self.polygoneAffichageSpecial = None
+        self.polygoneCache = None
         self.etiquetteAltitude = None
         
         self.creerGraphique()
@@ -346,6 +355,46 @@ class Case(QGraphicsPolygonItem):
             self.polygoneAffichageSpecial.setVisible(False)
 
 
+    #caches
+    def ajouterCache(self, idCache, actif = True):
+        if actif:
+            if not idCache in self.cachesActifs:
+                self.cachesActifs.append(idCache)
+                self.majCache() 
+        else:
+            if not idCache in self.cachesInactifs:
+                self.cachesInactifs.append(idCache)
+        
+    def supprimerCache(self, idCache):
+        if idCache in self.cachesActifs:
+            self.cachesActifs.remove(idCache) 
+            self.majCache() 
+        elif idCache in self.cachesInactifs:
+            self.cachesInactifs.remove(idCache)     
+
+    def activerCache(self, idCache, actif = True):
+        if actif:
+            if idCache in self.cachesInactifs:
+                self.cachesInactifs.remove(idCache)
+                self.cachesActifs.append(idCache)
+                self.majCache()
+        else:
+            if idCache in self.cachesActifs:
+                self.cachesActifs.remove(idCache)
+                self.cachesInactifs.append(idCache)
+                self.majCache()
+                                    
+    def majCache(self):
+        self.polygoneCache.setVisible((len(self.cachesActifs) > 0))
+        if len(self.cachesActifs) > 0:
+            self.polygoneCache.majTransparence() 
+
+    def estCachee(self):
+        """une case cachee ne recoit plus aucun evenement souris ou clavier"""
+        retour = (len(self.cachesActifs) > 0 and \
+                not issubclass(self.plateau.modeActif.__class__, Modes.ModeBaseCp))
+        return retour
+
     #fonctions secondaires
     def couleurDep(self):
         """renvoie une couleur secondaire utilisee pour les champs de deplacements"""
@@ -406,7 +455,6 @@ class Case(QGraphicsPolygonItem):
         return QColor(r_moy, v_moy, b_moy)
 
     ######### evenements souris et clavier    #################
-
     def mousePressEvent(self, event):
         """evenement lors du clic souris"""
         super(Case, self).mousePressEvent(event)
@@ -419,7 +467,8 @@ class Case(QGraphicsPolygonItem):
     def hoverEnterEvent(self, event):
         """met a jour l'affichage de la case au survol de la souris, si un pion est selectionne"""
         super(Case, self).hoverEnterEvent(event)
-        self.plateau.caseSurvol(self.x, self.y)
+        if not self.estCachee():
+            self.plateau.caseSurvol(self.x, self.y)
 
     def hoverLeaveEvent(self, event):
         """met a jour l'affichage de la case au survol de la souris, si un pion est selectionne"""
@@ -494,9 +543,72 @@ class LogoDep(QGraphicsEllipseItem):
         cursor.mergeBlockFormat(f)
         cursor.clearSelection()
         self.txt.setTextCursor(cursor)
+   
 
+class PolygoneCache(QGraphicsPolygonItem):
+    def __init__(self, case, parent=None):
+        """initialisation de la fenetre"""
+        super(PolygoneCache, self).__init__(parent)
+        self.case = case
+        self.case.plateau.fenetre.connect(self.case.plateau.fenetre.ui.cbt_vue, SIGNAL("zoomChange(int)"), self.zoomChange)
+        
+    def creer(self):
+        polygone = self.case.polygone(self.case.x, self.case.y)
+        self.setPolygon(polygone)
+        self.majTransparence()
+        self.setTransformOriginPoint(self.case.centreGraphique)
+        self.setZValue(100)
+        self.setVisible(False)
+        self.setScale(1.05)
+#         self.setAcceptHoverEvents(True)
+#         self.setAcceptDrops(True)
+        self.case.plateau.addItem(self)
+    
+    def afficher(self, actif = True):
+        self.setVisible(actif)    
 
-            
-            
-            
+    def majTransparence(self):
+        self.setBrush(QColor(0,0,0,self.transparence()))
+        pinceau = QPen()
+        pinceau.setBrush(QColor(0,0,0,self.transparence()))
+        pinceau.setWidth(1)
+        self.setPen(pinceau)        
+
+    def transparence(self):
+        if issubclass(self.case.plateau.modeActif.__class__, Modes.ModeBaseCp):
+            retour = 100
+        else:
+            retour = 255
+        return retour
 
+    def activerSurbrillance(self, actif):
+        if actif:
+            couleur = QColor(150,150,150,100)
+        else:
+            couleur = QColor(0,0,0,100)
+        self.setBrush(couleur)
+        
+    def zoomChange(self, nbZoom):
+        """le zoom sur la dmGraphicsView a change, on met a jour le scale de l'objet,
+           on cherche a eviter un phenomene qui fait que lorsque le zoom est lointain, 
+           on devine les couleurs entre les polygones du cache, le rendant a moitie inutile"""
+        s = (1 + 0.01*(10-nbZoom))
+        self.setScale(s)
+        
+    def sceneEvent(self, event):
+        """filtre les evenements souris et clavier
+            si faux: l'evenement est bloque"""
+        autorise = not self.case.estCachee()
+        if not autorise:
+            event.accept()
+        else:
+            event.ignore()
+        return autorise
+
+#     def hoverEnterEvent(self, event):
+#         print "1"
+#         if not self.case.estCachee():
+#             print "2"
+#             self.case.plateau.caseSurvol(self.case.x, self.case.y)
+#         event.accept()    
+        

+ 6 - 4
lib/Modes.py

@@ -177,8 +177,9 @@ class StandardCp(ModeBaseCp):
     def activer(self, param):
         """active le mode"""
         self.plateau.fenetre.ui.cbt_panneauDroite.setCurrentIndex(1)
-        for cache in self.plateau.caches:
-            cache.modeChange(self.__class__)
+        if len(self.plateau.caches) > 0:
+            for coord in self.plateau.cases:
+                self.plateau.cases[coord].majCache()
         super(StandardCp, self).activer()
 
     def clic_combattant(self, num):
@@ -536,8 +537,9 @@ class StandardPi(ModeBasePi):
 
     def activer(self, num):
         self.plateau.fenetre.ui.cbt_panneauDroite.setCurrentIndex(3)
-        for cache in self.plateau.caches:
-            cache.modeChange(self.__class__)
+        if len(self.plateau.caches) > 0:
+            for coord in self.plateau.cases:
+                self.plateau.cases[coord].majCache()
         super(StandardPi, self).activer()
 
     def clic_combattant(self, num):

+ 89 - 59
lib/Plateau.py

@@ -72,7 +72,7 @@ class Plateau(QGraphicsScene):
         self.cases = {}   #dict des cases du plateau   (coordonnées: case)
         self.combattants = {}   #liste de combattants positionnes sur le plateau
         self.decors = {}  #liste des decors places sur le plateau
-        self.caches = []
+        self.caches = {}
         self.listeCasesZonePlacement = []
         self.polygoneZonePlacement = None
         self.entreesSorties = []
@@ -109,6 +109,7 @@ class Plateau(QGraphicsScene):
         self.nbCasesX = nbCasesX   #nb cases en x
         self.nbCasesY = nbCasesY   #nb cases en y
         self.formeCases = formeCases
+        self.modeActif = Modes.ModeBase(self)
         self.gestionCombat = None
         self.initialisationGraphique()
         self.connexions()
@@ -126,6 +127,7 @@ class Plateau(QGraphicsScene):
         self.fenetre = fenetre
         self.gestionCombat = None
         super(Plateau, self).__init__()
+        self.modeActif = Modes.ModeBase(self)
         self.connexions()
         self.initialisationGraphique() 
 
@@ -134,7 +136,7 @@ class Plateau(QGraphicsScene):
             self.cases[coord].recreer(self)
 
         #recreation des caches
-        self.chargeListeCaches()
+        self.initListeCaches()
 
         #recreation des pions
         for numCombattant in self.combattants:
@@ -201,8 +203,8 @@ class Plateau(QGraphicsScene):
         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)
-        self.fenetre.connect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellClicked(int,int)"), self.centrerSurCache, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellChanged(int,int)"), self.majNomCache, Qt.UniqueConnection)
+        self.fenetre.connect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellClicked(int,int)"), self.mettreCacheEnEvidence, Qt.UniqueConnection)
+#         self.fenetre.connect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellChanged(int,int)"), self.majNomCache, Qt.UniqueConnection)
         
         self.fenetre.connect(self.fenetre.ui.cp_editerTerrain, SIGNAL("clicked()"), self.terrainEdit, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_nouveauTerrain, SIGNAL("clicked()"), self.terrainNouveau, Qt.UniqueConnection)
@@ -232,8 +234,6 @@ class Plateau(QGraphicsScene):
         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_formeEllipseVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
-        self.fenetre.connect(self.fenetre.ui.cp_formeEllipsePlein, 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)
 
@@ -263,7 +263,7 @@ class Plateau(QGraphicsScene):
         self.polygoneZonePlacement = None
 
         #gestion du mode d'interaction avec le plateau
-        self.modeActif = Modes.StandardCp(self)
+        
         self.pinceau = Pinceau(self)
         self.proj = ProjectionDep(self)
   
@@ -280,6 +280,7 @@ class Plateau(QGraphicsScene):
         self.majListeTerrains()
         self.majListeCreatures()
         self.majListeDecors()
+        self.initListeCaches()
         
         self.initListeOrdreJeu()
         self.initListeAttaques()
@@ -351,11 +352,11 @@ class Plateau(QGraphicsScene):
         r = self.editionTerrain.exec_()
         if r == 1:
             self.majListeTerrains()
+            self.activerMode(Modes.StandardCp)
  
     def majListeTerrains(self):
         """mise a jour de la liste des terrains depuis la sauvegarde"""
         self.fenetre.ui.cp_listeTerrains.maj()
-        self.activerMode(Modes.StandardCp)
 
     def terrainEdit(self):
         """ouvre la fenetre 'terrains' en mode edition"""
@@ -363,10 +364,12 @@ class Plateau(QGraphicsScene):
         if index > 0:
             terrain = charger("lib\\biblio\\terrain", str(index.text().toUtf8()))
             self.afficheEcranEditionTerrains(terrain)
+            self.activerMode(Modes.StandardCp)
         
     def terrainNouveau(self):
         """ouvre la fenetre 'terrains' en mode edition"""
         self.afficheEcranEditionTerrains()
+        self.activerMode(Modes.StandardCp)
     ###############
 
     ##### affichage de la liste des creatures enregistrees, et fonctions d'acces aux donnees""""     
@@ -379,12 +382,12 @@ class Plateau(QGraphicsScene):
             combattant = self.editionCreature.combattant
             enregistrer(combattant.id, combattant, "lib\\biblio\\combattant")
             self.majListeCreatures()
+            self.activerMode(Modes.StandardCp)
         self.editionCreature = None
         
     def majListeCreatures(self):
         """mise a jour de la liste des creatures depuis la sauvegarde"""
         self.fenetre.ui.cp_listeCreatures.maj()
-        self.activerMode(Modes.StandardCp)
 
     def creatureEdit(self):
         """ouvre la fenetre 'creatures' en mode edition"""
@@ -392,10 +395,12 @@ class Plateau(QGraphicsScene):
         if index > 0:
             creature = charger("lib\\biblio\\combattant", str(index.text().toUtf8()))
             self.afficheEcranEditionCombattants(creature)
+            self.activerMode(Modes.StandardCp)
         
     def creatureNouveau(self):
         """ouvre la fenetre 'creatures' en mode edition"""
         self.afficheEcranEditionCombattants()
+        self.activerMode(Modes.StandardCp)
         
     ###############
 
@@ -409,19 +414,21 @@ class Plateau(QGraphicsScene):
             decor = self.editionDecor.decor
             enregistrer(decor.id, decor, "lib\\biblio\\decor")
             self.majListeDecors()
+            self.activerMode(Modes.StandardCp)
             
     def majListeDecors(self):
         """mise a jour de la liste des decors depuis la sauvegarde"""
         self.fenetre.ui.cp_listeDecors.maj()
-        self.activerMode(Modes.StandardCp)
 
     def decorEdit(self):
         """ouvre la fenetre 'decors' en mode edition"""
         self.afficheEcranEditionDecors(self.fenetre.ui.cp_listeDecors.actuel())
+        self.activerMode(Modes.StandardCp)
         
     def decorNouveau(self):
         """ouvre la fenetre 'decors' en mode edition"""
         self.afficheEcranEditionDecors()
+        self.activerMode(Modes.StandardCp)
         
     ###############
 
@@ -1390,73 +1397,96 @@ class Plateau(QGraphicsScene):
     ###############
 
     ######### caches ###############
-    def chargeListeCaches(self):
-        """charge la liste des caches avec les donnees en memoire"""
-        for cache in self.caches:
-            cache.recreer(self)
-            self.ajouterCacheAuPlateau(cache)
-
     def activerModeCreationCache(self):
         self.activerMode(Modes.EditerCaches)
 
     def activerModeEditionCache(self):
-        index = self.fenetre.ui.cp_listeCaches.currentRow()
-        self.activerMode(Modes.EditerCaches, index)
-        
-    def ajouterCacheAuPlateau(self, cache):
-        """ajoute le cache a la table des caches et sur le plateau"""
-        ligne = self.fenetre.ui.cp_listeCaches.nouvelleLigneFin()
-        if cache.actif():
-            nomImg = "oeilBarre2_32.png"
-        else:
-            nomImg = "oeil_32.png"
-        item = QTableWidgetItem(QIcon(":/interface/32/ressource/{}".format(nomImg)), cache.nom)
-        self.fenetre.ui.cp_listeCaches.setItem(ligne, 0, item)
-        widget = QCheckBox(QString(""))
-        widget.setChecked(cache.actif())
-        widget.setObjectName(QString("afficherCache_{}".format(ligne)))
-        self.connect(widget, SIGNAL("toggled(bool)"), self.majEtatCache)
-        self.fenetre.ui.cp_listeCaches.setCellWidget(ligne, 1, widget)
+        idCache = int(self.fenetre.ui.cp_listeCaches.texte(self.fenetre.ui.cp_listeCaches.currentRow(), 0))
+        self.activerMode(Modes.EditerCaches, idCache)
+
+    def initListeCaches(self):
+        """charge la liste des caches avec les donnees en memoire"""
+        self.fenetre.ui.cp_listeCaches.setColumnWidth(0, 10)
+        self.fenetre.ui.cp_listeCaches.setColumnWidth(1, 100)
+        self.fenetre.ui.cp_listeCaches.setColumnWidth(2, 18)
+        for idCache in self.caches:
+            self.ajouterCacheATable(self.caches[idCache])
 
     def nouveauCache(self, listeCases):
-        numero = len(self.caches)
-        cache = Cache(self, numero)
+        nouvelId = 0
+        if len(self.caches) > 0:
+            nouvelId = max(self.caches) + 1
+        cache = Cache(nouvelId)
         cache.activer(True)
-        cache.nom = "Cache {}".format(len(self.caches) + 1)
-        cache.listeCases = listeCases
-        self.caches.append(cache)
-        cache.creer()
-        self.ajouterCacheAuPlateau(cache)
-
-    def editerFormeCache(self, index, listeCases):
-        """edite le cache en index s'il existe"""
-        self.caches[index].majForme(listeCases)
+        cache.nom = "Cache {}".format(nouvelId + 1)
+        self.caches[nouvelId] = cache
+        self.ajouterCacheATable(cache)
+        for coord in listeCases:
+            self.cases[coord].ajouterCache(nouvelId)        
 
+    def editerFormeCache(self, idCache, listeCases):
+        """edite le cache avec la liste des cases en param"""
+        actif = self.caches[idCache].actif()
+        for coord in self.cases:
+            if coord in listeCases:
+                self.cases[coord].ajouterCache(idCache, actif)
+            else:
+                self.cases[coord].supprimerCache(idCache)
+        
     def majEtatCache(self, actif):
         emetteur = self.sender().objectName()
-        index = int(emetteur.replace("afficherCache_", ""))
-        self.caches[index].activer(actif)
+        idCache = int(emetteur.replace("afficherCache_", ""))
+        self.caches[idCache].activer(actif)
         if actif:
-            nomImg = "oeilBarre_32.png"
+            nomImg = "oeilBarre2_32.png"
         else:
             nomImg = "oeil_32.png"
-        self.fenetre.ui.cp_listeCaches.item(index, 0).setIcon(QIcon(":/interface/32/ressource/{}".format(nomImg)))
+        self.fenetre.ui.cp_listeCaches.item(idCache, 1).setIcon(QIcon(":/interface/32/ressource/{}".format(nomImg)))
+        for coord in self.cases:
+            self.cases[coord].activerCache(idCache, actif)
 
     def majNomCache(self, ligne, colonne):
-        nouveauNom = str(self.fenetre.ui.cp_listeCaches.item(ligne, 0).text().toUtf8())
-        if nouveauNom != self.caches[ligne].nom:
-            self.caches[ligne].nom = nouveauNom
-            self.caches[ligne].majEtiquette()
+        idCache = int(self.fenetre.ui.cp_listeCaches.texte(ligne, 0))
+        nouveauNom = self.fenetre.ui.cp_listeCaches.texte(ligne, 1)
+        if nouveauNom != self.caches[idCache].nom:
+            self.caches[idCache].nom = nouveauNom
 
     def supprimerCache(self):
-        index = self.fenetre.ui.cp_listeCaches.currentRow()
-        self.removeItem(self.caches[index])
-        self.fenetre.ui.cp_listeCaches.removeRow(index)
-        del self.caches[index]
-        
-    def centrerSurCache(self, ligne, colonne):
-        self.vue().centerOn(self.cases[self.caches[ligne].coordCentre()].centreGraphique)
+        ligne = self.fenetre.ui.cp_listeCaches.currentRow()
+        idCache = int(self.fenetre.ui.cp_listeCaches.texte(ligne, 0)) 
+        nouveauNom = self.fenetre.ui.cp_listeCaches.texte(ligne, 1)
+        for coord in self.cases:
+            self.cases[coord].supprimerCache(idCache)
+        self.fenetre.ui.cp_listeCaches.removeRow(idCache)
+        del self.caches[idCache]
+
+    def mettreCacheEnEvidence(self, ligne, colonne):
+        idCache = int(self.fenetre.ui.cp_listeCaches.texte(ligne, 0))
+        for coord in self.cases:
+            if len(self.cases[coord].cachesActifs) > 0:
+                self.cases[coord].polygoneCache.activerSurbrillance((idCache in self.cases[coord].cachesActifs))        
 
+    def ajouterCacheATable(self, cache):
+        """ajoute le cache a la table des caches"""
+        self.fenetre.disconnect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellChanged(int,int)"), self.majNomCache)
+        ligne = self.fenetre.ui.cp_listeCaches.nouvelleLigneFin()
+        if cache.actif():
+            nomImg = "oeilBarre2_32.png"
+        else:
+            nomImg = "oeil_32.png"
+        self.fenetre.ui.cp_listeCaches.majTexte(ligne, 0, str(cache.numero))  
+          
+        item = QTableWidgetItem(QIcon(":/interface/32/ressource/{}".format(nomImg)), cache.nom)
+        item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable)
+        self.fenetre.ui.cp_listeCaches.setItem(ligne, 1, item)
+        
+        widget = QCheckBox(QString(""))
+        widget.setChecked(cache.actif())
+        widget.setObjectName(QString("afficherCache_{}".format(ligne)))
+        self.connect(widget, SIGNAL("toggled(bool)"), self.majEtatCache)
+        self.fenetre.ui.cp_listeCaches.setCellWidget(ligne, 2, widget)
+        
+        self.fenetre.connect(self.fenetre.ui.cp_listeCaches, SIGNAL("cellChanged(int,int)"), self.majNomCache, Qt.UniqueConnection)
     ###############"
         
     ######### gestion des evenements souris et clavier ###############

+ 1 - 0
lib/ui/dm.py

@@ -121,6 +121,7 @@ class DmGraphicsView(QGraphicsView):
         if zoom != 0.00:
            self.scale(zoom, zoom)
            self.centerOn(self.mapToScene(event.pos()))
+           self.emit(SIGNAL("zoomChange(int)"), self.nbZoomActuel)
         event.accept() #pour considerer l'evenement comme resolu, sans ca les barres de defilement reagissent aussi      
 
 

+ 141 - 156
lib/ui/ecran_principal.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'mainwindow.ui'
 #
-# Created: Tue Jun 30 14:59:07 2015
+# Created: Fri Jul 03 16:01:17 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # WARNING! All changes made in this file will be lost!
@@ -539,34 +539,24 @@ class Ui_principal(object):
         self.cP_boiteFormes.setFrameShape(QtGui.QFrame.StyledPanel)
         self.cP_boiteFormes.setFrameShadow(QtGui.QFrame.Raised)
         self.cP_boiteFormes.setObjectName(_fromUtf8("cP_boiteFormes"))
-        self.cp_formeEllipseVide = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeEllipseVide.setGeometry(QtCore.QRect(0, 25, 37, 25))
-        self.cp_formeEllipseVide.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeEllipseVide.setMaximumSize(QtCore.QSize(37, 25))
-        self.cp_formeEllipseVide.setStatusTip(_fromUtf8(""))
-        icon11 = QtGui.QIcon()
-        icon11.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ellipseVide_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeEllipseVide.setIcon(icon11)
-        self.cp_formeEllipseVide.setIconSize(QtCore.QSize(18, 18))
-        self.cp_formeEllipseVide.setObjectName(_fromUtf8("cp_formeEllipseVide"))
         self.cp_formeRectPlein = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeRectPlein.setGeometry(QtCore.QRect(111, 25, 37, 25))
-        self.cp_formeRectPlein.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeRectPlein.setMaximumSize(QtCore.QSize(37, 25))
+        self.cp_formeRectPlein.setGeometry(QtCore.QRect(100, 25, 50, 25))
+        self.cp_formeRectPlein.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formeRectPlein.setMaximumSize(QtCore.QSize(50, 25))
         self.cp_formeRectPlein.setStatusTip(_fromUtf8(""))
-        icon12 = QtGui.QIcon()
-        icon12.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/rectPlein_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeRectPlein.setIcon(icon12)
+        icon11 = QtGui.QIcon()
+        icon11.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/rectPlein_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formeRectPlein.setIcon(icon11)
         self.cp_formeRectPlein.setIconSize(QtCore.QSize(18, 18))
         self.cp_formeRectPlein.setObjectName(_fromUtf8("cp_formeRectPlein"))
         self.cp_formeRectVide = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeRectVide.setGeometry(QtCore.QRect(74, 25, 37, 25))
-        self.cp_formeRectVide.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeRectVide.setMaximumSize(QtCore.QSize(37, 25))
+        self.cp_formeRectVide.setGeometry(QtCore.QRect(50, 25, 50, 25))
+        self.cp_formeRectVide.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formeRectVide.setMaximumSize(QtCore.QSize(50, 25))
         self.cp_formeRectVide.setStatusTip(_fromUtf8(""))
-        icon13 = QtGui.QIcon()
-        icon13.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/rectVide_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeRectVide.setIcon(icon13)
+        icon12 = QtGui.QIcon()
+        icon12.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/rectVide_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formeRectVide.setIcon(icon12)
         self.cp_formeRectVide.setIconSize(QtCore.QSize(18, 18))
         self.cp_formeRectVide.setObjectName(_fromUtf8("cp_formeRectVide"))
         self.cp_valeurEpaisseurPinceau = DmLabel(self.cP_boiteFormes)
@@ -581,43 +571,33 @@ class Ui_principal(object):
         self.cp_valeurEpaisseurPinceau.setAlignment(QtCore.Qt.AlignCenter)
         self.cp_valeurEpaisseurPinceau.setObjectName(_fromUtf8("cp_valeurEpaisseurPinceau"))
         self.cp_formeLigneOrientee = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeLigneOrientee.setGeometry(QtCore.QRect(74, 0, 37, 25))
-        self.cp_formeLigneOrientee.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeLigneOrientee.setMaximumSize(QtCore.QSize(37, 25))
+        self.cp_formeLigneOrientee.setGeometry(QtCore.QRect(100, 0, 50, 25))
+        self.cp_formeLigneOrientee.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formeLigneOrientee.setMaximumSize(QtCore.QSize(50, 25))
         self.cp_formeLigneOrientee.setStatusTip(_fromUtf8(""))
-        icon14 = QtGui.QIcon()
-        icon14.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ligneOrientee_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeLigneOrientee.setIcon(icon14)
+        icon13 = QtGui.QIcon()
+        icon13.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ligneOrientee_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formeLigneOrientee.setIcon(icon13)
         self.cp_formeLigneOrientee.setIconSize(QtCore.QSize(18, 18))
         self.cp_formeLigneOrientee.setObjectName(_fromUtf8("cp_formeLigneOrientee"))
         self.cp_formeLigne = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeLigne.setGeometry(QtCore.QRect(37, 0, 37, 25))
-        self.cp_formeLigne.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeLigne.setMaximumSize(QtCore.QSize(37, 25))
-        icon15 = QtGui.QIcon()
-        icon15.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ligne_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeLigne.setIcon(icon15)
+        self.cp_formeLigne.setGeometry(QtCore.QRect(50, 0, 50, 25))
+        self.cp_formeLigne.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formeLigne.setMaximumSize(QtCore.QSize(50, 25))
+        icon14 = QtGui.QIcon()
+        icon14.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ligne_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formeLigne.setIcon(icon14)
         self.cp_formeLigne.setIconSize(QtCore.QSize(18, 18))
         self.cp_formeLigne.setObjectName(_fromUtf8("cp_formeLigne"))
         self.cp_formeSimple = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeSimple.setGeometry(QtCore.QRect(0, 0, 37, 25))
-        self.cp_formeSimple.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeSimple.setMaximumSize(QtCore.QSize(37, 25))
-        icon16 = QtGui.QIcon()
-        icon16.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/pinceau_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeSimple.setIcon(icon16)
+        self.cp_formeSimple.setGeometry(QtCore.QRect(0, 0, 50, 25))
+        self.cp_formeSimple.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formeSimple.setMaximumSize(QtCore.QSize(50, 25))
+        icon15 = QtGui.QIcon()
+        icon15.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/pinceau_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formeSimple.setIcon(icon15)
         self.cp_formeSimple.setIconSize(QtCore.QSize(18, 18))
         self.cp_formeSimple.setObjectName(_fromUtf8("cp_formeSimple"))
-        self.cp_formeEllipsePlein = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formeEllipsePlein.setGeometry(QtCore.QRect(37, 25, 37, 25))
-        self.cp_formeEllipsePlein.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formeEllipsePlein.setMaximumSize(QtCore.QSize(37, 25))
-        self.cp_formeEllipsePlein.setStatusTip(_fromUtf8(""))
-        icon17 = QtGui.QIcon()
-        icon17.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ellipsePleine_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formeEllipsePlein.setIcon(icon17)
-        self.cp_formeEllipsePlein.setIconSize(QtCore.QSize(24, 24))
-        self.cp_formeEllipsePlein.setObjectName(_fromUtf8("cp_formeEllipsePlein"))
         self.cp_epaisseurPinceau = QtGui.QSlider(self.cP_boiteFormes)
         self.cp_epaisseurPinceau.setGeometry(QtCore.QRect(30, 56, 101, 20))
         self.cp_epaisseurPinceau.setMinimumSize(QtCore.QSize(101, 20))
@@ -628,13 +608,13 @@ class Ui_principal(object):
         self.cp_epaisseurPinceau.setOrientation(QtCore.Qt.Horizontal)
         self.cp_epaisseurPinceau.setObjectName(_fromUtf8("cp_epaisseurPinceau"))
         self.cp_formePot = QtGui.QToolButton(self.cP_boiteFormes)
-        self.cp_formePot.setGeometry(QtCore.QRect(111, 0, 37, 25))
-        self.cp_formePot.setMinimumSize(QtCore.QSize(37, 25))
-        self.cp_formePot.setMaximumSize(QtCore.QSize(37, 25))
+        self.cp_formePot.setGeometry(QtCore.QRect(0, 25, 50, 25))
+        self.cp_formePot.setMinimumSize(QtCore.QSize(50, 25))
+        self.cp_formePot.setMaximumSize(QtCore.QSize(50, 25))
         self.cp_formePot.setStatusTip(_fromUtf8(""))
-        icon18 = QtGui.QIcon()
-        icon18.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/potPeinture_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_formePot.setIcon(icon18)
+        icon16 = QtGui.QIcon()
+        icon16.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/potPeinture_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_formePot.setIcon(icon16)
         self.cp_formePot.setIconSize(QtCore.QSize(18, 18))
         self.cp_formePot.setObjectName(_fromUtf8("cp_formePot"))
         self.verticalLayout_3.addWidget(self.cP_boiteFormes)
@@ -684,22 +664,22 @@ class Ui_principal(object):
         self.horizontalLayout_4.addItem(spacerItem4)
         self.cp_nouveauTerrain = QtGui.QToolButton(self.cp_afficherTerrains)
         self.cp_nouveauTerrain.setText(_fromUtf8(""))
-        icon19 = QtGui.QIcon()
-        icon19.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/plus_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_nouveauTerrain.setIcon(icon19)
+        icon17 = QtGui.QIcon()
+        icon17.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/plus_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_nouveauTerrain.setIcon(icon17)
         self.cp_nouveauTerrain.setObjectName(_fromUtf8("cp_nouveauTerrain"))
         self.horizontalLayout_4.addWidget(self.cp_nouveauTerrain)
         self.cp_editerTerrain = QtGui.QToolButton(self.cp_afficherTerrains)
         self.cp_editerTerrain.setText(_fromUtf8(""))
-        icon20 = QtGui.QIcon()
-        icon20.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/editer_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_editerTerrain.setIcon(icon20)
+        icon18 = QtGui.QIcon()
+        icon18.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/editer_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_editerTerrain.setIcon(icon18)
         self.cp_editerTerrain.setObjectName(_fromUtf8("cp_editerTerrain"))
         self.horizontalLayout_4.addWidget(self.cp_editerTerrain)
         self.verticalLayout_4.addLayout(self.horizontalLayout_4)
-        icon21 = QtGui.QIcon()
-        icon21.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/montagne_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_ongletsListes.addTab(self.cp_afficherTerrains, icon21, _fromUtf8(""))
+        icon19 = QtGui.QIcon()
+        icon19.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/montagne_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_ongletsListes.addTab(self.cp_afficherTerrains, icon19, _fromUtf8(""))
         self.cp_afficherDecors = QtGui.QWidget()
         self.cp_afficherDecors.setObjectName(_fromUtf8("cp_afficherDecors"))
         self.verticalLayout_7 = QtGui.QVBoxLayout(self.cp_afficherDecors)
@@ -727,27 +707,27 @@ class Ui_principal(object):
         self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
         self.cp_gommeDecor = QtGui.QToolButton(self.cp_afficherDecors)
         self.cp_gommeDecor.setText(_fromUtf8(""))
-        icon22 = QtGui.QIcon()
-        icon22.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/gomme_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_gommeDecor.setIcon(icon22)
+        icon20 = QtGui.QIcon()
+        icon20.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/gomme_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_gommeDecor.setIcon(icon20)
         self.cp_gommeDecor.setObjectName(_fromUtf8("cp_gommeDecor"))
         self.horizontalLayout_7.addWidget(self.cp_gommeDecor)
         spacerItem5 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
         self.horizontalLayout_7.addItem(spacerItem5)
         self.cp_nouveauDecor = QtGui.QToolButton(self.cp_afficherDecors)
         self.cp_nouveauDecor.setText(_fromUtf8(""))
-        self.cp_nouveauDecor.setIcon(icon19)
+        self.cp_nouveauDecor.setIcon(icon17)
         self.cp_nouveauDecor.setObjectName(_fromUtf8("cp_nouveauDecor"))
         self.horizontalLayout_7.addWidget(self.cp_nouveauDecor)
         self.cp_editerDecor = QtGui.QToolButton(self.cp_afficherDecors)
         self.cp_editerDecor.setText(_fromUtf8(""))
-        self.cp_editerDecor.setIcon(icon20)
+        self.cp_editerDecor.setIcon(icon18)
         self.cp_editerDecor.setObjectName(_fromUtf8("cp_editerDecor"))
         self.horizontalLayout_7.addWidget(self.cp_editerDecor)
         self.verticalLayout_7.addLayout(self.horizontalLayout_7)
-        icon23 = QtGui.QIcon()
-        icon23.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/decor_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_ongletsListes.addTab(self.cp_afficherDecors, icon23, _fromUtf8(""))
+        icon21 = QtGui.QIcon()
+        icon21.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/decor_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_ongletsListes.addTab(self.cp_afficherDecors, icon21, _fromUtf8(""))
         self.cp_afficherCreatures = QtGui.QWidget()
         self.cp_afficherCreatures.setObjectName(_fromUtf8("cp_afficherCreatures"))
         self.verticalLayout_6 = QtGui.QVBoxLayout(self.cp_afficherCreatures)
@@ -775,25 +755,25 @@ class Ui_principal(object):
         self.horizontalLayout_8.setObjectName(_fromUtf8("horizontalLayout_8"))
         self.cp_gommeCombattant = QtGui.QToolButton(self.cp_afficherCreatures)
         self.cp_gommeCombattant.setText(_fromUtf8(""))
-        self.cp_gommeCombattant.setIcon(icon22)
+        self.cp_gommeCombattant.setIcon(icon20)
         self.cp_gommeCombattant.setObjectName(_fromUtf8("cp_gommeCombattant"))
         self.horizontalLayout_8.addWidget(self.cp_gommeCombattant)
         spacerItem6 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
         self.horizontalLayout_8.addItem(spacerItem6)
         self.cp_nouveauCombattant = QtGui.QToolButton(self.cp_afficherCreatures)
         self.cp_nouveauCombattant.setText(_fromUtf8(""))
-        self.cp_nouveauCombattant.setIcon(icon19)
+        self.cp_nouveauCombattant.setIcon(icon17)
         self.cp_nouveauCombattant.setObjectName(_fromUtf8("cp_nouveauCombattant"))
         self.horizontalLayout_8.addWidget(self.cp_nouveauCombattant)
         self.cp_editerCombattant = QtGui.QToolButton(self.cp_afficherCreatures)
         self.cp_editerCombattant.setText(_fromUtf8(""))
-        self.cp_editerCombattant.setIcon(icon20)
+        self.cp_editerCombattant.setIcon(icon18)
         self.cp_editerCombattant.setObjectName(_fromUtf8("cp_editerCombattant"))
         self.horizontalLayout_8.addWidget(self.cp_editerCombattant)
         self.verticalLayout_6.addLayout(self.horizontalLayout_8)
-        icon24 = QtGui.QIcon()
-        icon24.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/creature_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_ongletsListes.addTab(self.cp_afficherCreatures, icon24, _fromUtf8(""))
+        icon22 = QtGui.QIcon()
+        icon22.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/creature_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_ongletsListes.addTab(self.cp_afficherCreatures, icon22, _fromUtf8(""))
         self.cp_afficherCaches = QtGui.QWidget()
         self.cp_afficherCaches.setObjectName(_fromUtf8("cp_afficherCaches"))
         self.verticalLayout_5 = QtGui.QVBoxLayout(self.cp_afficherCaches)
@@ -812,17 +792,21 @@ class Ui_principal(object):
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
         self.cp_listeCaches.setPalette(palette)
         self.cp_listeCaches.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
-        self.cp_listeCaches.setEditTriggers(QtGui.QAbstractItemView.SelectedClicked)
+        self.cp_listeCaches.setEditTriggers(QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.SelectedClicked)
+        self.cp_listeCaches.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
+        self.cp_listeCaches.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
         self.cp_listeCaches.setCornerButtonEnabled(False)
         self.cp_listeCaches.setObjectName(_fromUtf8("cp_listeCaches"))
-        self.cp_listeCaches.setColumnCount(2)
+        self.cp_listeCaches.setColumnCount(3)
         self.cp_listeCaches.setRowCount(0)
         item = QtGui.QTableWidgetItem()
         self.cp_listeCaches.setHorizontalHeaderItem(0, item)
         item = QtGui.QTableWidgetItem()
         self.cp_listeCaches.setHorizontalHeaderItem(1, item)
+        item = QtGui.QTableWidgetItem()
+        self.cp_listeCaches.setHorizontalHeaderItem(2, item)
         self.cp_listeCaches.horizontalHeader().setVisible(False)
-        self.cp_listeCaches.horizontalHeader().setDefaultSectionSize(105)
+        self.cp_listeCaches.horizontalHeader().setHighlightSections(False)
         self.cp_listeCaches.verticalHeader().setVisible(False)
         self.cp_listeCaches.verticalHeader().setDefaultSectionSize(45)
         self.verticalLayout_5.addWidget(self.cp_listeCaches)
@@ -831,27 +815,27 @@ class Ui_principal(object):
         self.horizontalLayout_9.setObjectName(_fromUtf8("horizontalLayout_9"))
         self.cp_supprimerCache = QtGui.QToolButton(self.cp_afficherCaches)
         self.cp_supprimerCache.setText(_fromUtf8(""))
-        icon25 = QtGui.QIcon()
-        icon25.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/corbeille_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_supprimerCache.setIcon(icon25)
+        icon23 = QtGui.QIcon()
+        icon23.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/corbeille_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_supprimerCache.setIcon(icon23)
         self.cp_supprimerCache.setObjectName(_fromUtf8("cp_supprimerCache"))
         self.horizontalLayout_9.addWidget(self.cp_supprimerCache)
         spacerItem7 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
         self.horizontalLayout_9.addItem(spacerItem7)
         self.cp_nouveauCache = QtGui.QToolButton(self.cp_afficherCaches)
         self.cp_nouveauCache.setText(_fromUtf8(""))
-        self.cp_nouveauCache.setIcon(icon19)
+        self.cp_nouveauCache.setIcon(icon17)
         self.cp_nouveauCache.setObjectName(_fromUtf8("cp_nouveauCache"))
         self.horizontalLayout_9.addWidget(self.cp_nouveauCache)
         self.cp_editerCache = QtGui.QToolButton(self.cp_afficherCaches)
         self.cp_editerCache.setText(_fromUtf8(""))
-        self.cp_editerCache.setIcon(icon20)
+        self.cp_editerCache.setIcon(icon18)
         self.cp_editerCache.setObjectName(_fromUtf8("cp_editerCache"))
         self.horizontalLayout_9.addWidget(self.cp_editerCache)
         self.verticalLayout_5.addLayout(self.horizontalLayout_9)
-        icon26 = QtGui.QIcon()
-        icon26.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/mainCache_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_ongletsListes.addTab(self.cp_afficherCaches, icon26, _fromUtf8(""))
+        icon24 = QtGui.QIcon()
+        icon24.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/mainCache_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_ongletsListes.addTab(self.cp_afficherCaches, icon24, _fromUtf8(""))
         self.verticalLayout_3.addWidget(self.cp_ongletsListes)
         self.creationPlateau_sousPanneauBas = QtGui.QFrame(self.cp_panneau)
         self.creationPlateau_sousPanneauBas.setMinimumSize(QtCore.QSize(154, 81))
@@ -864,62 +848,63 @@ class Ui_principal(object):
         self.cp_placerEntree = QtGui.QToolButton(self.creationPlateau_sousPanneauBas)
         self.cp_placerEntree.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_placerEntree.setMaximumSize(QtCore.QSize(41, 31))
-        icon27 = QtGui.QIcon()
-        icon27.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/entree_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_placerEntree.setIcon(icon27)
+        icon25 = QtGui.QIcon()
+        icon25.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/entree_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_placerEntree.setIcon(icon25)
         self.cp_placerEntree.setObjectName(_fromUtf8("cp_placerEntree"))
         self.gridLayout_3.addWidget(self.cp_placerEntree, 2, 1, 1, 1)
         self.cp_placerSortie = QtGui.QToolButton(self.creationPlateau_sousPanneauBas)
         self.cp_placerSortie.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_placerSortie.setMaximumSize(QtCore.QSize(41, 31))
-        icon28 = QtGui.QIcon()
-        icon28.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/sortie_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_placerSortie.setIcon(icon28)
+        icon26 = QtGui.QIcon()
+        icon26.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/sortie_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_placerSortie.setIcon(icon26)
         self.cp_placerSortie.setObjectName(_fromUtf8("cp_placerSortie"))
         self.gridLayout_3.addWidget(self.cp_placerSortie, 2, 2, 1, 1)
         self.cp_altitudes = QtGui.QToolButton(self.creationPlateau_sousPanneauBas)
         self.cp_altitudes.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_altitudes.setMaximumSize(QtCore.QSize(41, 31))
-        self.cp_altitudes.setIcon(icon21)
+        self.cp_altitudes.setText(_fromUtf8(""))
+        self.cp_altitudes.setIcon(icon19)
         self.cp_altitudes.setObjectName(_fromUtf8("cp_altitudes"))
         self.gridLayout_3.addWidget(self.cp_altitudes, 0, 2, 1, 1)
         self.cp_effets = QtGui.QComboBox(self.creationPlateau_sousPanneauBas)
         self.cp_effets.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_effets.setMaximumSize(QtCore.QSize(41, 31))
         self.cp_effets.setObjectName(_fromUtf8("cp_effets"))
+        icon27 = QtGui.QIcon()
+        icon27.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/feu_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_effets.addItem(icon27, _fromUtf8(""))
+        self.cp_effets.setItemText(0, _fromUtf8(""))
+        icon28 = QtGui.QIcon()
+        icon28.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/eau_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_effets.addItem(icon28, _fromUtf8(""))
+        self.cp_effets.setItemText(1, _fromUtf8(""))
         icon29 = QtGui.QIcon()
-        icon29.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/feu_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        icon29.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/glace_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
         self.cp_effets.addItem(icon29, _fromUtf8(""))
-        self.cp_effets.setItemText(0, _fromUtf8(""))
+        self.cp_effets.setItemText(2, _fromUtf8(""))
         icon30 = QtGui.QIcon()
-        icon30.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/eau_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        icon30.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/poison_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
         self.cp_effets.addItem(icon30, _fromUtf8(""))
-        self.cp_effets.setItemText(1, _fromUtf8(""))
-        icon31 = QtGui.QIcon()
-        icon31.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/glace_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_effets.addItem(icon31, _fromUtf8(""))
-        self.cp_effets.setItemText(2, _fromUtf8(""))
-        icon32 = QtGui.QIcon()
-        icon32.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/poison_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_effets.addItem(icon32, _fromUtf8(""))
         self.cp_effets.setItemText(3, _fromUtf8(""))
-        self.cp_effets.addItem(icon22, _fromUtf8(""))
+        self.cp_effets.addItem(icon20, _fromUtf8(""))
         self.cp_effets.setItemText(4, _fromUtf8(""))
         self.gridLayout_3.addWidget(self.cp_effets, 0, 1, 1, 1)
         self.cp_afficherNotes = QtGui.QToolButton(self.creationPlateau_sousPanneauBas)
         self.cp_afficherNotes.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_afficherNotes.setMaximumSize(QtCore.QSize(41, 31))
-        icon33 = QtGui.QIcon()
-        icon33.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/note_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_afficherNotes.setIcon(icon33)
+        icon31 = QtGui.QIcon()
+        icon31.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/note_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_afficherNotes.setIcon(icon31)
         self.cp_afficherNotes.setObjectName(_fromUtf8("cp_afficherNotes"))
         self.gridLayout_3.addWidget(self.cp_afficherNotes, 0, 4, 1, 1)
         self.cp_defPlacement = QtGui.QToolButton(self.creationPlateau_sousPanneauBas)
         self.cp_defPlacement.setMinimumSize(QtCore.QSize(41, 31))
         self.cp_defPlacement.setMaximumSize(QtCore.QSize(41, 31))
-        icon34 = QtGui.QIcon()
-        icon34.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/depart_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cp_defPlacement.setIcon(icon34)
+        icon32 = QtGui.QIcon()
+        icon32.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/depart_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cp_defPlacement.setIcon(icon32)
         self.cp_defPlacement.setObjectName(_fromUtf8("cp_defPlacement"))
         self.gridLayout_3.addWidget(self.cp_defPlacement, 2, 4, 1, 1)
         self.verticalLayout_3.addWidget(self.creationPlateau_sousPanneauBas)
@@ -981,49 +966,51 @@ class Ui_principal(object):
         self.pi_deplacement.setMinimumSize(QtCore.QSize(0, 0))
         self.pi_deplacement.setMaximumSize(QtCore.QSize(100, 100))
         self.pi_deplacement.setText(_fromUtf8(""))
-        icon35 = QtGui.QIcon()
-        icon35.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/deplacement_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_deplacement.setIcon(icon35)
+        icon33 = QtGui.QIcon()
+        icon33.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/deplacement_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_deplacement.setIcon(icon33)
         self.pi_deplacement.setObjectName(_fromUtf8("pi_deplacement"))
         self.pi_formeAttaqueZone = QtGui.QComboBox(self.pi_actions)
         self.pi_formeAttaqueZone.setGeometry(QtCore.QRect(50, 91, 41, 29))
         self.pi_formeAttaqueZone.setObjectName(_fromUtf8("pi_formeAttaqueZone"))
-        self.pi_formeAttaqueZone.addItem(icon15, _fromUtf8(""))
+        self.pi_formeAttaqueZone.addItem(icon14, _fromUtf8(""))
         self.pi_formeAttaqueZone.setItemText(0, _fromUtf8(""))
-        self.pi_formeAttaqueZone.addItem(icon17, _fromUtf8(""))
+        icon34 = QtGui.QIcon()
+        icon34.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/ellipsePleine_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_formeAttaqueZone.addItem(icon34, _fromUtf8(""))
         self.pi_formeAttaqueZone.setItemText(1, _fromUtf8(""))
-        icon36 = QtGui.QIcon()
-        icon36.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/cone_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_formeAttaqueZone.addItem(icon36, _fromUtf8(""))
+        icon35 = QtGui.QIcon()
+        icon35.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/cone_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_formeAttaqueZone.addItem(icon35, _fromUtf8(""))
         self.pi_formeAttaqueZone.setItemText(2, _fromUtf8(""))
         self.pi_attaqueCac = QtGui.QToolButton(self.pi_actions)
         self.pi_attaqueCac.setGeometry(QtCore.QRect(10, 50, 61, 31))
         self.pi_attaqueCac.setMinimumSize(QtCore.QSize(0, 0))
         self.pi_attaqueCac.setMaximumSize(QtCore.QSize(100, 100))
-        icon37 = QtGui.QIcon()
-        icon37.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/epee_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_attaqueCac.setIcon(icon37)
+        icon36 = QtGui.QIcon()
+        icon36.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/epee_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_attaqueCac.setIcon(icon36)
         self.pi_attaqueCac.setObjectName(_fromUtf8("pi_attaqueCac"))
         self.pi_vol = QtGui.QToolButton(self.pi_actions)
         self.pi_vol.setGeometry(QtCore.QRect(80, 10, 61, 31))
-        icon38 = QtGui.QIcon()
-        icon38.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/oiseau_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_vol.setIcon(icon38)
+        icon37 = QtGui.QIcon()
+        icon37.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/oiseau_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_vol.setIcon(icon37)
         self.pi_vol.setObjectName(_fromUtf8("pi_vol"))
         self.pi_attaqueDist = QtGui.QToolButton(self.pi_actions)
         self.pi_attaqueDist.setGeometry(QtCore.QRect(80, 50, 61, 31))
         self.pi_attaqueDist.setMinimumSize(QtCore.QSize(0, 0))
         self.pi_attaqueDist.setMaximumSize(QtCore.QSize(100, 100))
-        icon39 = QtGui.QIcon()
-        icon39.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/arc_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_attaqueDist.setIcon(icon39)
+        icon38 = QtGui.QIcon()
+        icon38.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/arc_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_attaqueDist.setIcon(icon38)
         self.pi_attaqueDist.setObjectName(_fromUtf8("pi_attaqueDist"))
         self.pi_attaqueZone = QtGui.QToolButton(self.pi_actions)
         self.pi_attaqueZone.setGeometry(QtCore.QRect(10, 90, 31, 31))
         self.pi_attaqueZone.setText(_fromUtf8(""))
-        icon40 = QtGui.QIcon()
-        icon40.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/bombe_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_attaqueZone.setIcon(icon40)
+        icon39 = QtGui.QIcon()
+        icon39.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/bombe_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_attaqueZone.setIcon(icon39)
         self.pi_attaqueZone.setObjectName(_fromUtf8("pi_attaqueZone"))
         self.verticalLayout_10.addWidget(self.pi_actions)
         self.pi_ongletsListes = QtGui.QTabWidget(self.pi_panneau)
@@ -1063,9 +1050,9 @@ class Ui_principal(object):
         self.pi_listeAttributs.horizontalHeader().setDefaultSectionSize(50)
         self.pi_listeAttributs.verticalHeader().setVisible(False)
         self.verticalLayout_9.addWidget(self.pi_listeAttributs)
-        icon41 = QtGui.QIcon()
-        icon41.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/profil_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_ongletsListes.addTab(self.pi_afficherAttributs, icon41, _fromUtf8(""))
+        icon40 = QtGui.QIcon()
+        icon40.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/profil_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_ongletsListes.addTab(self.pi_afficherAttributs, icon40, _fromUtf8(""))
         self.pi_afficherAttaques = QtGui.QWidget()
         self.pi_afficherAttaques.setObjectName(_fromUtf8("pi_afficherAttaques"))
         self.pi_panneauAttaqueEC = QtGui.QGroupBox(self.pi_afficherAttaques)
@@ -1163,14 +1150,14 @@ class Ui_principal(object):
         self.pi_listeAttaques.horizontalHeader().setVisible(False)
         self.pi_listeAttaques.horizontalHeader().setDefaultSectionSize(50)
         self.pi_listeAttaques.verticalHeader().setVisible(False)
-        icon42 = QtGui.QIcon()
-        icon42.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/attaque_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_ongletsListes.addTab(self.pi_afficherAttaques, icon42, _fromUtf8(""))
+        icon41 = QtGui.QIcon()
+        icon41.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/attaque_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_ongletsListes.addTab(self.pi_afficherAttaques, icon41, _fromUtf8(""))
         self.pi_afficherInventaire = QtGui.QWidget()
         self.pi_afficherInventaire.setObjectName(_fromUtf8("pi_afficherInventaire"))
-        icon43 = QtGui.QIcon()
-        icon43.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/sac_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.pi_ongletsListes.addTab(self.pi_afficherInventaire, icon43, _fromUtf8(""))
+        icon42 = QtGui.QIcon()
+        icon42.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/16/ressource/sac_16.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pi_ongletsListes.addTab(self.pi_afficherInventaire, icon42, _fromUtf8(""))
         self.pi_afficherNotes = QtGui.QWidget()
         self.pi_afficherNotes.setObjectName(_fromUtf8("pi_afficherNotes"))
         self.verticalLayout_8 = QtGui.QVBoxLayout(self.pi_afficherNotes)
@@ -1179,7 +1166,7 @@ class Ui_principal(object):
         self.pi_notes.setDocumentTitle(_fromUtf8(""))
         self.pi_notes.setObjectName(_fromUtf8("pi_notes"))
         self.verticalLayout_8.addWidget(self.pi_notes)
-        self.pi_ongletsListes.addTab(self.pi_afficherNotes, icon33, _fromUtf8(""))
+        self.pi_ongletsListes.addTab(self.pi_afficherNotes, icon31, _fromUtf8(""))
         self.verticalLayout_10.addWidget(self.pi_ongletsListes)
         self.pi_finTour = QtGui.QPushButton(self.pi_panneau)
         self.pi_finTour.setMinimumSize(QtCore.QSize(152, 41))
@@ -1197,9 +1184,9 @@ class Ui_principal(object):
         self.cbt_ajouterPj.setGeometry(QtCore.QRect(20, 470, 131, 51))
         self.cbt_ajouterPj.setMinimumSize(QtCore.QSize(34, 24))
         self.cbt_ajouterPj.setMaximumSize(QtCore.QSize(34000, 24000))
-        icon44 = QtGui.QIcon()
-        icon44.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/nouveauJoueur_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.cbt_ajouterPj.setIcon(icon44)
+        icon43 = QtGui.QIcon()
+        icon43.addPixmap(QtGui.QPixmap(_fromUtf8(":/interface/32/ressource/nouveauJoueur_32.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.cbt_ajouterPj.setIcon(icon43)
         self.cbt_ajouterPj.setIconSize(QtCore.QSize(32, 32))
         self.cbt_ajouterPj.setObjectName(_fromUtf8("cbt_ajouterPj"))
         self.cbt_panneauDroite.addWidget(self.cbt_panneauDroite3)
@@ -1388,7 +1375,7 @@ class Ui_principal(object):
         self.grp_nouveauPj.setMinimumSize(QtCore.QSize(50, 50))
         self.grp_nouveauPj.setMaximumSize(QtCore.QSize(50, 50))
         self.grp_nouveauPj.setText(_fromUtf8(""))
-        self.grp_nouveauPj.setIcon(icon44)
+        self.grp_nouveauPj.setIcon(icon43)
         self.grp_nouveauPj.setIconSize(QtCore.QSize(24, 24))
         self.grp_nouveauPj.setObjectName(_fromUtf8("grp_nouveauPj"))
         self.verticalLayout_12.addWidget(self.grp_nouveauPj)
@@ -1629,6 +1616,7 @@ class Ui_principal(object):
 
         self.retranslateUi(principal)
         self.dm_panneauCentre.setCurrentIndex(0)
+        self.cbt_panneauHaut.setCurrentIndex(1)
         self.cbt_panneauGauche.setCurrentIndex(1)
         self.cbt_panneauBas.setCurrentIndex(1)
         self.cbt_panneauDroite.setCurrentIndex(1)
@@ -1702,8 +1690,6 @@ class Ui_principal(object):
         self.cp_pipetteCouleur.setToolTip(_translate("principal", "Ligne", None))
         self.cp_pipetteCouleur.setText(_translate("principal", "...", None))
         self.cp_dialogueCouleurs.setToolTip(_translate("principal", "Autres couleurs", None))
-        self.cp_formeEllipseVide.setToolTip(_translate("principal", "Ellipse (vide)", None))
-        self.cp_formeEllipseVide.setText(_translate("principal", "...", None))
         self.cp_formeRectPlein.setToolTip(_translate("principal", "Rectangle (plein)", None))
         self.cp_formeRectPlein.setText(_translate("principal", "...", None))
         self.cp_formeRectVide.setToolTip(_translate("principal", "Rectangle (vide)", None))
@@ -1715,8 +1701,6 @@ class Ui_principal(object):
         self.cp_formeLigne.setText(_translate("principal", "...", None))
         self.cp_formeSimple.setToolTip(_translate("principal", "Ligne", None))
         self.cp_formeSimple.setText(_translate("principal", "...", None))
-        self.cp_formeEllipsePlein.setToolTip(_translate("principal", "Ellipse (pleine)", None))
-        self.cp_formeEllipsePlein.setText(_translate("principal", "...", None))
         self.cp_formePot.setToolTip(_translate("principal", "Frontière", None))
         self.cp_formePot.setText(_translate("principal", "...", None))
         item = self.cp_listeTerrains.horizontalHeaderItem(0)
@@ -1735,8 +1719,10 @@ class Ui_principal(object):
         item.setText(_translate("principal", "Creature", None))
         self.cp_ongletsListes.setTabToolTip(self.cp_ongletsListes.indexOf(self.cp_afficherCreatures), _translate("principal", "Afficher la liste des créatures", None))
         item = self.cp_listeCaches.horizontalHeaderItem(0)
-        item.setText(_translate("principal", "Nom", None))
+        item.setText(_translate("principal", "id", None))
         item = self.cp_listeCaches.horizontalHeaderItem(1)
+        item.setText(_translate("principal", "Nom", None))
+        item = self.cp_listeCaches.horizontalHeaderItem(2)
         item.setText(_translate("principal", "activer", None))
         self.cp_ongletsListes.setTabToolTip(self.cp_ongletsListes.indexOf(self.cp_afficherCaches), _translate("principal", "Afficher les notes du plateau", None))
         self.cp_placerEntree.setToolTip(_translate("principal", "Placer la/les entrée(s)", None))
@@ -1744,7 +1730,6 @@ class Ui_principal(object):
         self.cp_placerSortie.setToolTip(_translate("principal", "Placer la/les sortie(s)", None))
         self.cp_placerSortie.setText(_translate("principal", "...", None))
         self.cp_altitudes.setToolTip(_translate("principal", "Modifier l\'altitude des cases", None))
-        self.cp_altitudes.setText(_translate("principal", "...", None))
         self.cp_effets.setToolTip(_translate("principal", "Effets spéciaux", None))
         self.cp_afficherNotes.setToolTip(_translate("principal", "Gérer les caches", None))
         self.cp_afficherNotes.setText(_translate("principal", "...", None))

+ 17 - 6
lib/ui/mainwindow.ui

@@ -72,6 +72,9 @@
               <height>28</height>
              </size>
             </property>
+            <property name="currentIndex">
+             <number>1</number>
+            </property>
             <widget class="QWidget" name="page_3"/>
             <widget class="QWidget" name="page_6">
              <layout class="QVBoxLayout" name="verticalLayout_14">
@@ -2411,7 +2414,13 @@
                           <enum>Qt::ScrollBarAlwaysOff</enum>
                          </property>
                          <property name="editTriggers">
-                          <set>QAbstractItemView::SelectedClicked</set>
+                          <set>QAbstractItemView::DoubleClicked|QAbstractItemView::SelectedClicked</set>
+                         </property>
+                         <property name="selectionMode">
+                          <enum>QAbstractItemView::SingleSelection</enum>
+                         </property>
+                         <property name="selectionBehavior">
+                          <enum>QAbstractItemView::SelectRows</enum>
                          </property>
                          <property name="cornerButtonEnabled">
                           <bool>false</bool>
@@ -2419,11 +2428,8 @@
                          <attribute name="horizontalHeaderVisible">
                           <bool>false</bool>
                          </attribute>
-                         <attribute name="horizontalHeaderDefaultSectionSize">
-                          <number>105</number>
-                         </attribute>
-                         <attribute name="horizontalHeaderStretchLastSection">
-                          <bool>true</bool>
+                         <attribute name="horizontalHeaderHighlightSections">
+                          <bool>false</bool>
                          </attribute>
                          <attribute name="verticalHeaderVisible">
                           <bool>false</bool>
@@ -2431,6 +2437,11 @@
                          <attribute name="verticalHeaderDefaultSectionSize">
                           <number>45</number>
                          </attribute>
+                         <column>
+                          <property name="text">
+                           <string>id</string>
+                          </property>
+                         </column>
                          <column>
                           <property name="text">
                            <string>Nom</string>

BIN
parties/Partie1/svg/0.p


BIN
parties/Partie1/svg/1.p


BIN
parties/Partie1/svg/2.p


BIN
parties/Partie1/svg/infos_sauvegarde