diff --git a/src/View/Network/GraphWidget.py b/src/View/Network/GraphWidget.py index 90d2bf5e7a01246c2b9a01d71980cc8fa6817efe..6760af316ae5f31eca48a0f15832d6ea8f366fca 100644 --- a/src/View/Network/GraphWidget.py +++ b/src/View/Network/GraphWidget.py @@ -6,14 +6,14 @@ 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, QPolygonF, ) from PyQt5.QtWidgets import ( - QApplication,QGraphicsScene, QGraphicsView, + QApplication, QGraphicsScene, QGraphicsView, QGraphicsItem, QGraphicsTextItem, QMenu, ) @@ -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) - def contextMenuEvent(self, event): - pos = self.mapToScene(event.pos()) - items = self.items(event.pos()) + # Contextual menu - menu = QMenu(self) - if len(items) == 0: - add_node = menu.addAction("Add") + def menu_default(self, event, pos, items, menu): + add_node = menu.addAction(_translate("Network", "Add node")) - elif type(items[0]) == NodeItem: - del_node = menu.addAction("Delete") - disable_node = menu.addAction("Disable") + action = menu.exec_(self.mapToGlobal(event.pos())) - elif type(items[0]) == EdgeItem: - del_edge = menu.addAction("Delete") - disable_edge = menu.addAction("Disable") + 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 len(items) == 0: - if action == add_node: - self.add_node(pos) + if action == delete: + self.del_node(items[0]) - elif type(items[0]) == NodeItem: - if action == del_node: - self.del_node(items[0]) - #if action == disable_node: + 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: + self.menu_default(event, pos, items, menu) + elif type(items[0]) == NodeItem: + self.menu_node(event, pos, items, menu) elif type(items[0]) == EdgeItem: - if action == del_edge: - self.del_edge(items[0]) + self.menu_edge(event, pos, items, menu)