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

Network: Add add node command.

Showing with 38 additions and 9 deletions
+38 -9
......@@ -81,22 +81,32 @@ class Graph(object):
return edge[0]
def _add_node(self, node):
self._nodes.append(node)
self._nodes_ids += 1
self._status.modified()
return node
def add_node(self, x:float = 0.0, y:float = 0.0):
def _create_node(self, x:float, y:float):
node = self._node_ctor(
self._nodes_ids,
f"Node {self._nodes_ids}",
x = x, y = y,
status = self._status
)
self._nodes_ids += 1
return node
def _add_node(self, node):
self._nodes.append(node)
self._status.modified()
return node
def add_node(self, x:float = 0.0, y:float = 0.0):
node = self._create_node(x, y)
return self._add_node(node)
def insert_node(self, node):
self._add_node(node)
def create_node(self, x:float = 0.0, y:float = 0.0):
node = self._create_node(x, y)
return node
def _add_edge(self, edge):
# This edge already exists ?
if any(filter(lambda e: (e.node1 == edge.node1 and
......
......@@ -376,7 +376,12 @@ class GraphWidget(QGraphicsView):
Returns:
Nothing
"""
node = self.graph.add_node(pos.x(), pos.y())
node = self.graph.create_node(pos.x(), pos.y())
self._undo.push(
AddNodeCommand(
self.graph, node
)
)
inode = NodeItem(node, self)
self.scene().addItem(inode)
self.node_items.append(inode)
......
......@@ -11,6 +11,20 @@ from Model.Network.Node import Node
from Model.Network.Edge import Edge
from Model.Network.Graph import Graph
class AddNodeCommand(QUndoCommand):
def __init__(self, graph, node):
QUndoCommand.__init__(self)
self._graph = graph
self._node = node
def undo(self):
self._graph.remove_node(self._node.name)
def redo(self):
self._graph.insert_node(self._node)
class SetCommand(QUndoCommand):
def __init__(self, element, column, new_value):
QUndoCommand.__init__(self)
......
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