| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #from __future__ import unicode_literals
- # -*- coding: utf-8 -*-
- from __future__ import division
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- import Modes
- class EntreeSortie(QGraphicsPolygonItem):
- """marqueur d'entree sortie du plateau"""
- def __init__(self, plateau, entreeSortie = "", parent=None):
- """initialisation de la fenetre"""
- super (EntreeSortie, self).__init__()
- self.plateau = plateau
- self.entreeSortie = entreeSortie
- self.position = QPointF(0,0)
- self.nbRotations = 0
- self.prepareGeometryChange()
- self.setFlag(QGraphicsItem.ItemIsFocusable)
- self.estPositionne = False
-
- def __getstate__(self):
- state = {key:value for key, value in self.__dict__.items() if key in ["entreeSortie", "position", "nbRotations"]}
- return (state)
- def __setstate__(self, state):
- self.__dict__ = state
-
- def creerForme(self):
- """cree le polygone graphique"""
- polygone = QPolygonF()
- polygone << QPointF(60,0) \
- << QPointF(-60,60) \
- << QPointF(-60,-60)
- if self.entreeSortie == "E":
- couleur = QColor("green")
- self.txtEtiquette = "Entree"
- elif self.entreeSortie == "S":
- couleur = QColor("red")
- self.txtEtiquette = "Sortie"
- if couleur.isValid():
- self.setBrush(couleur)
- self.setPen(QPen(couleur))
- self.setPolygon(polygone)
- self.setTransformOriginPoint(0,0)
- self.plateau.addItem(self)
-
- def recreer(self, plateau):
- """recreation et repositionnement dans le cadre d'un chargement du plateau"""
- self.plateau = plateau
- super(EntreeSortie, self).__init__()
- self.creerForme()
- self.setPos(self.position)
- self.setRotation(self.nbRotations*90)
- self.positionner()
- def supprimer(self):
- self.prepareGeometryChange()
- self.plateau.removeItem(self)
- self.plateau = None
- def saisir(self):
- """le polygone va suivre la souris et etre semi transparent
- jusqu'au prochain clic sur le plateau"""
- self.setOpacity(0.5)
- self.estPositionne = False
- def majProjection(self, position = None):
- """met a jour la projection de la position de l'objet"""
- if position != None:
- self.setPos(position)
- self.position = position
- self.setRotation(90*self.nbRotations)
- def positionner(self):
- """la projection est validee, le marqueur est laisse a cette position"""
- self.setOpacity(1)
- self.estPositionne = True
- def mousePressEvent(self, event):
- if event.button() == 1:
- if self.estPositionne:
- self.plateau.modeActif.clic_es(self)
- event.accept()
- else:
- event.ignore()
|