From 93e123d225b9261cd8c85c1392ec2fedc2bf1122 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 11:50:57 +0100 Subject: [PATCH 01/10] remove all new stuff from snlite --- nodes/generator/script1_lite.py | 23 ++++++++++++++--------- utils/logging.py | 1 + 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/nodes/generator/script1_lite.py b/nodes/generator/script1_lite.py index fa4892eca..2e2560954 100644 --- a/nodes/generator/script1_lite.py +++ b/nodes/generator/script1_lite.py @@ -44,7 +44,6 @@ snlite_template_path = os.path.join(sv_path, 'node_scripts', 'SNLite_templates') defaults = [0] * 32 -class SNLITE_EXCEPTION(Exception): pass class SV_MT_ScriptNodeLitePyMenu(bpy.types.Menu): bl_label = "SNLite templates" @@ -184,11 +183,13 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): print(socket_description, idx, 'was unparsable') return - if len(sockets) > 0 and idx in set(range(len(sockets))): - if not are_matched(sockets[idx], socket_description): - sockets[idx].replace_socket(*socket_description[:2]) - else: - sockets.new(*socket_description[:2]) + with self.sv_throttle_tree_update(): + + if len(sockets) > 0 and idx in set(range(len(sockets))): + if not are_matched(sockets[idx], socket_description): + sockets[idx].replace_socket(*socket_description[:2]) + else: + sockets.new(*socket_description[:2]) return True @@ -222,8 +223,9 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): sockets = getattr(self, k) if len(sockets) > len(v): num_to_remove = (len(sockets) - len(v)) - for _ in range(num_to_remove): - sockets.remove(sockets[-1]) + with self.sv_throttle_tree_update(): + for _ in range(num_to_remove): + sockets.remove(sockets[-1]) def update_sockets(self): @@ -417,7 +419,10 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout) - raise # SNLITE_EXCEPTION(sys.exc_info()[2]) from err + # raise + set_autocolor(self, True, FAIL_COLOR) + else: + return def custom_draw(self, context, layout): tk = self.node_dict.get(hash(self)) diff --git a/utils/logging.py b/utils/logging.py index f602f4d94..320fc6120 100644 --- a/utils/logging.py +++ b/utils/logging.py @@ -24,6 +24,7 @@ def get_log_buffer(log_buffer_name): """ Get internal blender text buffer for logging. """ + return None try: if log_buffer_name in bpy.data.texts: return bpy.data.texts[log_buffer_name] -- GitLab From d192446c89a4fa4bf89a0494f31447a4fddf3fc3 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 12:00:32 +0100 Subject: [PATCH 02/10] add moar throttle --- nodes/generator/script1_lite.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nodes/generator/script1_lite.py b/nodes/generator/script1_lite.py index 2e2560954..38cec5ed6 100644 --- a/nodes/generator/script1_lite.py +++ b/nodes/generator/script1_lite.py @@ -243,7 +243,8 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): self.flush_excess_sockets(k, v) - self.add_props_to_sockets(socket_info) + with self.sv_throttle_tree_update(): # needed? + self.add_props_to_sockets(socket_info) self.node_dict[hash(self)] = {} self.node_dict[hash(self)]['sockets'] = socket_info -- GitLab From 648805fec9464f28433d9cc4d5f3c489c708417b Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 12:10:22 +0100 Subject: [PATCH 03/10] lol --- core/monad.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/monad.py b/core/monad.py index 30c353b9b..06460b625 100644 --- a/core/monad.py +++ b/core/monad.py @@ -484,14 +484,21 @@ class SvGroupNodeExp: update=updateNode) def draw_label(self): - return self.monad.name + if hasattr(self.monad, "name"): + return self.monad.name + return "Monad (init failure)" @property def monad(self): - for tree in bpy.data.node_groups: - if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: - return tree - return None # or raise LookupError or something, anyway big FAIL + try: + for tree in bpy.data.node_groups: + if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: + return tree + except: + raise + + finally: + return None # or raise LookupError or something, anyway big FAIL def sv_init(self, context): self['loops'] = 0 -- GitLab From b6014c85d2ed88cb5f54a2f536e27818a70153b6 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 12:53:26 +0100 Subject: [PATCH 04/10] moar deeper --- core/monad.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/monad.py b/core/monad.py index 06460b625..2423d31f4 100644 --- a/core/monad.py +++ b/core/monad.py @@ -492,13 +492,15 @@ class SvGroupNodeExp: def monad(self): try: for tree in bpy.data.node_groups: - if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: - return tree + if tree.bl_idname == 'SverchGroupTreeType': + print(self.bl_idname, tree.cls_bl_idname) + if self.bl_idname == tree.cls_bl_idname: + return tree except: - raise + print(f'failed to find {self.bl_idname} in bpy.data.node_groups') - finally: - return None # or raise LookupError or something, anyway big FAIL + # or raise LookupError or something, anyway big FAIL + return None def sv_init(self, context): self['loops'] = 0 -- GitLab From aaa08e2c31f30f77e313f03a102a2ce071f4f308 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 13:07:04 +0100 Subject: [PATCH 05/10] add some info --- core/monad.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/monad.py b/core/monad.py index 2423d31f4..5c4d72a16 100644 --- a/core/monad.py +++ b/core/monad.py @@ -490,17 +490,17 @@ class SvGroupNodeExp: @property def monad(self): + try: for tree in bpy.data.node_groups: - if tree.bl_idname == 'SverchGroupTreeType': - print(self.bl_idname, tree.cls_bl_idname) - if self.bl_idname == tree.cls_bl_idname: - return tree + if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: + return tree except: - print(f'failed to find {self.bl_idname} in bpy.data.node_groups') + raise - # or raise LookupError or something, anyway big FAIL - return None + finally: + return None # or raise LookupError or something, anyway big FAIL + def sv_init(self, context): self['loops'] = 0 @@ -569,6 +569,9 @@ class SvGroupNodeExp: def process(self): if not self.monad: + print(">> monad.process didn't find self.monad") + print(bpy.data.node_groups) + print([tree.name for tree in bpy.data.node_groups]) return if self.vectorize: self.process_vectorize() -- GitLab From 03c9add90dd498c22ebec596005b2ee905533df4 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 13:16:09 +0100 Subject: [PATCH 06/10] moar info --- core/monad.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/monad.py b/core/monad.py index 5c4d72a16..cd0f5e15a 100644 --- a/core/monad.py +++ b/core/monad.py @@ -571,7 +571,7 @@ class SvGroupNodeExp: if not self.monad: print(">> monad.process didn't find self.monad") print(bpy.data.node_groups) - print([tree.name for tree in bpy.data.node_groups]) + print([(tree.name, tree.cls_bl_idname) for tree in bpy.data.node_groups if tree.bl_idname == "SverchGroupTreeType"]) return if self.vectorize: self.process_vectorize() -- GitLab From f52b54a921e82d07707f02c24a00802f7a172ef9 Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 13:18:49 +0100 Subject: [PATCH 07/10] correct space --- core/monad.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/monad.py b/core/monad.py index cd0f5e15a..71c81fcba 100644 --- a/core/monad.py +++ b/core/monad.py @@ -494,7 +494,7 @@ class SvGroupNodeExp: try: for tree in bpy.data.node_groups: if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: - return tree + return tree except: raise @@ -569,7 +569,7 @@ class SvGroupNodeExp: def process(self): if not self.monad: - print(">> monad.process didn't find self.monad") + print(">> monad.process didn't find self.monad", self.monad) print(bpy.data.node_groups) print([(tree.name, tree.cls_bl_idname) for tree in bpy.data.node_groups if tree.bl_idname == "SverchGroupTreeType"]) return -- GitLab From 58f0481fc12e84993cd4f7380d3674e9d32c354d Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 13:36:49 +0100 Subject: [PATCH 08/10] loads.. but is broken --- core/handlers.py | 2 ++ core/monad.py | 31 ++++++++++++++++--------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/handlers.py b/core/handlers.py index e3595ead9..18b317579 100644 --- a/core/handlers.py +++ b/core/handlers.py @@ -174,8 +174,10 @@ def sv_post_load(scene): for monad in (ng for ng in bpy.data.node_groups if ng.bl_idname == 'SverchGroupTreeType'): + monad.freeze(True) if monad.input_node and monad.output_node: monad.update_cls() + monad.unfreeze(True) sv_types = {'SverchCustomTreeType', 'SverchGroupTreeType'} sv_trees = list(ng for ng in bpy.data.node_groups if ng.bl_idname in sv_types and ng.nodes) diff --git a/core/monad.py b/core/monad.py index 71c81fcba..083a771be 100644 --- a/core/monad.py +++ b/core/monad.py @@ -488,20 +488,6 @@ class SvGroupNodeExp: return self.monad.name return "Monad (init failure)" - @property - def monad(self): - - try: - for tree in bpy.data.node_groups: - if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: - return tree - except: - raise - - finally: - return None # or raise LookupError or something, anyway big FAIL - - def sv_init(self, context): self['loops'] = 0 self.use_custom_color = True @@ -567,9 +553,24 @@ class SvGroupNodeExp: endpoint_nodes.append(n.name) return endpoint_nodes + @property + def monad(self): + try: + for tree in bpy.data.node_groups: + if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: + print('found!', tree, tree.cls_bl_idname, tree.name) + return tree + except: + raise + + finally: + # print(f"self.bl_idname: {self.bl_idname}") + return None # or raise LookupError or something, anyway big FAIL + + def process(self): if not self.monad: - print(">> monad.process didn't find self.monad", self.monad) + print(">> monad.process didn't find self.monad, got:", self.monad) print(bpy.data.node_groups) print([(tree.name, tree.cls_bl_idname) for tree in bpy.data.node_groups if tree.bl_idname == "SverchGroupTreeType"]) return -- GitLab From 20849dd570420cb086b9afafd8cf0ad04669d78a Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 13:39:42 +0100 Subject: [PATCH 09/10] not the cause --- utils/logging.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/logging.py b/utils/logging.py index 320fc6120..f602f4d94 100644 --- a/utils/logging.py +++ b/utils/logging.py @@ -24,7 +24,6 @@ def get_log_buffer(log_buffer_name): """ Get internal blender text buffer for logging. """ - return None try: if log_buffer_name in bpy.data.texts: return bpy.data.texts[log_buffer_name] -- GitLab From 0f2af1a667fc7f6fda819be9f86505798bc6b4ba Mon Sep 17 00:00:00 2001 From: zeffii Date: Thu, 12 Mar 2020 15:36:06 +0100 Subject: [PATCH 10/10] test 2. ok --- core/handlers.py | 3 ++- core/monad.py | 10 ++++------ nodes/generator/script1_lite.py | 11 ++++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/core/handlers.py b/core/handlers.py index 18b317579..9f088079e 100644 --- a/core/handlers.py +++ b/core/handlers.py @@ -139,6 +139,8 @@ def sv_main_handler(scene): pre_running = True if depsgraph_need: sv_depsgraph = bpy.context.evaluated_depsgraph_get() + + for ng in sverchok_trees(): # if P (sv_process is False, we can skip this node tree. if not ng.sv_process: @@ -172,7 +174,6 @@ def sv_post_load(scene): from sverchok import node_tree node_tree.SverchCustomTreeNode.get_and_set_gl_scale_info(None, "sv_post_load") - for monad in (ng for ng in bpy.data.node_groups if ng.bl_idname == 'SverchGroupTreeType'): monad.freeze(True) if monad.input_node and monad.output_node: diff --git a/core/monad.py b/core/monad.py index 083a771be..29b87e959 100644 --- a/core/monad.py +++ b/core/monad.py @@ -560,12 +560,10 @@ class SvGroupNodeExp: if tree.bl_idname == 'SverchGroupTreeType' and self.bl_idname == tree.cls_bl_idname: print('found!', tree, tree.cls_bl_idname, tree.name) return tree - except: - raise - - finally: - # print(f"self.bl_idname: {self.bl_idname}") - return None # or raise LookupError or something, anyway big FAIL + except Exception as err: + print(f"self.bl_idname: {self.bl_idname}", err) + + return None # or raise LookupError or something, anyway big FAIL def process(self): diff --git a/nodes/generator/script1_lite.py b/nodes/generator/script1_lite.py index 38cec5ed6..66c2c38ec 100644 --- a/nodes/generator/script1_lite.py +++ b/nodes/generator/script1_lite.py @@ -136,13 +136,17 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): script_str: StringProperty() node_dict = {} + def updateNode2(self, context): + if self.injected_state: + updateNode(self, context) + int_list: IntVectorProperty( name='int_list', description="Integer list", - default=defaults, size=32, update=updateNode) + default=defaults, size=32, update=updateNode2) float_list: FloatVectorProperty( name='float_list', description="Float list", - default=defaults, size=32, update=updateNode) + default=defaults, size=32, update=updateNode2) mode_options = [ ("To_TextBlok", "To TextBlok", "", 0), @@ -196,7 +200,6 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): def add_props_to_sockets(self, socket_info): - self.id_data.freeze(hard=True) try: for idx, (socket_description) in enumerate(socket_info['inputs']): dval = socket_description[2] @@ -216,8 +219,6 @@ class SvScriptNodeLite(bpy.types.Node, SverchCustomTreeNode): except: print('some failure in the add_props_to_sockets function. ouch.') - self.id_data.unfreeze(hard=True) - def flush_excess_sockets(self, k, v): sockets = getattr(self, k) -- GitLab