From cd62566e54b4d7f802dd905d3939b10163ac161b Mon Sep 17 00:00:00 2001 From: Mika Fischer Date: Thu, 30 Jun 2011 17:40:12 +0200 Subject: [PATCH] Add support for resizing RectItems using the mouse (closes #15) --- sloth/items/items.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/sloth/items/items.py b/sloth/items/items.py index 0d966da..0300e24 100644 --- a/sloth/items/items.py +++ b/sloth/items/items.py @@ -228,6 +228,10 @@ class RectItem(BaseItem): BaseItem.__init__(self, model_item, parent) self.rect_ = None + self._resize = False + self._resize_start = None + self._resize_start_rect = None + self._updateRect(self._dataToRect(self._model_item)) LOG.debug("Constructed rect %s for model item %s" % (self.rect_, model_item)) @@ -276,6 +280,33 @@ class RectItem(BaseItem): rect = self._dataToRect(self._model_item) self._updateRect(rect) + def mousePressEvent(self, event): + #if event.modifiers() & Qt.ControlModifier != 0: + if event.button() & Qt.RightButton != 0: + self._resize = True + self._resize_start = event.scenePos() + self._resize_start_rect = QRectF(self.rect_) + event.accept() + else: + BaseItem.mousePressEvent(self, event) + + def mouseMoveEvent(self, event): + if self._resize: + diff = event.scenePos() - self._resize_start + rect = QRectF(self._resize_start_rect.topLeft(), self._resize_start_rect.bottomRight() + diff).normalized() + self._updateRect(rect) + self.updateModel() + event.accept() + else: + BaseItem.mouseMoveEvent(self, event) + + def mouseReleaseEvent(self, event): + if self._resize: + self._resize = False + event.accept() + else: + BaseItem.mouseReleaseEvent(self, event) + def keyPressEvent(self, event): step = 1 if event.modifiers() & Qt.ShiftModifier: