[Bf-blender-cvs] [fc30d4e272a] functions: support for removing sockets in Select node

Jacques Lucke noreply at git.blender.org
Sat Dec 14 15:36:31 CET 2019


Commit: fc30d4e272abd669d228a0036d6a21d175962949
Author: Jacques Lucke
Date:   Sat Dec 14 15:36:00 2019 +0100
Branches: functions
https://developer.blender.org/rBfc30d4e272abd669d228a0036d6a21d175962949

support for removing sockets in Select node

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

M	release/scripts/startup/nodes/base.py
M	release/scripts/startup/nodes/function_nodes/switch.py

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

diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index 793e10993a7..d7d1fb053b0 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -61,10 +61,14 @@ class BaseNode:
 
         from . sync import skip_syncing
         with skip_syncing():
+            self.init_props()
             builder = self.get_node_builder()
             builder.initialize_decls()
             builder.build()
 
+    def init_props(self):
+        pass
+
     @classmethod
     def get_search_terms(cls):
         if not cls.search_terms_only:
diff --git a/release/scripts/startup/nodes/function_nodes/switch.py b/release/scripts/startup/nodes/function_nodes/switch.py
index 3b1030cf34b..0788d3ab899 100644
--- a/release/scripts/startup/nodes/function_nodes/switch.py
+++ b/release/scripts/startup/nodes/function_nodes/switch.py
@@ -42,6 +42,10 @@ class SelectNode(bpy.types.Node, FunctionNode):
         type=SelectNodeItem,
     )
 
+    def init_props(self):
+        self.add_input()
+        self.add_input()
+
     def declaration(self, builder: NodeBuilder):
         builder.fixed_input("select", "Select", "Integer")
         for i, item in enumerate(self.input_items):
@@ -53,6 +57,15 @@ class SelectNode(bpy.types.Node, FunctionNode):
         self.invoke_type_selection(layout, "set_type", "Change Type")
         self.invoke_function(layout, "add_input", "Add Input")
 
+    def draw_socket(self, layout, socket, text, decl, index_in_decl):
+        if len(socket.name) <= 3:
+            index = int(socket.name)
+            row = layout.row(align=True)
+            decl.draw_socket(row, socket, index_in_decl)
+            self.invoke_function(row, "remove_input", "", icon="X", settings=(index, ))
+        else:
+            decl.draw_socket(layout, socket, index_in_decl)
+
     def set_type(self, data_type):
         self.data_type = data_type
 
@@ -60,3 +73,7 @@ class SelectNode(bpy.types.Node, FunctionNode):
         item = self.input_items.add()
         item.identifier = str(uuid.uuid4())
         self.sync_tree()
+
+    def remove_input(self, index):
+        self.input_items.remove(index)
+        self.sync_tree()



More information about the Bf-blender-cvs mailing list