Browse Source

Creation branche pour la mise en place du module Modes

unknown 10 years ago
parent
commit
32db614bd5
2 changed files with 134 additions and 67 deletions
  1. 134 0
      lib/Modes.py
  2. 0 67
      lib/Pinceau.py

+ 134 - 0
lib/Modes.py

@@ -0,0 +1,134 @@
+"""modes d'interaction avec le plateau"""
+
+class MajCases():
+    """mode de mise a jour des cases (terrain, couleur, effet special)"""
+    def __init__(self, plateau):
+        super(MajCases, self).__init__(plateau)
+        self.sourceCurseur = "img\\curseurPinceau.png"
+        self.focus = True
+        self._param = None   #parametre avec lequel on mettra a jour la case
+
+    def activer(self, param):
+        """active le mode"""
+        super(MajCases, self).activer()
+
+    def desactiver(self):
+        """desactive le mode"""
+        self.plateau.pinceau.reinit()
+        super(MajCases, self).desactiver()
+
+    def majParam(self, param):
+        self._param = param
+
+    def clic_case(self, event):
+        pass
+
+    def survolClic_case(self, event):
+        pass
+
+    def finClic_case(self, event):
+        pass
+
+    def toucheClavier(self, event):
+        pass
+
+
+
+
+### --------------------------------------- ####
+    
+class ModeBase():
+    """mode de base: tous les modes heritent de cette classe"""
+    def __init__(self, plateau):
+        self.plateau = plateau
+        #le dragmode est il active sur la QGraphicsView
+        self._activerDragMode = 0
+        #curseur de la QGraphicsView
+        self._sourceCurseur = ""
+        #met le focus sur la QGraphicsView a l'activation
+        self._focus = False 
+
+    def activer(self):
+        """active le mode"""
+        self.activerCurseur()
+        if self.focus:
+            self.plateau.fenetre.ui.cbt_vue.setFocus()
+
+    def desactiver(self):
+        """desactive le mode"""
+        self.desactiverCurseur()
+
+    def activerCurseur(self):
+        self.fenetre.ui.cbt_vue.setDragMode(self._activerDragMode)
+        curseurPix = QPixmap(self._sourceCurseur)
+        curseurPinceau = QCursor(curseurPix, 0, curseurPix.height())
+        self.plateau.fenetre.ui.cbt_vue.setCursor(curseurPinceau)
+
+    def desactiverCurseur(self):
+        self.plateau.fenetre.ui.cbt_vue.setCursor(QCursor(Qt.ArrowCursor))
+
+    ### gestion des evenements souris
+    # clic gauche
+    def clic_combattant(self, event):
+        pass
+
+    def clic_decor(self, event):
+        pass
+
+    def clic_case(self, event):
+        pass
+
+    #double clic gauche
+    def doubleClic_combattant(self, event):
+        pass
+
+    def doubleClic_decor(self, event):
+        pass
+
+    def doubleClic_case(self, event):
+        pass
+
+    # clic gauche relache
+    def finClic_combattant(self, event):
+        pass
+
+    def finClic_decor(self, event):
+        pass
+
+    def finClic_case(self, event):
+        pass
+
+    #survol de la souris (entree)   
+    def survol_combattant(self, event):
+        pass
+
+    def survol_decor(self, event):
+        pass
+
+    def survol_case(self, event):
+        pass
+
+    #survol de la souris (sortie)  
+    def finSurvol_combattant(self, event):
+        pass
+
+    def finSurvol_decor(self, event):
+        pass
+
+    def finSurvol_case(self, event):
+        pass
+
+    #survol de la souris avec clic gauche enfonce (entree)   
+    def survolClic_combattant(self, event):
+        pass
+
+    def survolClic_decor(self, event):
+        pass
+
+    def survolClic_case(self, event):
+        pass
+
+    #clavier
+    def toucheClavier(self, event):
+        pass
+  

+ 0 - 67
lib/Pinceau.py

@@ -200,73 +200,6 @@ class Pinceau():
         return listeCases
 
 
-##    def casesSousForme(self, forme, plein = True):
-##        """renvoie la liste des cases en collision avec un QGraphicsItem en parametre
-##            plein = False: pas le contenu de la forme
-##            epaisseur = renvoie aussi les cases voisines jusqu'a la distance demandee"""
-##        tmp = []
-##        listeCases = []
-##        point1 = None
-##        point2 = None
-##        #point 1 et 2
-##        if forme.__class__.__name__ == "QGraphicsLineItem":
-##            point1 = forme.line().p1()
-##            point2 = forme.line().p2()
-##        elif forme.__class__.__name__ == "QGraphicsRectItem" or forme.__class__.__name__ == "QGraphicsEllipseItem":
-##            point1 = forme.rect().topLeft()
-##            point2 = forme.rect().bottomRight()
-##        else:
-##            point1 = forme.boundingRect().topLeft()
-##            point2 = forme.boundingRect().bottomRight()            
-## 
-##        #preselection des cases (meilleures perf)
-##        preSelection = []
-##        if point1 != None and point2 != None and point1 != point2:
-##            coord1 = self.plateau.coordonneesAuPoint(point1)  
-##            coord2 = self.plateau.coordonneesAuPoint(point2)
-##            if coord1 != None and coord2 != None:
-##                minX = min(coord1[0], coord2[0]) - 1
-##                maxX = max(coord1[0], coord2[0]) + 1
-##                minY = min(coord1[1], coord2[1]) - 1
-##                maxY = max(coord1[1], coord2[1]) + 1
-##                for coord in self.plateau.cases:
-##                    if coord[0] >= minX and coord[0] <= maxX and coord[1] >= minY and coord[1] <= maxY :
-##                        preSelection.append(coord)
-##            else:
-##                preSelection = self.cases       
-##        else:
-##            for coord in self.plateau.cases:
-##                preSelection.append(coord)
-##       
-##        #on liste les cases en collision avec la forme 
-##        for coord in preSelection:
-##            if self.plateau.cases[coord].collidesWithItem(forme, Qt.IntersectsItemShape):
-##                if plein:
-##                    tmp.append(coord) 
-##                else:
-##                    contenu = True
-##                    for i in range(0,len(self.plateau.cases[coord].polygon())):
-##                        if not forme.contains(self.plateau.cases[coord].polygon().at(i)):
-##                            contenu = False
-##                            break
-##                    if contenu == False:
-##                         tmp.append(coord)    
-##        #on applique l'epaisseur du pinceau (lignes ou formes vides seulement) si necessaire
-##        if not plein and self._epaisseur > 0:
-##            for coord in tmp:
-##                zone = self.plateau.zone(coord, self._epaisseur - 1)
-##                for coord2 in zone:
-##                    if not coord2 in listeCases:
-##                        listeCases.append(coord2)
-##        else:
-##            listeCases = tmp
-##        #si la liste est vide, on ajoute l'origine de la forme
-##        if len(listeCases) == 0:
-##            listeCases = [self.plateau.coordonneesAuPoint(point1)]    
-##        return listeCases                
-
-
-