mirror of https://gitlab.com/pamhyr/pamhyr2
Network: Add split reach method.
parent
926cade437
commit
2942b6e442
|
|
@ -919,3 +919,5 @@ Last export at: @date."""
|
||||||
|
|
||||||
self._add_edge(r1)
|
self._add_edge(r1)
|
||||||
self._add_edge(r2)
|
self._add_edge(r2)
|
||||||
|
|
||||||
|
return r1, r2
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ class EdgeMenu(AbstractMenu):
|
||||||
|
|
||||||
reverse = self._menu.addAction(self._trad["menu_rev_edge"])
|
reverse = self._menu.addAction(self._trad["menu_rev_edge"])
|
||||||
delete = self._menu.addAction(self._trad["menu_del_edge"])
|
delete = self._menu.addAction(self._trad["menu_del_edge"])
|
||||||
|
split = self._menu.addAction(self._trad["menu_split_edge"])
|
||||||
if self._parent.graph.is_enable_edge(it.edge):
|
if self._parent.graph.is_enable_edge(it.edge):
|
||||||
enable = self._menu.addAction(self._trad["menu_dis_edge"])
|
enable = self._menu.addAction(self._trad["menu_dis_edge"])
|
||||||
is_enable = True
|
is_enable = True
|
||||||
|
|
@ -110,3 +111,5 @@ class EdgeMenu(AbstractMenu):
|
||||||
self._parent.enable_edge(it, is_enable)
|
self._parent.enable_edge(it, is_enable)
|
||||||
elif action == reverse:
|
elif action == reverse:
|
||||||
self._parent.reverse_edge(it)
|
self._parent.reverse_edge(it)
|
||||||
|
elif action == split:
|
||||||
|
self._parent.split_edge(it)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ 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
|
||||||
|
|
||||||
|
from View.Network.ProfileDialog import SelectProfileDialog
|
||||||
from View.Network.UndoCommand import *
|
from View.Network.UndoCommand import *
|
||||||
from View.Network.ContextMenu import (
|
from View.Network.ContextMenu import (
|
||||||
DefaultMenu, NodeMenu, EdgeMenu,
|
DefaultMenu, NodeMenu, EdgeMenu,
|
||||||
|
|
@ -720,6 +721,31 @@ class GraphWidget(QGraphicsView):
|
||||||
self.changeNode.emit(self.sender())
|
self.changeNode.emit(self.sender())
|
||||||
self.changeEdge.emit(self.sender())
|
self.changeEdge.emit(self.sender())
|
||||||
|
|
||||||
|
def split_edge(self, item):
|
||||||
|
edge = item.edge
|
||||||
|
|
||||||
|
dlg = SelectProfileDialog(
|
||||||
|
study=self.parent._study,
|
||||||
|
reach=edge,
|
||||||
|
trad=self._trad,
|
||||||
|
parent=self.parent,
|
||||||
|
)
|
||||||
|
if not dlg.exec():
|
||||||
|
return
|
||||||
|
|
||||||
|
profile = dlg._profile
|
||||||
|
self._undo.push(
|
||||||
|
SplitEdgeCommand(
|
||||||
|
self.graph, edge, profile
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.scene().clear()
|
||||||
|
self.create_items()
|
||||||
|
|
||||||
|
self.changeNode.emit(self.sender())
|
||||||
|
self.changeEdge.emit(self.sender())
|
||||||
|
|
||||||
def update_edges(self, node):
|
def update_edges(self, node):
|
||||||
"""Update display of all edges linked with the node
|
"""Update display of all edges linked with the node
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,27 @@ class DelEdgeCommand(QUndoCommand):
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._graph.remove_edge(self._edge)
|
self._graph.remove_edge(self._edge)
|
||||||
|
|
||||||
|
class SplitEdgeCommand(QUndoCommand):
|
||||||
|
def __init__(self, graph, edge, profile):
|
||||||
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
|
self._graph = graph
|
||||||
|
self._edge = edge
|
||||||
|
self._profile = profile
|
||||||
|
self._new_r1 = None
|
||||||
|
self._new_r2 = None
|
||||||
|
|
||||||
|
def undo(self):
|
||||||
|
self._new_r1.set_as_deleted()
|
||||||
|
self._new_r2.set_as_deleted()
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
if self._new_r1 is None:
|
||||||
|
self._new_r1, self._new_r2 = self._graph._split_reach(
|
||||||
|
self._edge, self._profile)
|
||||||
|
else:
|
||||||
|
self._new_r1.set_as_not_deleted()
|
||||||
|
self._new_r2.set_as_not_deleted()
|
||||||
|
|
||||||
class SetCommand(QUndoCommand):
|
class SetCommand(QUndoCommand):
|
||||||
def __init__(self, element, column, new_value):
|
def __init__(self, element, column, new_value):
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ class NetworkTranslate(MainTranslate):
|
||||||
)
|
)
|
||||||
|
|
||||||
self._dict["menu_del_edge"] = _translate("Network", "Delete the reach")
|
self._dict["menu_del_edge"] = _translate("Network", "Delete the reach")
|
||||||
|
self._dict["menu_split_edge"] = _translate("Network", "Split the reach")
|
||||||
self._dict["menu_ena_edge"] = _translate("Network", "Enable the reach")
|
self._dict["menu_ena_edge"] = _translate("Network", "Enable the reach")
|
||||||
self._dict["menu_dis_edge"] = _translate("Network",
|
self._dict["menu_dis_edge"] = _translate("Network",
|
||||||
"Disable the reach")
|
"Disable the reach")
|
||||||
|
|
@ -54,6 +55,11 @@ class NetworkTranslate(MainTranslate):
|
||||||
"Network", "Reverse the reach orientation"
|
"Network", "Reverse the reach orientation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._dict["dialog_select_profile_title"] = _translate(
|
||||||
|
"Network",
|
||||||
|
"Select profile"
|
||||||
|
)
|
||||||
|
|
||||||
self._sub_dict["table_headers_node"] = {
|
self._sub_dict["table_headers_node"] = {
|
||||||
"name": self._dict['name'],
|
"name": self._dict['name'],
|
||||||
"type": self._dict['type'],
|
"type": self._dict['type'],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue