EntreeSortie.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. from PyQt4.QtCore import *
  5. from PyQt4.QtGui import *
  6. class EntreeSortie(QGraphicsPolygonItem):
  7. """marqueur d'entree sortie du plateau"""
  8. def __init__(self, plateau, entreeSortie = "", parent=None):
  9. """initialisation de la fenetre"""
  10. super (EntreeSortie, self).__init__()
  11. self.plateau = plateau
  12. self.entreeSortie = entreeSortie
  13. self.position = QPointF(0,0)
  14. self.nbRotations = 0
  15. self.prepareGeometryChange()
  16. self.setFlag(QGraphicsItem.ItemIsFocusable)
  17. def __getstate__(self):
  18. state = {key:value for key, value in self.__dict__.items() if key in ["entreeSortie", "position", "nbRotations"]}
  19. return (state)
  20. def __setstate__(self, state):
  21. self.__dict__ = state
  22. def creerForme(self):
  23. """cree le polygone graphique"""
  24. polygone = QPolygonF()
  25. polygone << QPointF(60,0) \
  26. << QPointF(-60,60) \
  27. << QPointF(-60,-60)
  28. if self.entreeSortie == "E":
  29. couleur = QColor("green")
  30. self.txtEtiquette = "Entree"
  31. elif self.entreeSortie == "S":
  32. couleur = QColor("red")
  33. self.txtEtiquette = "Sortie"
  34. if couleur.isValid():
  35. self.setBrush(couleur)
  36. self.setPen(QPen(couleur))
  37. self.setPolygon(polygone)
  38. self.setOpacity(0.5)
  39. self.setTransformOriginPoint(0,0)
  40. self.plateau.fenetre.ui.vuePlateau.fitInView(self.plateau.sceneRect(), Qt.KeepAspectRatio)
  41. self.plateau.addItem(self)
  42. def majProjection(self, position = None):
  43. """met a jour la projection de la position de l'objet"""
  44. if position != None:
  45. self.setPos(position)
  46. self.position = position
  47. self.setRotation(90*self.nbRotations)
  48. def positionner(self):
  49. """la projection est validee, le marqueur est laisse a cette position"""
  50. self.setOpacity(1)
  51. def recreer(self, plateau):
  52. """recreation et repositionnement dans le cadre d'un chargement du plateau"""
  53. self.plateau = plateau
  54. super(EntreeSortie, self).__init__()
  55. self.creerForme()
  56. self.setPos(self.position)
  57. self.setRotation(self.nbRotations*90)
  58. self.setOpacity(1)
  59. def mousePressEvent(self, event):
  60. event.ignore()
  61. if event.button() == 1:
  62. if self.plateau.modeActif != "placementEntreeSortie":
  63. self.setOpacity(0.5)
  64. self.plateau.modeParam["entreeSortie"] = self
  65. self.plateau.majMode("placementEntreeSortie")
  66. event.accept()