aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/defconQt/glyphView.py35
1 files changed, 18 insertions, 17 deletions
diff --git a/Lib/defconQt/glyphView.py b/Lib/defconQt/glyphView.py
index f7726da..dd78ef9 100644
--- a/Lib/defconQt/glyphView.py
+++ b/Lib/defconQt/glyphView.py
@@ -378,7 +378,7 @@ class ResizeHandleItem(QGraphicsRectItem):
return value
def mouseMoveEvent(self, event):
- self.parentItem()._pixmapResized(event)
+ self.parentItem()._pixmapGeometryChanged(event)
class PixmapItem(QGraphicsPixmapItem):
def __init__(self, x, y, pixmap, parent=None):
@@ -394,27 +394,26 @@ class PixmapItem(QGraphicsPixmapItem):
self._rHeight = rect.height()
handle = ResizeHandleItem(self)
handle.setVisible(False)
+ self._rLine = QLineF(self.x(), self.y(), self._rWidth, self._rHeight)
- def _pixmapResized(self, event):
+ def _pixmapGeometryChanged(self, event):
+ modifiers = event.modifiers()
pos = event.scenePos()
- dy = (pos.y() - self.y()) / self._rHeight
- if event.modifiers() & Qt.ShiftModifier:
- # keep original aspect ratio
- dx = -dy * self._rWidth / self._rHeight
+ if modifiers & Qt.ControlModifier:
+ # rotate
+ curLine = QLineF(self.x(), self.y(), pos.x(), pos.y())
+ self.setRotation(self._rLine.angleTo(curLine))
else:
- dx = (pos.x() - self.x()) / self._rWidth
- #self.prepareGeometryChange()
- #self.setRect(self.x(), self.y(), dx, dy)
- self.setTransform(QTransform().fromScale(dx, dy))
+ # scale
+ dy = (pos.y() - self.y()) / self._rHeight
+ if modifiers & Qt.ShiftModifier:
+ # keep original aspect ratio
+ dx = -dy
+ else:
+ dx = (pos.x() - self.x()) / self._rWidth
+ self.setTransform(QTransform().fromScale(dx, dy))
event.accept()
- def keyPressEvent(self, event):
- if event.key() == Qt.Key_Delete:
- self.scene().removeItem(self)
- event.accept()
- else:
- super(PixmapItem, self).keyPressEvent(event)
-
def itemChange(self, change, value):
if change == QGraphicsItem.ItemSelectedChange:
children = self.childItems()
@@ -478,6 +477,8 @@ class GlyphScene(QGraphicsScene):
for item in self.selectedItems():
if isinstance(item, OnCurvePointItem):
item.delete()
+ elif isinstance(item, PixmapItem):
+ self.removeItem(item)
event.accept()
return
elif modifiers & Qt.ControlModifier and key == Qt.Key_A: