From c98b2b7b4105a6dc432a33b782bc5ff6cba53cd9 Mon Sep 17 00:00:00 2001 From: Yann Lanthony Date: Mon, 2 Oct 2017 16:14:46 +0200 Subject: [PATCH] [commands] fix RemoveNode command re-create deleted edges on undo --- meshroom/ui/commands.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/meshroom/ui/commands.py b/meshroom/ui/commands.py index 4e6ff9d2..4e674c6f 100644 --- a/meshroom/ui/commands.py +++ b/meshroom/ui/commands.py @@ -89,9 +89,10 @@ class RemoveNodeCommand(GraphCommand): self.nodeDesc = node.toDict() self.nodeName = node.getName() self.setText("Remove Node {}".format(self.nodeName)) + self.edges = {} def redoImpl(self): - self.graph.removeNode(self.nodeName) + self.edges = self.graph.removeNode(self.nodeName) return True def undoImpl(self): @@ -100,6 +101,15 @@ class RemoveNodeCommand(GraphCommand): ), self.nodeName) assert (node.getName() == self.nodeName) + # recreate edges deleted on node removal + for key, value in self.edges.items(): + iNode, iAttr = key.split(".") + oNode, oAttr = value.split(".") + self.graph.addEdge(self.graph.node(oNode).attribute(oAttr), + self.graph.node(iNode).attribute(iAttr)) + + node.updateInternals() + class SetAttributeCommand(GraphCommand): def __init__(self, graph, attribute, value, parent=None):