Skip to content

Commit 1ab4eec

Browse files
authored
Merge pull request #163 from ArnoChenFx/master
Add Sub Graph System
2 parents f471b09 + 42f2718 commit 1ab4eec

35 files changed

+7594
-334
lines changed

NodeGraphQt/__init__.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,22 @@ def __init__(self):
8383

8484
from .base.graph import NodeGraph
8585
from .base.menu import NodesMenu, NodeGraphMenu, NodeGraphCommand
86-
from .base.node import NodeObject, BaseNode, BackdropNode
86+
from .base.node import NodeObject, BaseNode, BackdropNode, SubGraph
8787
from .base.port import Port
8888
from .pkg_info import __version__ as VERSION
8989
from .pkg_info import __license__ as LICENSE
9090

9191
# functions
92-
from .base.utils import setup_context_menu
92+
from .base.utils import setup_context_menu, \
93+
topological_sort_by_up, topological_sort_by_down, \
94+
update_node_down_stream, update_node_up_stream,\
95+
update_nodes_by_up, update_nodes_by_down
9396

9497
# widgets
9598
from .widgets.node_tree import NodeTreeWidget
9699
from .widgets.properties_bin import PropertiesBinWidget
100+
from .widgets.node_publish_widget import NodePublishWidget
101+
97102

98103
__version__ = VERSION
99104
__all__ = [
@@ -110,6 +115,14 @@ def __init__(self):
110115
'PropertiesBinWidget',
111116
'VERSION',
112117
'constants',
113-
'setup_context_menu'
118+
'setup_context_menu',
119+
'NodePublishWidget',
120+
'SubGraph',
121+
'topological_sort_by_up',
122+
'topological_sort_by_down',
123+
'update_node_up_stream',
124+
'update_node_down_stream',
125+
'update_nodes_by_up',
126+
'update_nodes_by_down',
114127
]
115128

NodeGraphQt/base/commands.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,17 @@ def __init__(self, graph, node, pos=None):
125125
self.model = graph.model
126126
self.node = node
127127
self.pos = pos
128+
self.node_parent = node.parent()
128129

129130
def undo(self):
130131
self.pos = self.pos or self.node.pos()
131132
self.model.nodes.pop(self.node.id)
132-
self.node.view.delete()
133+
self.node.delete()
133134

134135
def redo(self):
135136
self.model.nodes[self.node.id] = self.node
136137
self.viewer.add_node(self.node.view, self.pos)
138+
self.node.set_parent(self.node_parent)
137139

138140

139141
class NodeRemovedCmd(QtWidgets.QUndoCommand):
@@ -153,6 +155,7 @@ def __init__(self, graph, node):
153155
self.node = node
154156
self.inputs = []
155157
self.outputs = []
158+
self.node_parent = node.parent()
156159

157160
if hasattr(self.node, 'inputs'):
158161
input_ports = self.node.inputs().values()
@@ -164,18 +167,15 @@ def __init__(self, graph, node):
164167
def undo(self):
165168
self.model.nodes[self.node.id] = self.node
166169
self.scene.addItem(self.node.view)
167-
for port, connected_ports in self.inputs:
168-
[port.connect_to(p) for p in connected_ports]
169-
for port, connected_ports in self.outputs:
170-
[port.connect_to(p) for p in connected_ports]
170+
[port.connect_to(p) for port, connected_ports in self.inputs for p in connected_ports]
171+
[port.connect_to(p) for port, connected_ports in self.outputs for p in connected_ports]
172+
self.node.set_parent(self.node_parent)
171173

172174
def redo(self):
173-
for port, connected_ports in self.inputs:
174-
[port.disconnect_from(p) for p in connected_ports]
175-
for port, connected_ports in self.outputs:
176-
[port.disconnect_from(p) for p in connected_ports]
175+
[port.disconnect_from(p) for port, connected_ports in self.inputs for p in connected_ports]
176+
[port.disconnect_from(p) for port, connected_ports in self.outputs for p in connected_ports]
177177
self.model.nodes.pop(self.node.id)
178-
self.node.view.delete()
178+
self.node.delete()
179179

180180

181181
class NodeInputConnectedCmd(QtWidgets.QUndoCommand):

0 commit comments

Comments
 (0)