[ui][commands] add MoveNodeCommand

add undoable command to move a Node to a target position
This commit is contained in:
Yann Lanthony 2018-07-26 15:20:20 +02:00
parent e2155ba962
commit ac4772fc57
2 changed files with 30 additions and 0 deletions

View file

@ -258,6 +258,23 @@ class ListAttributeRemoveCommand(GraphCommand):
listAttribute.insert(self.index, self.value)
class MoveNodeCommand(GraphCommand):
""" Move a node to a given position. """
def __init__(self, graph, node, position, parent=None):
super(MoveNodeCommand, self).__init__(graph, parent)
self.nodeName = node.name
self.oldPosition = node.position
self.newPosition = position
self.setText("Move {}".format(self.nodeName))
def redoImpl(self):
self.graph.node(self.nodeName).position = self.newPosition
return True
def undoImpl(self):
self.graph.node(self.nodeName).position = self.oldPosition
class UpgradeNodeCommand(GraphCommand):
"""
Perform node upgrade on a CompatibilityNode.

View file

@ -252,6 +252,19 @@ class UIGraph(QObject):
"""
return self.push(commands.AddNodeCommand(self._graph, nodeType, **kwargs))
@Slot(Node, QPoint)
def moveNode(self, node, position):
"""
Move 'node' to the given 'position'.
Args:
node (Node): the node to move
position (QPoint): the target position
"""
if isinstance(position, QPoint):
position = Position(position.x(), position.y())
self.push(commands.MoveNodeCommand(self._graph, node, position))
@Slot(Node)
def removeNode(self, node):
self.push(commands.RemoveNodeCommand(self._graph, node))