[Bf-blender-cvs] [68bd8431cf7] builtin-simulation-nodes: some cleanup

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


Commit: 68bd8431cf795496d46f74e8a69e54f00e91da23
Author: Jacques Lucke
Date:   Mon Mar 23 11:49:55 2020 +0100
Branches: builtin-simulation-nodes
https://developer.blender.org/rB68bd8431cf795496d46f74e8a69e54f00e91da23

some cleanup

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

M	release/scripts/modules/builtin_node_groups.py
M	release/scripts/startup/bl_operators/node.py

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

diff --git a/release/scripts/modules/builtin_node_groups.py b/release/scripts/modules/builtin_node_groups.py
index 12d892529b2..72494c04a3d 100644
--- a/release/scripts/modules/builtin_node_groups.py
+++ b/release/scripts/modules/builtin_node_groups.py
@@ -258,3 +258,33 @@ def get_json_data_for_all_groups_to_load(main_group_name):
 
     load(main_group_name)
     return json_data_by_group_name
+
+def export_builtin_node_group(group):
+    file_path = group_name_to_file_path(group.name)
+    save_group_as_json(group, file_path)
+
+def get_builtin_group_items_cb(node_tree_idname):
+    # TODO: save strings
+    def items_generator(self, context):
+        if not os.path.exists(builtin_node_group_directory):
+            return [('NONE', "None", "")]
+        items = []
+        for file_name in os.listdir(builtin_node_group_directory):
+            if not file_name.endswith(".json"):
+                continue
+            group_name = file_name_to_group_name(file_name)
+            items.append((file_name, group_name, ""))
+        if len(items) == 0:
+            items.append(('NONE', "None", ""))
+        return items
+    return items_generator
+
+def import_builtin_node_group_with_dependencies(group_name):
+    json_data_by_group_name = get_json_data_for_all_groups_to_load(group_name)
+    loaded_group_by_name = dict()
+
+    for group_name, json_data in json_data_by_group_name.items():
+        group = get_or_create_node_group(json_data, loaded_group_by_name, json_data_by_group_name)
+        loaded_group_by_name[group_name] = group
+
+    return loaded_group_by_name[group_name]
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 2918b5fdedf..450e63007d7 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -34,12 +34,10 @@ from bpy.props import (
     StringProperty,
 )
 from builtin_node_groups import (
-    builtin_node_group_directory,
-    group_name_to_file_path,
-    get_json_data_for_all_groups_to_load,
-    get_or_create_node_group,
-    save_group_as_json,
     file_name_to_group_name,
+    export_builtin_node_group,
+    get_builtin_group_items_cb,
+    import_builtin_node_group_with_dependencies,
 )
 
 class NodeSetting(PropertyGroup):
@@ -317,28 +315,7 @@ class NODE_OT_export_group_template(Operator):
 
     def execute(self, context):
         group = context.space_data.edit_tree
-        file_path = group_name_to_file_path(group.name)
-        save_group_as_json(group, file_path)
-        return {'FINISHED'}
-
-
-
-
-class NODE_OT_import_group_template(Operator):
-    bl_idname = "node.import_group_template"
-    bl_label = "Import Node Group Template"
-    bl_options = {'INTERNAL'}
-
-    group_name: StringProperty()
-
-    def execute(self, context):
-        json_data_by_group_name = get_json_data_for_all_groups_to_load(self.group_name)
-        loaded_group_by_name = dict()
-
-        for group_name, json_data in json_data_by_group_name.items():
-            group = get_or_create_node_group(json_data, loaded_group_by_name, json_data_by_group_name)
-            loaded_group_by_name[group_name] = group
-
+        export_builtin_node_group(group)
         return {'FINISHED'}
 
 class NODE_OT_import_group_template_search(bpy.types.Operator):
@@ -346,21 +323,7 @@ class NODE_OT_import_group_template_search(bpy.types.Operator):
     bl_label = "Import Node Group Template Search"
     bl_property = "item"
 
-    def get_group_name_items(self, context):
-        if not os.path.exists(builtin_node_group_directory):
-            return [('NONE', "None", "")]
-        items = []
-        for file_name in os.listdir(builtin_node_group_directory):
-            if not file_name.endswith(".json"):
-                continue
-            group_name = file_name_to_group_name(file_name)
-            items.append((file_name, group_name, ""))
-        if len(items) == 0:
-            items.append(('NONE', "None", ""))
-        return items
-
-
-    item: EnumProperty(items=get_group_name_items)
+    item: EnumProperty(items=get_builtin_group_items_cb("SimulationNodeTree"))
 
     def invoke(self, context, event):
         context.window_manager.invoke_search_popup(self)
@@ -371,7 +334,7 @@ class NODE_OT_import_group_template_search(bpy.types.Operator):
             return {'CANCELLED'}
         else:
             group_name = file_name_to_group_name(self.item)
-            bpy.ops.node.import_group_template(group_name=group_name)
+            import_builtin_node_group_with_dependencies(group_name)
             return {'FINISHED'}
 
 classes = (
@@ -383,6 +346,5 @@ classes = (
     NODE_OT_collapse_hide_unused_toggle,
     NODE_OT_tree_path_parent,
     NODE_OT_export_group_template,
-    NODE_OT_import_group_template,
     NODE_OT_import_group_template_search,
 )



More information about the Bf-blender-cvs mailing list