[Bf-blender-cvs] [8d5f02a191a] functions: New Pack List Input operator

Jacques Lucke noreply at git.blender.org
Wed Mar 20 18:51:12 CET 2019


Commit: 8d5f02a191a8fbf02dc99dbd5a194f0675806e0f
Author: Jacques Lucke
Date:   Wed Mar 20 18:11:56 2019 +0100
Branches: functions
https://developer.blender.org/rB8d5f02a191a8fbf02dc99dbd5a194f0675806e0f

New Pack List Input operator

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

M	release/scripts/startup/function_nodes/socket_decl.py

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

diff --git a/release/scripts/startup/function_nodes/socket_decl.py b/release/scripts/startup/function_nodes/socket_decl.py
index f20afea1556..c04adfc0ed8 100644
--- a/release/scripts/startup/function_nodes/socket_decl.py
+++ b/release/scripts/startup/function_nodes/socket_decl.py
@@ -87,7 +87,10 @@ class PackListDecl(SocketDeclBase):
 
     def draw_socket(self, layout, node, socket, index):
         if isinstance(socket, OperatorSocket):
-            layout.label(text="New")
+            props = layout.operator("fn.new_pack_list_input", text="New", emboss=False)
+            props.tree_name = node.tree.name
+            props.node_name = node.name
+            props.prop_name = self.prop_name
         else:
             socket.draw_self(layout, node)
 
@@ -140,6 +143,28 @@ class PackListPropertyGroup(bpy.types.PropertyGroup):
             ("LIST", "Base", "", "NONE", 1)])
     identifier_prefix: StringProperty()
 
+class NewPackListInputOperator(bpy.types.Operator):
+    bl_idname = "fn.new_pack_list_input"
+    bl_label = "New Pack List Input"
+    bl_options = {'INTERNAL'}
+
+    tree_name: StringProperty()
+    node_name: StringProperty()
+    prop_name: StringProperty()
+
+    def execute(self, context):
+        tree = bpy.data.node_groups[self.tree_name]
+        node = tree.nodes[self.node_name]
+        collection = getattr(node, self.prop_name)
+
+        item = collection.add()
+        item.state = "BASE"
+        item.identifier_prefix = str(uuid.uuid4())
+
+        node.rebuild_and_try_keep_state()
+
+        return {'FINISHED'}
+
 class AnyVariadicDecl(SocketDeclBase):
     def __init__(self, identifier: str, prop_name: str, message: str):
         self.identifier_suffix = identifier



More information about the Bf-blender-cvs mailing list