Commit ad7c195e authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Network: Graph: Improve contextmenu.

Showing with 35 additions and 23 deletions
+35 -23
......@@ -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)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment