GridViewerCell.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. '''
  2. Created on 26 nov. 2016
  3. @author: olinox
  4. '''
  5. from PyQt5.QtCore import QPointF, pyqtSignal, QObject
  6. from PyQt5.QtGui import QPolygonF, QPen, QBrush, QColor
  7. from PyQt5.QtWidgets import QGraphicsPolygonItem, QGraphicsItem
  8. from core.graphic.cells import polygon
  9. class GridViewerCell(QGraphicsPolygonItem):
  10. def __init__(self, gridViewer, x, y):
  11. super(GridViewerCell, self).__init__()
  12. self.gridViewer = gridViewer
  13. self.x = x
  14. self.y = y
  15. self.selected = False
  16. def generate(self, shape):
  17. points = [QPointF(xp, yp) for xp, yp in polygon(shape, self.x, self.y)]
  18. qpolygon = QPolygonF( points )
  19. self.setPolygon(qpolygon)
  20. pen = QPen()
  21. pen.setWidth(3)
  22. self.setPen(pen)
  23. self.setFlag(QGraphicsItem.ItemIsFocusable)
  24. def select(self):
  25. self.setBrush( QBrush( QColor(200,0,0, 100) ) )
  26. self.selected = True
  27. self.gridViewer.add_to_selection(self.x, self.y)
  28. def unselect(self):
  29. self.setBrush( QBrush( ) )
  30. self.selected = False
  31. self.gridViewer.remove_from_selection(self.x, self.y)
  32. def mousePressEvent(self, *args, **kwargs):
  33. if self.selected:
  34. self.unselect()
  35. else:
  36. self.select()