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