Network: Graph: Improve contextmenu.

mesh
Pierre-Antoine Rouby 2023-06-07 10:11:56 +02:00
parent 54a9418474
commit ad7c195e4d
1 changed files with 36 additions and 24 deletions

View File

@ -6,7 +6,7 @@ from tools import timer
from PyQt5.QtCore import (
Qt, QPoint, QPointF, QSizeF, QLineF, QRectF,
pyqtSlot, pyqtSignal,
pyqtSlot, pyqtSignal, QCoreApplication,
)
from PyQt5.QtGui import (
QPainter, QColor, QBrush, QPen, QPainterPath,
@ -21,6 +21,9 @@ from Model.Network.Node import Node
from Model.Network.Edge import Edge
from Model.Network.Graph import Graph
_translate = QCoreApplication.translate
class NodeItem(QGraphicsItem):
Type = QGraphicsItem.UserType + 1
@ -729,33 +732,42 @@ class GraphWidget(QGraphicsView):
super(GraphWidget, self).mouseMoveEvent(event)
# Contextual menu
def menu_default(self, event, pos, items, menu):
add_node = menu.addAction(_translate("Network", "Add node"))
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == add_node:
self.add_node(pos)
def menu_node(self, event, pos, items, menu):
delete = menu.addAction(_translate("Network", "Delete the node"))
disable = menu.addAction(_translate("Network", "Disable the node"))
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == delete:
self.del_node(items[0])
def menu_edge(self, event, pos, items, menu):
delete = menu.addAction(_translate("Network", "Delete the reach"))
disable = menu.addAction(_translate("Network", "Disable the reach"))
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == delete:
self.del_edge(items[0])
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")
self.menu_default(event, pos, items, menu)
elif type(items[0]) == NodeItem:
del_node = menu.addAction("Delete")
disable_node = menu.addAction("Disable")
self.menu_node(event, pos, items, menu)
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])
self.menu_edge(event, pos, items, menu)