From 16c57f6a8086daa9766b719dceaf9fb7d88581e7 Mon Sep 17 00:00:00 2001 From: Mika Fischer Date: Tue, 21 Jun 2011 12:14:50 +0200 Subject: [PATCH] Enable scrolling Image/Frame by draging with right mouse button pressed --- sloth/gui/frameviewer.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/sloth/gui/frameviewer.py b/sloth/gui/frameviewer.py index 8ea5b0c..1e03dac 100644 --- a/sloth/gui/frameviewer.py +++ b/sloth/gui/frameviewer.py @@ -21,6 +21,9 @@ class GraphicsView(QGraphicsView): self.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform | QPainter.TextAntialiasing); self.setStyleSheet("QFrame { border: 3px solid black }"); self.active_ = False + self._pan = False + self._panStartX = -1 + self._panStartY = -1 def setScene(self, scene): QGraphicsView.setScene(self, scene) @@ -85,6 +88,34 @@ class GraphicsView(QGraphicsView): # self.setScaleAbsolute(self.getMaxScale()) QGraphicsView.resizeEvent(self, event) + def mousePressEvent(self, event): + if event.button() & Qt.RightButton != 0: + self._pan = True + self._panStartX = event.x() + self._panStartY = event.y() + self.setCursor(Qt.ClosedHandCursor) + event.accept() + else: + return QGraphicsView.mousePressEvent(self, event) + + def mouseReleaseEvent(self, event): + if event.button() & Qt.RightButton != 0: + self._pan = False + self.setCursor(Qt.ArrowCursor) + event.accept() + else: + return QGraphicsView.mouseReleaseEvent(self, event) + + def mouseMoveEvent(self, event): + if self._pan: + self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() - (event.x() - self._panStartX)) + self.verticalScrollBar() .setValue(self.verticalScrollBar().value() - (event.y() - self._panStartY)); + self._panStartX = event.x() + self._panStartY = event.y() + event.accept() + else: + return QGraphicsView.mouseMoveEvent(self, event) + class FrameViewer(QWidget): # Signals activeSceneViewChanged = pyqtSignal(GraphicsView)