Skip to content

Commit b7b1f38

Browse files
committed
upgrade AutoNode
1 parent f72e9cc commit b7b1f38

File tree

4 files changed

+44
-48
lines changed

4 files changed

+44
-48
lines changed

NodeGraphQt/base/graph.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,15 +1187,18 @@ def _deserialize(self, data, relative_pos=False, pos=None, set_parent=True):
11871187
for prop, val in n_data.get('custom', {}).items():
11881188
node.model.set_property(prop, val)
11891189
nodes[n_id] = node
1190-
self.add_node(node, n_data.get('pos'), unique_name=set_parent)
1191-
node.set_disabled(n_data.get('disabled', False))
1190+
11921191
if isinstance(node, SubGraph):
1192+
node.create_by_deserialize = True
1193+
self.add_node(node, n_data.get('pos'), unique_name=set_parent)
11931194
published = n_data['custom'].get('published', False)
11941195
if not published:
11951196
sub_graph = n_data.get('sub_graph', None)
11961197
if sub_graph:
11971198
children = self._deserialize(sub_graph, relative_pos, pos, False)
11981199
[child.set_parent(node) for child in children]
1200+
else:
1201+
self.add_node(node, n_data.get('pos'), unique_name=set_parent)
11991202

12001203
if n_data.get('dynamic_port', None):
12011204
node.set_ports({'input_ports': n_data['input_ports'], 'output_ports': n_data['output_ports']})

example_auto_nodes/networks/example_SubGraph.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
1076.2478051244084,
102102
1012.9391107053248
103103
],
104-
"published":false,
104+
"published":true,
105105
"input count":2,
106106
"output count":1,
107107
"create_from_select":false,

example_auto_nodes/node_base/auto_node.py

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ class AutoNode(BaseNode, QtCore.QObject):
3434
def __init__(self, defaultInputType=None, defaultOutputType=None):
3535
super(AutoNode, self).__init__()
3636
QtCore.QObject.__init__(self)
37-
self.needCook = True
38-
self._autoCook = True
37+
self._needCook = True
3938
self._error = False
4039
self.matchTypes = [['float', 'int']]
4140
self.errorColor = (200, 50, 50)
4241
self.stopCookColor = (200, 200, 200)
4342
self._cryptoColors = CryptoColors()
4443

45-
self.defaultColor = self.get_property("color")
44+
self.create_property('autoCook', True)
45+
self.create_property('default_color', self.get_property('color'))
4646
self.defaultValue = None
4747
self.defaultInputType = defaultInputType
4848
self.defaultOutputType = defaultOutputType
@@ -56,7 +56,7 @@ def autoCook(self):
5656
Returns whether the node can update stream automatically.
5757
"""
5858

59-
return self._autoCook
59+
return self.get_property('autoCook')
6060

6161
@autoCook.setter
6262
def autoCook(self, mode):
@@ -67,14 +67,15 @@ def autoCook(self, mode):
6767
mode(bool).
6868
"""
6969

70-
if mode is self._autoCook:
70+
if mode is self.autoCook:
7171
return
7272

73-
self._autoCook = mode
73+
self.model.set_property('autoCook', mode)
7474
if mode:
75-
self.set_property('color', self.defaultColor)
75+
self.set_property('color', self.get_property('default_color'))
7676
else:
77-
self.defaultColor = self.get_property("color")
77+
if not self.error():
78+
self.model.set_property('default_color', self.get_property('color'))
7879
self.set_property('color', self.stopCookColor)
7980

8081
@property
@@ -86,15 +87,15 @@ def cookTime(self):
8687
return self._cookTime
8788

8889
@autoCook.setter
89-
def cookTime(self, time):
90+
def cookTime(self, cook_time):
9091
"""
9192
Set the last cooked time of the node.
9293
9394
Args:
94-
time(float).
95+
cook_time(float).
9596
"""
9697

97-
self._cookTime = time
98+
self._cookTime = cook_time
9899
self._update_tool_tip()
99100

100101
def update_stream(self, forceCook=False):
@@ -106,7 +107,7 @@ def update_stream(self, forceCook=False):
106107
"""
107108

108109
if not forceCook:
109-
if not self._autoCook or not self.needCook:
110+
if not self.autoCook or not self._needCook:
110111
return
111112
if self.graph is not None and not self.graph.auto_update:
112113
return
@@ -155,16 +156,16 @@ def when_disabled(self):
155156

156157
num = max(0, len(self.input_ports())-1)
157158
for index, out_port in enumerate(self.output_ports()):
158-
self.set_property(out_port.name(), self.getInputData(min(index, num)))
159+
self.model.set_property(out_port.name(), self.getInputData(min(index, num)))
159160

160161
def cook(self):
161162
"""
162163
The entry of the node evaluation.
163164
Most time we need to call this method instead of AutoNode.run'.
164165
"""
165166

166-
_tmp = self._autoCook
167-
self._autoCook = False
167+
_tmp = self.autoCook
168+
self.model.set_property('autoCook', False)
168169

169170
if self.error():
170171
self._close_error()
@@ -175,7 +176,7 @@ def cook(self):
175176
except:
176177
self.error(traceback.format_exc())
177178

178-
self._autoCook = _tmp
179+
self.model.set_property('autoCook', _tmp)
179180

180181
if self.error():
181182
return
@@ -195,12 +196,12 @@ def on_input_connected(self, to_port, from_port):
195196
if self.checkPortType(to_port, from_port):
196197
self.update_stream()
197198
else:
198-
self.needCook = False
199+
self._needCook = False
199200
to_port.disconnect_from(from_port)
200201

201202
def on_input_disconnected(self, to_port, from_port):
202-
if not self.needCook:
203-
self.needCook = True
203+
if not self._needCook:
204+
self._needCook = True
204205
return
205206
self.update_stream()
206207

@@ -294,21 +295,15 @@ def add_output(self, name='output', data_type='None', multi_output=True, display
294295

295296
def set_disabled(self, mode=False):
296297
super(AutoNode, self).set_disabled(mode)
297-
self._autoCook = not mode
298-
if mode:
299-
self.when_disabled()
300-
if self.graph is None or self.graph.auto_update:
301-
self.update_stream()
302-
else:
303-
self.update_stream()
298+
self.update_stream()
304299

305300
def _close_error(self):
306301
"""
307302
Close the node error.
308303
"""
309304

310305
self._error = False
311-
self.set_property('color', self.defaultColor)
306+
self.set_property('color', self.get_property('default_color'))
312307
self._update_tool_tip()
313308

314309
def _show_error(self, message):
@@ -321,7 +316,7 @@ def _show_error(self, message):
321316
"""
322317

323318
if not self._error:
324-
self.defaultColor = self.get_property("color")
319+
self.model.set_property('default_color', self.get_property('color'))
325320

326321
self._error = True
327322
self.set_property('color', self.errorColor)
@@ -371,8 +366,4 @@ def error(self, message=None):
371366

372367
self._show_error(message)
373368

374-
def update_model(self):
375-
if self.error():
376-
self.set_property('color', self.defaultColor)
377-
super(AutoNode, self).update_model()
378369

example_auto_nodes/subgraph_nodes.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ def __init__(self, defaultInputType=None, defaultOutputType=None):
8888
self.set_property('color', (36, 97, 100, 255))
8989
self.set_property('published', True)
9090
self.created = False
91+
self.create_by_deserialize = False
9192

9293
def set_graph(self, graph):
9394
super(Publish, self).set_graph(graph)
@@ -107,19 +108,20 @@ def create_from_file(self):
107108
return
108109

109110
children_data = data.pop('sub_graph')
110-
n_data = data.pop('node')
111-
112-
n_data.pop('name')
113-
# set properties.
114-
for prop in self.model.properties.keys():
115-
if prop in n_data.keys():
116-
self.model.set_property(prop, n_data[prop])
117-
# set custom properties.
118-
for prop, val in n_data.get('custom', {}).items():
119-
self.model.set_property(prop, val)
120-
121-
if n_data.get('dynamic_port', None):
122-
self.set_ports({'input_ports': n_data['input_ports'], 'output_ports': n_data['output_ports']})
111+
112+
if not self.create_by_deserialize:
113+
n_data = data.pop('node')
114+
n_data.pop('name')
115+
# set properties.
116+
for prop in self.model.properties.keys():
117+
if prop in n_data.keys():
118+
self.model.set_property(prop, n_data[prop])
119+
# set custom properties.
120+
for prop, val in n_data.get('custom', {}).items():
121+
self.model.set_property(prop, val)
122+
123+
if n_data.get('dynamic_port', None):
124+
self.set_ports({'input_ports': n_data['input_ports'], 'output_ports': n_data['output_ports']})
123125

124126
children = self.graph._deserialize(children_data, set_parent=False)
125127
[node.set_parent(self) for node in children]

0 commit comments

Comments
 (0)