[Bf-blender-cvs] [ec6fc1aaecb] functions: support for inserting group nodes from search

Jacques Lucke noreply at git.blender.org
Wed Dec 18 13:54:02 CET 2019


Commit: ec6fc1aaecbefa7f4bc95bd9e2f4f1867241bf23
Author: Jacques Lucke
Date:   Wed Dec 18 13:34:26 2019 +0100
Branches: functions
https://developer.blender.org/rBec6fc1aaecbefa7f4bc95bd9e2f4f1867241bf23

support for inserting group nodes from search

===================================================================

M	release/scripts/startup/nodes/search.py

===================================================================

diff --git a/release/scripts/startup/nodes/search.py b/release/scripts/startup/nodes/search.py
index cd2bdd21343..1bd27ff2030 100644
--- a/release/scripts/startup/nodes/search.py
+++ b/release/scripts/startup/nodes/search.py
@@ -18,7 +18,15 @@ class NodeSearch(bpy.types.Operator):
             for search_term, settings in node_cls.get_search_terms():
                 item = encode_search_item(node_cls.bl_idname, search_term, settings)
                 items.append(item)
-        return items
+
+        current_tree = context.space_data.node_tree
+        for tree in current_tree.find_callable_trees():
+            name = "(G) " + tree.name
+            item = encode_search_item(name, name, {})
+            items.append(item)
+
+        sorted_items = list(sorted(items, key=lambda item: item[1]))
+        return sorted_items
 
     item: EnumProperty(items=cache_enum_items(get_search_items))
 
@@ -32,12 +40,24 @@ class NodeSearch(bpy.types.Operator):
         return {'CANCELLED'}
 
     def execute(self, context):
+        tree = context.space_data.node_tree
+        for node in tree.nodes:
+            node.select = False
+
         idname, settings = decode_search_item(self.item)
-        op_settings = []
+        if idname.startswith("(G) "):
+            group_name = idname[len("(G) "):]
+            idname = "fn_GroupNode"
+            node_group = bpy.data.node_groups[group_name]
+            settings = {"node_group" : node_group}
+
+        bpy.ops.node.add_node('INVOKE_DEFAULT', type=idname)
+        new_node = context.active_node
+        new_node.select = True
         for key, value in settings.items():
-            item = {"name" : key, "value" : repr(value)}
-            op_settings.append(item)
-        bpy.ops.node.add_node('INVOKE_DEFAULT', type=idname, use_transform=True, settings=op_settings)
+            setattr(new_node, key, value)
+
+        bpy.ops.node.translate_attach("INVOKE_DEFAULT")
         return {'FINISHED'}



More information about the Bf-blender-cvs mailing list