aboutsummaryrefslogtreecommitdiffstats
path: root/Lib/defconQt/glyphView.py
diff options
context:
space:
mode:
authorFelipe Corrêa da Silva Sanches2015-09-28 21:55:16 -0300
committerAdrien Tétar2015-09-29 11:48:05 +0200
commit78dec14200f0af27cf51ebe81864226d1335bb9a (patch)
tree015a289f4bad3a605d8fe0b20f20f49c4def926d /Lib/defconQt/glyphView.py
parentce3690ad8d754c53900ccb9a30bd637737bd65e5 (diff)
downloadtrufont-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.py48
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()