[Bf-blender-cvs] [3881606540f] builtin-simulation-nodes: put builtin node groups into menu

Jacques Lucke noreply at git.blender.org
Mon Mar 23 13:28:24 CET 2020


Commit: 3881606540ff1d67fcc035b372b625b48a2f2c0f
Author: Jacques Lucke
Date:   Mon Mar 23 13:17:01 2020 +0100
Branches: builtin-simulation-nodes
https://developer.blender.org/rB3881606540ff1d67fcc035b372b625b48a2f2c0f

put builtin node groups into menu

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

M	release/scripts/startup/bl_operators/node.py
M	release/scripts/startup/nodeitems_builtins.py

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

diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 8dd5d1a4da9..6826670e145 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -37,6 +37,7 @@ from builtin_node_groups import (
     export_builtin_node_group,
     get_builtin_group_items_cb,
     import_builtin_node_group_by_item_identifier,
+    import_builtin_node_group_with_dependencies,
 )
 
 class NodeSetting(PropertyGroup):
@@ -335,6 +336,26 @@ class NODE_OT_import_group_template_search(bpy.types.Operator):
             import_builtin_node_group_by_item_identifier(self.item)
             return {'FINISHED'}
 
+class NODE_OT_add_builtin_node_group(bpy.types.Operator):
+    bl_idname = "node.add_builtin_node_group"
+    bl_label = "Add Builtin Node Group"
+
+    group_name: StringProperty()
+
+    def invoke(self, context, event):
+        node_tree = context.space_data.edit_tree
+        for node in node_tree.nodes:
+            node.select = False
+
+        group = import_builtin_node_group_with_dependencies(self.group_name)
+        group_node = node_tree.nodes.new("SimulationNodeGroup")
+        group_node.node_tree = group
+        group_node.select = True
+        node_tree.nodes.active = group_node
+
+        bpy.ops.node.translate_attach('INVOKE_DEFAULT')
+        return {'FINISHED'}
+
 classes = (
     NodeSetting,
 
@@ -345,4 +366,5 @@ classes = (
     NODE_OT_tree_path_parent,
     NODE_OT_export_group_template,
     NODE_OT_import_group_template_search,
+    NODE_OT_add_builtin_node_group,
 )
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 36e8ab0cb23..ef0e4864169 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -24,6 +24,9 @@ from nodeitems_utils import (
     NodeItem,
     NodeItemCustom,
 )
+from builtin_node_groups import (
+    get_builtin_groups_data,
+)
 
 
 # Subclasses for standard node types
@@ -122,6 +125,14 @@ def node_group_items(context):
                        group.name,
                        {"node_tree": "bpy.data.node_groups[%r]" % group.name})
 
+    def draw_builtin_node_groups(self, layout, context):
+        layout.separator()
+        groups_json_data = get_builtin_groups_data()
+        for group_name in groups_json_data.keys():
+            props = layout.operator("node.add_builtin_node_group", text=group_name)
+            props.group_name = group_name
+
+    yield NodeItemCustom(draw=draw_builtin_node_groups)
 
 # only show input/output nodes inside node groups
 def group_input_output_item_poll(context):



More information about the Bf-blender-cvs mailing list