aboutsummaryrefslogtreecommitdiffstats
path: root/Lib/defconQt/glyphView.py
diff options
context:
space:
mode:
authorAdrien Tétar2015-10-12 19:39:58 +0200
committerAdrien Tétar2015-10-12 19:39:58 +0200
commit19aab2d0ad7c546cad6bc31bf4f1ea4b211918bd (patch)
treefff13493dd9a278529f4373cd22bf3d0c5a53441 /Lib/defconQt/glyphView.py
parent36ab3fbd5dddae518ca7a6f2a81116a6182b5ea5 (diff)
downloadtrufont-19aab2d0ad7c546cad6bc31bf4f1ea4b211918bd.tar.bz2
glyphView: allow offCurves deletion
Diffstat (limited to 'Lib/defconQt/glyphView.py')
-rw-r--r--Lib/defconQt/glyphView.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/Lib/defconQt/glyphView.py b/Lib/defconQt/glyphView.py
index 0c80ddd..9a2b91c 100644
--- a/Lib/defconQt/glyphView.py
+++ b/Lib/defconQt/glyphView.py
@@ -312,6 +312,9 @@ class OffCurvePointItem(QGraphicsEllipseItem):
self.setBrush(QBrush(offCurvePointColor))
self._needsUngrab = False
+ def delete(self):
+ self.parentItem()._CPDeleted()
+
def itemChange(self, change, value):
if change == QGraphicsItem.ItemPositionChange:
if self.scene()._integerPlane:
@@ -444,6 +447,20 @@ class OnCurvePointItem(QGraphicsPathItem):
if pt.segmentType is not None: index += 1
return index % len(self._contour.segments)
+ def _CPDeleted(self):
+ pointIndex = self.getPointIndex()
+ children = self.childItems()
+ selected = 1
+ if not (children[1].isVisible() or children[1].isSelected()):
+ selected = 3
+
+ firstSibling = self._contour[pointIndex+selected-2]
+ secondSibling = self._contour[pointIndex+(selected-2)*2]
+ if firstSibling.segmentType is None and secondSibling.segmentType is None:
+ # we have two offCurves, wipe them
+ self._contour.removePoint(firstSibling)
+ self._contour.removePoint(secondSibling)
+
def _CPMoved(self, newValue):
pointIndex = self.getPointIndex()
children = self.childItems()
@@ -851,7 +868,7 @@ class GlyphScene(QGraphicsScene):
for item in self.selectedItems():
if isinstance(item, OnCurvePointItem):
item.delete(not event.modifiers() & Qt.ShiftModifier)
- elif isinstance(item, (AnchorItem, ComponentItem)):
+ elif isinstance(item, (AnchorItem, ComponentItem, OffCurvePointItem)):
item.delete()
elif isinstance(item, PixmapItem):
self.removeItem(item)
@@ -1390,7 +1407,7 @@ class GlyphView(QGraphicsView):
if not scene._blocked:
# TODO: also rewind anchors and components
for item in scene.items():
- if isinstance(item, OnCurvePointItem) or isinstance(item, ComponentItem) or isinstance(item, AnchorItem):
+ if isinstance(item, (OnCurvePointItem, ComponentItem, AnchorItem)):
scene.removeItem(item)
elif isinstance(item, VGuidelinesTextItem):
item.setPos(self._glyph.width, item.y())