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