diff options
| author | Felipe Corrêa da Silva Sanches | 2015-09-28 21:55:16 -0300 |
|---|---|---|
| committer | Adrien Tétar | 2015-09-29 11:48:05 +0200 |
| commit | 78dec14200f0af27cf51ebe81864226d1335bb9a (patch) | |
| tree | 015a289f4bad3a605d8fe0b20f20f49c4def926d /Lib/defconQt/glyphView.py | |
| parent | ce3690ad8d754c53900ccb9a30bd637737bd65e5 (diff) | |
| download | trufont-78dec14200f0af27cf51ebe81864226d1335bb9a.tar.bz2 | |
this is work in progress: trying to get the components to render as editable items on the glyph view
Diffstat (limited to 'Lib/defconQt/glyphView.py')
| -rw-r--r-- | Lib/defconQt/glyphView.py | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/Lib/defconQt/glyphView.py b/Lib/defconQt/glyphView.py index 840b317..9a8a9ca 100644 --- a/Lib/defconQt/glyphView.py +++ b/Lib/defconQt/glyphView.py @@ -307,10 +307,41 @@ class OffCurvePointItem(QGraphicsEllipseItem): class ComponentItem(QGraphicsPathItem): def __init__(self, path, component): - super(ComponentItem, self).__init__() - self._component = component - self.setFlag(QGraphicsItem.ItemIsMovable) - self.setFlag(QGraphicsItem.ItemIsSelectable) + super(ComponentItem, self).__init__() + self._pathitem = self.scene().addPath(path, brush=QBrush(componentFillColor)) + self._component = component + self.setFlag(QGraphicsItem.ItemIsMovable) + self.setFlag(QGraphicsItem.ItemIsSelectable) + self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) + #self.setPath(path) + self.setBounds(path) + + def itemChange(self, change, value): + print ("change: %s value: %s" % (change, value)) + if change == QGraphicsItem.ItemPositionHasChanged: + x = self.pos().x() + y = self.pos().y() + printf( "ItemPositionHasChanged: X=%d Y=%d" % (x, y)) + elif change == QGraphicsItem.ItemPositionChange: + x = value.x() + y = value.y() + printf( "ItemPositionChange: X=%d Y=%d" % (x, y)) + + + def setBounds(self, path): + bounds_path = QPainterPath() + region = path.boundingRegion(QTransform()).boundingRect().getCoords() + bounds_path.addRect(region[0], region[1], region[2], region[3]) + self.prepareGeometryChange() + self.setPen(QPen(componentFillColor)) + self.setPath(bounds_path) + + def paint(self, painter, option, widget): + pen = self.pen() + pen.setColor(Qt.green) + self.setPen(pen) + super(ComponentItem, self).paint(painter, option, widget) + class OnCurvePointItem(QGraphicsPathItem): def __init__(self, x, y, isSmooth, contour, point, scale=1, parent=None): @@ -1291,11 +1322,12 @@ class GlyphView(QGraphicsView): scene._outlineItem.setZValue(-995) scene._glyphObject = self._glyph # components - components = self._glyph.getRepresentation("defconQt.OnlyComponentsQPainterPath") scene._componentItems = [] - for path, component in components: - component_path = scene.addPath(path, brush=QBrush(componentFillColor)) - scene._componentItems.append(ComponentItem(component_path, component)) + for path, component in self._glyph.getRepresentation("defconQt.OnlyComponentsQPainterPath"): + ci = ComponentItem(path, component) + scene.addItem(ci) + ci.setZValue(-998) + scene._componentItems.append(ci) def addPoints(self): scene = self.scene() |
