mirror of https://gitlab.com/pamhyr/pamhyr2
Network: Add delete node undo command.
parent
bc209f78f6
commit
520d8f73df
|
|
@ -101,7 +101,7 @@ class Graph(object):
|
||||||
return self._add_node(node)
|
return self._add_node(node)
|
||||||
|
|
||||||
def insert_node(self, node):
|
def insert_node(self, node):
|
||||||
self._add_node(node)
|
return self._add_node(node)
|
||||||
|
|
||||||
def create_node(self, x:float = 0.0, y:float = 0.0):
|
def create_node(self, x:float = 0.0, y:float = 0.0):
|
||||||
node = self._create_node(x, y)
|
node = self._create_node(x, y)
|
||||||
|
|
@ -126,6 +126,9 @@ class Graph(object):
|
||||||
status = self._status)
|
status = self._status)
|
||||||
return self._add_edge(edge)
|
return self._add_edge(edge)
|
||||||
|
|
||||||
|
def insert_edge(self, edge):
|
||||||
|
return self._add_edge(edge)
|
||||||
|
|
||||||
def remove_node(self, node_name:str):
|
def remove_node(self, node_name:str):
|
||||||
self._nodes = list(
|
self._nodes = list(
|
||||||
filter(
|
filter(
|
||||||
|
|
|
||||||
|
|
@ -400,21 +400,12 @@ class GraphWidget(QGraphicsView):
|
||||||
Nothing
|
Nothing
|
||||||
"""
|
"""
|
||||||
node = item.node
|
node = item.node
|
||||||
edges = list(
|
self._undo.push(
|
||||||
filter(
|
DelNodeCommand(
|
||||||
lambda ie: (ie.edge.node1 == node or
|
self.graph, node
|
||||||
ie.edge.node2 == node),
|
|
||||||
self.edge_items
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.set_selected_item(None)
|
|
||||||
|
|
||||||
for edge in edges:
|
|
||||||
self.graph.remove_edge(edge.edge.name)
|
|
||||||
|
|
||||||
self.graph.remove_node(node.name)
|
|
||||||
|
|
||||||
self.scene().clear()
|
self.scene().clear()
|
||||||
self.create_items()
|
self.create_items()
|
||||||
self.changeNode.emit(self.sender())
|
self.changeNode.emit(self.sender())
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,33 @@ class AddNodeCommand(QUndoCommand):
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._graph.insert_node(self._node)
|
self._graph.insert_node(self._node)
|
||||||
|
|
||||||
|
class DelNodeCommand(QUndoCommand):
|
||||||
|
def __init__(self, graph, node):
|
||||||
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
|
self._graph = graph
|
||||||
|
self._node = node
|
||||||
|
self._edges = []
|
||||||
|
|
||||||
|
def undo(self):
|
||||||
|
for edge in self._edges:
|
||||||
|
self._graph.insert_edge(edge)
|
||||||
|
|
||||||
|
self._graph.insert_node(self._node)
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
self._edges = list(
|
||||||
|
filter(
|
||||||
|
lambda e: (e.node1 == self._node or
|
||||||
|
e.node2 == self._node),
|
||||||
|
self._graph.edges()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for edge in self._edges:
|
||||||
|
self._graph.remove_edge(edge.name)
|
||||||
|
|
||||||
|
self._graph.remove_node(self._node.name)
|
||||||
|
|
||||||
class SetCommand(QUndoCommand):
|
class SetCommand(QUndoCommand):
|
||||||
def __init__(self, element, column, new_value):
|
def __init__(self, element, column, new_value):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue