From 0a5df00c77a1d51ff6f9c9f688a186bb961b5273 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Mon, 5 Jun 2023 16:47:25 +0200 Subject: [PATCH] Geometry: Graph: Add a minimal context menu. --- src/View/Network/GraphWidget.py | 34 ++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/View/Network/GraphWidget.py b/src/View/Network/GraphWidget.py index 522f3210..90d2bf5e 100644 --- a/src/View/Network/GraphWidget.py +++ b/src/View/Network/GraphWidget.py @@ -14,7 +14,7 @@ from PyQt5.QtGui import ( ) from PyQt5.QtWidgets import ( QApplication,QGraphicsScene, QGraphicsView, - QGraphicsItem, QGraphicsTextItem, + QGraphicsItem, QGraphicsTextItem, QMenu, ) from Model.Network.Node import Node @@ -727,3 +727,35 @@ class GraphWidget(QGraphicsView): # Propagate event self.update() super(GraphWidget, self).mouseMoveEvent(event) + + + def contextMenuEvent(self, event): + pos = self.mapToScene(event.pos()) + items = self.items(event.pos()) + + menu = QMenu(self) + if len(items) == 0: + add_node = menu.addAction("Add") + + elif type(items[0]) == NodeItem: + del_node = menu.addAction("Delete") + disable_node = menu.addAction("Disable") + + elif type(items[0]) == EdgeItem: + del_edge = menu.addAction("Delete") + disable_edge = menu.addAction("Disable") + + action = menu.exec_(self.mapToGlobal(event.pos())) + + if len(items) == 0: + if action == add_node: + self.add_node(pos) + + elif type(items[0]) == NodeItem: + if action == del_node: + self.del_node(items[0]) + #if action == disable_node: + + elif type(items[0]) == EdgeItem: + if action == del_edge: + self.del_edge(items[0]) -- GitLab