GridViewerCell.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 mousePressEvent(self, *args, **kwargs):
  25. if self.selected:
  26. self.setBrush( QBrush( ) )
  27. self.selected = False
  28. self.gridViewer.remove_from_selection(self.x, self.y)
  29. else:
  30. self.setBrush( QBrush( QColor(200,0,0, 100) ) )
  31. self.selected = True
  32. self.gridViewer.add_to_selection(self.x, self.y)
  33. # return QGraphicsPolygonItem.mousePressEvent(self, *args, **kwargs)