diff options
| author | Adrien Tétar | 2015-06-08 16:22:23 +0200 |
|---|---|---|
| committer | Adrien Tétar | 2015-06-08 16:22:23 +0200 |
| commit | 6a6fbf1a5a61bbf1bc116a91290469b2eeeedf32 (patch) | |
| tree | 28306838d6c528e6ccf36e5a553ad44938aeec78 | |
| parent | 5878b52e59eb50028c72ed2f142ef5425e10fce3 (diff) | |
| download | trufont-6a6fbf1a5a61bbf1bc116a91290469b2eeeedf32.tar.bz2 | |
glyphView: clamp offCurve to x/y/45º w Shift
| -rw-r--r-- | Lib/defconQt/glyphView.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/Lib/defconQt/glyphView.py b/Lib/defconQt/glyphView.py index 78647f8..faa45cc 100644 --- a/Lib/defconQt/glyphView.py +++ b/Lib/defconQt/glyphView.py @@ -95,7 +95,7 @@ class MainGfxWindow(QMainWindow): self.view.setRenderer(GlyphView.Image) def setWindowTitle(self, title, font=None): - if font is not None: puts = "%s%s%s%s%s" % (title, " – ", font.info.familyName, " ", font.info.styleName) + if font is not None: puts = "%s – %s %s" % (title, font.info.familyName, font.info.styleName) else: puts = title super(MainGfxWindow, self).setWindowTitle(puts) @@ -145,9 +145,21 @@ class OffCurvePointItem(QGraphicsEllipseItem): self._needsUngrab = False def itemChange(self, change, value): - if change == QGraphicsItem.ItemPositionHasChanged: + if change == QGraphicsItem.ItemPositionChange: + if QApplication.keyboardModifiers() & Qt.ShiftModifier: + ax = abs(value.x()) + ay = abs(value.y()) + if ay > ax * 2: + value.setX(0) + elif ay >= ax / 2: + avg = (ax + ay) / 2 + value.setX(copysign(avg, value.x())) + value.setY(copysign(avg, value.y())) + else: + value.setY(0) + elif change == QGraphicsItem.ItemPositionHasChanged: self.parentItem()._CPMoved(value) - return QGraphicsItem.itemChange(self, change, value) + return value def mousePressEvent(self, event): if not self._needsUngrab and self.x() == 0 and self.y() == 0: @@ -188,7 +200,6 @@ class OnCurvePointItem(QGraphicsPathItem): self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) self.setPen(QPen(pointStrokeColor, 1.5)) self.setBrush(QBrush(onCurvePointColor)) - self.setZValue(1) def setPointPath(self): path = QPainterPath() @@ -250,7 +261,6 @@ class OnCurvePointItem(QGraphicsPathItem): pointIndex = self.getPointIndex() self._contour[pointIndex].x = self.pos().x() self._contour[pointIndex].y = self.pos().y() - self._contour.dirty = True children = self.childItems() if children[2].isVisible(): @@ -261,7 +271,8 @@ class OnCurvePointItem(QGraphicsPathItem): nextPos = children[3].pos() self._contour[pointIndex+1].x = self.pos().x()+nextPos.x() self._contour[pointIndex+1].y = self.pos().y()+nextPos.y() - return QGraphicsItem.itemChange(self, change, value) + self._contour.dirty = True + return value def mouseDoubleClickEvent(self, event): self._isSmooth = not self._isSmooth |
