Skip to content

Commit b9f0fea

Browse files
committed
fix: error when property can not be compare by '==' and '!=' && data can not be serialed
1 parent fb5876c commit b9f0fea

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

NodeGraphQt/base/commands.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,30 @@ def set_node_prop(self, name, value):
5151
setattr(view, name, value)
5252

5353
def undo(self):
54-
if self.old_val != self.new_val:
54+
do_undo = False
55+
try:
56+
if self.old_val != self.new_val:
57+
do_undo = True
58+
except:
59+
do_undo = True
60+
61+
if do_undo:
5562
self.set_node_prop(self.name, self.old_val)
5663

5764
# emit property changed signal.
5865
graph = self.node.graph
5966
graph.property_changed.emit(self.node, self.name, self.old_val)
6067

6168
def redo(self):
62-
if self.old_val != self.new_val:
69+
do_redo = False
70+
71+
try:
72+
if self.old_val != self.new_val:
73+
do_redo = True
74+
except:
75+
do_redo = True
76+
77+
if do_redo:
6378
self.set_node_prop(self.name, self.new_val)
6479

6580
# emit property changed signal.

NodeGraphQt/base/model.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,20 @@ def to_dict(self):
232232
node_dict['outputs'] = outputs
233233

234234
custom_props = node_dict.pop('_custom_prop', {})
235+
235236
if custom_props:
237+
# exclude the data which can not be serialed (like numpy array)
238+
to_remove = []
239+
types = [float, str, int, list, dict, bool, None, complex]
240+
for k, v in custom_props.items():
241+
if type(v) not in types:
242+
try:
243+
json.dumps(v)
244+
except:
245+
to_remove.append(k)
246+
for k in to_remove:
247+
custom_props.pop(k)
248+
236249
node_dict['custom'] = custom_props
237250

238251
exclude = ['_graph_model',

NodeGraphQt/base/node.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,11 @@ def set_property(self, name, value):
293293
"""
294294

295295
# prevent signals from causing a infinite loop.
296-
if self.get_property(name) == value:
297-
return
296+
try:
297+
if self.get_property(name) == value:
298+
return
299+
except:
300+
pass
298301

299302
if self.graph and name == 'name':
300303
value = self.graph.get_unique_name(value)

0 commit comments

Comments
 (0)