From 4ff81a0b632e20e62b4465ebcb308692b7e90518 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Tue, 3 Sep 2024 09:22:55 +0200 Subject: [PATCH] Scenario: Allow to move on board with mouse left click. --- src/View/Scenarios/GraphWidget.py | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/View/Scenarios/GraphWidget.py b/src/View/Scenarios/GraphWidget.py index 35cb873e..375ee327 100644 --- a/src/View/Scenarios/GraphWidget.py +++ b/src/View/Scenarios/GraphWidget.py @@ -313,6 +313,16 @@ class GraphWidget(QGraphicsView): def wheelEvent(self, event): self.scaleView(math.pow(2.0, -event.angleDelta().y() / 240.0)) + def keyPressEvent(self, event): + key = event.key() + + if key == Qt.Key_Plus: + self.scaleView(1.2) + elif key == Qt.Key_Minus: + self.scaleView(1 / 1.2) + else: + super(GraphWidget, self).keyPressEvent(event) + def scaleView(self, scaleFactor): factor = self.transform().scale( scaleFactor, scaleFactor @@ -323,6 +333,43 @@ class GraphWidget(QGraphicsView): self.scale(scaleFactor, scaleFactor) + def mousePressEvent(self, event): + # pos = self.mapToScene(event.pos()) + # items = self.items(event.pos()) + + self.update() + super(GraphWidget, self).mousePressEvent(event) + + def mouseMoveEvent(self, event): + pos = self.mapToScene(event.pos()) + + items = self.items(event.pos()) + selectable_items = list( + filter( + lambda i: (type(i) is ScenarioItem + or type(i) is EdgeItem), + items + ) + ) + + # Move on scene + if len(selectable_items) == 0: + if event.buttons() & Qt.LeftButton: + old_p = self.mapToScene( + int(self.m_origin_x), int(self.m_origin_y) + ) + new_p = self.mapToScene(event.pos()) + translation = new_p - old_p + + self.translate(translation.x(), translation.y()) + + self.m_origin_x = event.x() + self.m_origin_y = event.y() + + # Propagate event + self.update() + super(GraphWidget, self).mouseMoveEvent(event) + # Contextual menu def contextMenuEvent(self, event):