[Bf-blender-cvs] [ac7107df7cc] functions: better socket name accessor function

Jacques Lucke noreply at git.blender.org
Wed Apr 3 11:56:21 CEST 2019


Commit: ac7107df7ccfa394ff008283bd38d1d2e386e9ad
Author: Jacques Lucke
Date:   Wed Apr 3 10:25:11 2019 +0200
Branches: functions
https://developer.blender.org/rBac7107df7ccfa394ff008283bd38d1d2e386e9ad

better socket name accessor function

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

M	release/scripts/startup/function_nodes/base.py
M	release/scripts/startup/function_nodes/declaration/base.py
M	release/scripts/startup/function_nodes/declaration/variadic.py
M	release/scripts/startup/function_nodes/function_tree.py

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

diff --git a/release/scripts/startup/function_nodes/base.py b/release/scripts/startup/function_nodes/base.py
index 739ee334122..011a9d2321f 100644
--- a/release/scripts/startup/function_nodes/base.py
+++ b/release/scripts/startup/function_nodes/base.py
@@ -154,12 +154,6 @@ class BaseNode:
         props.function_name = function_name
         props.settings_repr = repr(settings)
 
-    def draw_socket(self, socket, layout):
-        decl_map = self.decl_map
-        decl = decl_map.get_decl_by_socket(socket)
-        index = decl_map.get_socket_index_in_decl(socket)
-        decl.draw_socket(layout, socket, index)
-
     @classmethod
     def iter_final_subclasses(cls):
         yield from filter(lambda x: issubclass(x, bpy.types.Node), iter_subclasses_recursive(cls))
@@ -210,7 +204,8 @@ class BaseSocket:
         return self.color
 
     def draw(self, context, layout, node, text):
-        node.draw_socket(self, layout)
+        decl, index = self.get_decl_with_index(node)
+        decl.draw_socket(layout, self, index)
 
     def draw_self(self, layout, node, text):
         layout.label(text=text)
@@ -221,12 +216,22 @@ class BaseSocket:
         else:
             return tuple(node.inputs).index(self)
 
+    def get_name(self, node):
+        decl, index = self.get_decl_with_index(node)
+        return decl.get_socket_name(self, index)
+
     def to_id(self, node):
         return (node, self.is_output, self.identifier)
 
     def get_decl(self, node):
         return node.decl_map.get_decl_by_socket(self)
 
+    def get_decl_with_index(self, node):
+        decl_map = node.decl_map
+        decl = decl_map.get_decl_by_socket(self)
+        index = decl_map.get_socket_index_in_decl(self)
+        return decl, index
+
 class FunctionNode(BaseNode):
     pass
 
diff --git a/release/scripts/startup/function_nodes/declaration/base.py b/release/scripts/startup/function_nodes/declaration/base.py
index 7af4156b589..807517b4d0f 100644
--- a/release/scripts/startup/function_nodes/declaration/base.py
+++ b/release/scripts/startup/function_nodes/declaration/base.py
@@ -18,4 +18,7 @@ class SocketDeclBase:
         socket.draw_self(layout, self, socket.name)
 
     def operator_socket_call(self, own_socket, other_socket):
-        pass
\ No newline at end of file
+        pass
+
+    def get_socket_name(self, socket, index):
+        return socket.name
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/declaration/variadic.py b/release/scripts/startup/function_nodes/declaration/variadic.py
index 3777be7ab9a..b3d511081d4 100644
--- a/release/scripts/startup/function_nodes/declaration/variadic.py
+++ b/release/scripts/startup/function_nodes/declaration/variadic.py
@@ -64,10 +64,11 @@ class AnyVariadicDecl(SocketDeclBase):
 
         connected_socket = next(iter(connected_sockets))
         connected_type = next(iter(connected_types))
+        connected_node = connected_socket.node
 
         is_output = own_socket.is_output
 
-        item = self.add_item(connected_type, connected_socket.name)
+        item = self.add_item(connected_type, connected_socket.get_name(connected_node))
         self.node.rebuild_and_try_keep_state()
 
         identifier = item.identifier_prefix + self.identifier_suffix
@@ -82,6 +83,13 @@ class AnyVariadicDecl(SocketDeclBase):
         item.identifier_prefix = str(uuid.uuid4())
         return item
 
+    def get_socket_name(self, socket, index):
+        collection = self.get_collection()
+        if index < len(collection):
+            return collection[index].display_name
+        else:
+            return socket.name
+
     @classmethod
     def Property(cls):
         return CollectionProperty(type=DataTypeGroup)
diff --git a/release/scripts/startup/function_nodes/function_tree.py b/release/scripts/startup/function_nodes/function_tree.py
index 9083887eda2..ebfb565daa4 100644
--- a/release/scripts/startup/function_nodes/function_tree.py
+++ b/release/scripts/startup/function_nodes/function_tree.py
@@ -30,7 +30,7 @@ class FunctionTree(bpy.types.NodeTree, BaseTree):
         for socket in node.outputs[:-1]:
             yield FunctionInput(
                 socket.data_type,
-                "hello",
+                socket.get_name(node),
                 socket.identifier)
 
     def iter_function_outputs(self):
@@ -41,7 +41,7 @@ class FunctionTree(bpy.types.NodeTree, BaseTree):
         for socket in node.inputs[:-1]:
             yield FunctionOutput(
                 socket.data_type,
-                "bye",
+                socket.get_name(node),
                 socket.identifier)
 
     def get_input_node(self):



More information about the Bf-blender-cvs mailing list