[Bf-blender-cvs] [1d64c35c3b8] functions: allow removal of sockets from pack list node

Jacques Lucke noreply at git.blender.org
Wed Mar 20 19:33:44 CET 2019


Commit: 1d64c35c3b8b0bf831c66a3b127da6266d111620
Author: Jacques Lucke
Date:   Wed Mar 20 19:33:34 2019 +0100
Branches: functions
https://developer.blender.org/rB1d64c35c3b8b0bf831c66a3b127da6266d111620

allow removal of sockets from pack list node

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

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 a99d81d1114..39532b9458d 100644
--- a/release/scripts/startup/function_nodes/socket_decl.py
+++ b/release/scripts/startup/function_nodes/socket_decl.py
@@ -95,7 +95,13 @@ class PackListDecl(SocketDeclBase):
             props.node_name = node.name
             props.prop_name = self.prop_name
         else:
-            socket.draw_self(layout, node)
+            row = layout.row(align=True)
+            socket.draw_self(row, node)
+            props = row.operator("fn.remove_pack_list_input", text="", icon='X')
+            props.tree_name = node.tree.name
+            props.node_name = node.name
+            props.prop_name = self.prop_name
+            props.index = index
 
     def operator_socket_call(self, node, own_socket, other_socket):
         if not isinstance(other_socket, DataSocket):
@@ -168,6 +174,24 @@ class NewPackListInputOperator(bpy.types.Operator):
 
         return {'FINISHED'}
 
+class RemovePackListInputOperator(bpy.types.Operator):
+    bl_idname = "fn.remove_pack_list_input"
+    bl_label = "Remove Pack List Input"
+    bl_options = {'INTERNAL'}
+
+    tree_name: StringProperty()
+    node_name: StringProperty()
+    prop_name: StringProperty()
+    index: IntProperty()
+
+    def execute(self, context):
+        tree = bpy.data.node_groups[self.tree_name]
+        node = tree.nodes[self.node_name]
+        collection = getattr(node, self.prop_name)
+        collection.remove(self.index)
+        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