|
|
@@ -4,8 +4,9 @@ from __future__ import division
|
|
|
import Modes
|
|
|
from PyQt4.QtCore import *
|
|
|
from PyQt4.QtGui import *
|
|
|
+from Case import Case
|
|
|
|
|
|
-class Cache(QGraphicsPolygonItem):
|
|
|
+class Cache(QGraphicsItem):
|
|
|
"""cache place sur le plateau"""
|
|
|
def __init__(self, plateau, numero, parent=None):
|
|
|
"""initialisation de la fenetre"""
|
|
|
@@ -16,6 +17,7 @@ class Cache(QGraphicsPolygonItem):
|
|
|
self.listeCases = []
|
|
|
self._active = False
|
|
|
self._etiquette = None
|
|
|
+ self._listePolygones = []
|
|
|
|
|
|
def __getstate__(self):
|
|
|
"""selectionne les attributs qui seront sauvegardes"""
|
|
|
@@ -31,31 +33,42 @@ class Cache(QGraphicsPolygonItem):
|
|
|
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.setBrush(QColor(0,0,0,255))
|
|
|
- pinceau = QPen(QColor("black"))
|
|
|
- pinceau.setWidth(10)
|
|
|
- self.setPen(pinceau)
|
|
|
- self._etiquette = QGraphicsTextItem(QString.fromUtf8("{}- {}".format(self.numero, self.nom)))
|
|
|
+ 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(50,50,50,180))
|
|
|
+ self._etiquette.setDefaultTextColor(QColor(255, 255, 255, 200))
|
|
|
self._etiquette.setParentItem(self)
|
|
|
- self.setPolygon(self.plateau.polygoneAgglo(self.listeCases))
|
|
|
+ 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._active = True
|
|
|
|
|
|
- def majPolygone(self, listeCases):
|
|
|
+ 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
|
|
|
- self.setPolygon(self.plateau.polygoneAgglo(self.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):
|
|
|
@@ -64,10 +77,11 @@ class Cache(QGraphicsPolygonItem):
|
|
|
def modeChange(self, mode):
|
|
|
if self._active:
|
|
|
if issubclass(mode, Modes.ModeBaseCp):
|
|
|
- transparence = 130
|
|
|
+ transparence = 100
|
|
|
else:
|
|
|
transparence = 255
|
|
|
- self.setBrush(QColor(0,0,0, transparence))
|
|
|
+ for polygone in self._listePolygones:
|
|
|
+ polygone.majTransparence(transparence)
|
|
|
|
|
|
def activer(self, actif):
|
|
|
self._active = actif
|
|
|
@@ -105,15 +119,27 @@ class Cache(QGraphicsPolygonItem):
|
|
|
event.accept()
|
|
|
else:
|
|
|
event.ignore()
|
|
|
- return retour
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ 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)
|
|
|
+ self.setParentItem(self)
|
|
|
+
|
|
|
+ def majTransparence(self, transparence):
|
|
|
+ self.setBrush(QColor(0,0,0,transparence))
|
|
|
+ pinceau = QPen()
|
|
|
+ pinceau.setBrush(QColor(0,0,0,transparence))
|
|
|
+ pinceau.setWidth(1)
|
|
|
+ self.setPen(pinceau)
|
|
|
|