[Bf-blender-cvs] [ddf0b728702] functions: make socket.data_type a class property

Jacques Lucke noreply at git.blender.org
Mon Jul 22 18:12:58 CEST 2019


Commit: ddf0b728702277793ea95c7afac68e0200a29afa
Author: Jacques Lucke
Date:   Mon Jul 22 12:32:51 2019 +0200
Branches: functions
https://developer.blender.org/rBddf0b728702277793ea95c7afac68e0200a29afa

make socket.data_type a class property

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

M	release/scripts/startup/nodes/base.py
M	release/scripts/startup/nodes/sockets.py
M	release/scripts/startup/nodes/types.py
M	release/scripts/startup/nodes/types_base.py
M	source/blender/functions/frontends/data_flow_nodes/builder.cpp
M	source/blender/functions/frontends/data_flow_nodes/builder.hpp
M	source/blender/functions/frontends/data_flow_nodes/inserters.cpp
M	source/blender/functions/frontends/data_flow_nodes/inserters.hpp
M	source/blender/functions/frontends/data_flow_nodes/inserters/sockets.cpp

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

diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index e8ffac11c82..cabd99a8049 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -214,9 +214,6 @@ class BParticlesNode(BaseNode):
     pass
 
 class DataSocket(BaseSocket):
-    data_type: StringProperty(
-        maxlen=64)
-
     def draw_self(self, layout, node, text):
         if not (self.is_linked or self.is_output) and hasattr(self, "draw_property"):
             self.draw_property(layout, node, text)
@@ -229,11 +226,6 @@ class DataSocket(BaseSocket):
     def restore_state(self, state):
         pass
 
-    def draw_color(self, context, node):
-        from . types import type_infos
-        return type_infos.get_socket_color(self.data_type)
-
-
 class LinkageState:
     def __init__(self, node):
         self.node = node
diff --git a/release/scripts/startup/nodes/sockets.py b/release/scripts/startup/nodes/sockets.py
index 38591a60179..8ce8a6d69c2 100644
--- a/release/scripts/startup/nodes/sockets.py
+++ b/release/scripts/startup/nodes/sockets.py
@@ -12,7 +12,8 @@ class OperatorSocket(bpy.types.NodeSocket, BaseSocket):
 class FloatSocket(bpy.types.NodeSocket, DataSocket):
     bl_idname = "fn_FloatSocket"
     bl_label = "Float Socket"
-    socket_color = (0, 0.3, 0.5, 1)
+    data_type = "Float"
+    color = (0, 0.3, 0.5, 1)
 
     value: FloatProperty(
         name="Value",
@@ -31,7 +32,8 @@ class FloatSocket(bpy.types.NodeSocket, DataSocket):
 class IntegerSocket(bpy.types.NodeSocket, DataSocket):
     bl_idname = "fn_IntegerSocket"
     bl_label = "Integer Socket"
-    socket_color = (0.3, 0.7, 0.5, 1)
+    data_type = "Integer"
+    color = (0.3, 0.7, 0.5, 1)
 
     value: IntProperty(
         name="Value",
@@ -50,7 +52,8 @@ class IntegerSocket(bpy.types.NodeSocket, DataSocket):
 class VectorSocket(bpy.types.NodeSocket, DataSocket):
     bl_idname = "fn_VectorSocket"
     bl_label = "Vector Socket"
-    socket_color = (0, 0, 0.5, 1)
+    data_type = "Vector"
+    color = (0, 0, 0.5, 1)
 
     value: FloatVectorProperty(
         name="Value",
@@ -70,7 +73,8 @@ class VectorSocket(bpy.types.NodeSocket, DataSocket):
 class BooleanSocket(bpy.types.NodeSocket, DataSocket):
     bl_idname = "fn_BooleanSocket"
     bl_label = "Boolean Socket"
-    socket_color = (0.3, 0.3, 0.3, 1)
+    data_type = "Boolean"
+    color = (0.3, 0.3, 0.3, 1)
 
     value: BoolProperty(
         name="Value",
@@ -89,7 +93,8 @@ class BooleanSocket(bpy.types.NodeSocket, DataSocket):
 class ObjectSocket(bpy.types.NodeSocket, DataSocket):
     bl_idname = "fn_ObjectSocket"
     bl_label = "Object Socket"
-    socket_color = (0, 0, 0, 1)
+    data_type = "Object"
+    color = (0, 0, 0, 1)
 
     value: PointerProperty(
         name="Value",
@@ -105,19 +110,25 @@ class ObjectSocket(bpy.types.NodeSocket, DataSocket):
     def restore_state(self, state):
         self.value = state
 
-def create_simple_data_socket(idname, color):
+def create_simple_data_socket(idname, data_type, color):
     return type(idname, (bpy.types.NodeSocket, DataSocket),
         {
             "bl_idname" : idname,
             "bl_label" : idname,
-            "draw_color" : lambda self, context, node: color,
+            "data_type" : data_type,
+            "color" : color,
         })
 
-FloatListSocket = create_simple_data_socket("fn_FloatListSocket", (0, 0.3, 0.5, 0.5))
-VectorListSocket = create_simple_data_socket("fn_VectorListSocket", (0, 0, 0.5, 0.5))
-IntegerListSocket = create_simple_data_socket("fn_IntegerListSocket", (0.3, 0.7, 0.5, 0.5))
-BooleanListSocket = create_simple_data_socket("fn_BooleanListSocket", (0.3, 0.3, 0.3, 0.5))
-ObjectListSocket = create_simple_data_socket("fn_ObjectListSocket", (0, 0, 0, 0.5))
+FloatListSocket = create_simple_data_socket(
+    "fn_FloatListSocket", "Float List", (0, 0.3, 0.5, 0.5))
+VectorListSocket = create_simple_data_socket(
+    "fn_VectorListSocket", "Vector List", (0, 0, 0.5, 0.5))
+IntegerListSocket = create_simple_data_socket(
+    "fn_IntegerListSocket", "Integer List", (0.3, 0.7, 0.5, 0.5))
+BooleanListSocket = create_simple_data_socket(
+    "fn_BooleanListSocket", "Boolean List", (0.3, 0.3, 0.3, 0.5))
+ObjectListSocket = create_simple_data_socket(
+    "fn_ObjectListSocket", "Object List", (0, 0, 0, 0.5))
 
 class EmitterSocket(bpy.types.NodeSocket, BaseSocket):
     bl_idname = "bp_EmitterSocket"
diff --git a/release/scripts/startup/nodes/types.py b/release/scripts/startup/nodes/types.py
index beba691ead0..9b5f52caa56 100644
--- a/release/scripts/startup/nodes/types.py
+++ b/release/scripts/startup/nodes/types.py
@@ -1,42 +1,12 @@
-from . types_base import (
-    DataTypesInfo,
-    UniqueSocketBuilder,
-)
-
-from . sockets import (
-    FloatSocket,
-    IntegerSocket,
-    VectorSocket,
-    BooleanSocket,
-    ObjectSocket,
-    FloatListSocket,
-    VectorListSocket,
-    IntegerListSocket,
-    BooleanListSocket,
-    ObjectListSocket,
-)
+from . import sockets as s
+from . types_base import DataTypesInfo
 
 type_infos = DataTypesInfo()
 
-type_infos.insert_data_type(
-    "Float",
-    UniqueSocketBuilder(FloatSocket),
-    UniqueSocketBuilder(FloatListSocket))
-type_infos.insert_data_type(
-    "Vector",
-    UniqueSocketBuilder(VectorSocket),
-    UniqueSocketBuilder(VectorListSocket))
-type_infos.insert_data_type(
-    "Integer",
-    UniqueSocketBuilder(IntegerSocket),
-    UniqueSocketBuilder(IntegerListSocket))
-type_infos.insert_data_type(
-    "Boolean",
-    UniqueSocketBuilder(BooleanSocket),
-    UniqueSocketBuilder(BooleanListSocket))
-type_infos.insert_data_type(
-    "Object",
-    UniqueSocketBuilder(ObjectSocket),
-    UniqueSocketBuilder(ObjectListSocket))
+type_infos.insert_data_type(s.FloatSocket, s.FloatListSocket)
+type_infos.insert_data_type(s.VectorSocket, s.VectorListSocket)
+type_infos.insert_data_type(s.IntegerSocket, s.IntegerListSocket)
+type_infos.insert_data_type(s.BooleanSocket, s.BooleanListSocket)
+type_infos.insert_data_type(s.ObjectSocket, s.ObjectListSocket)
 
 type_infos.insert_conversion_group(["Boolean", "Integer", "Float"])
diff --git a/release/scripts/startup/nodes/types_base.py b/release/scripts/startup/nodes/types_base.py
index 03825899ea6..648c320a300 100644
--- a/release/scripts/startup/nodes/types_base.py
+++ b/release/scripts/startup/nodes/types_base.py
@@ -31,7 +31,7 @@ ImplicitConversion = namedtuple("ImplicitConversion", ("from_type", "to_type"))
 class DataTypesInfo:
     def __init__(self):
         self.data_types = set()
-        self.builder_by_data_type = dict()
+        self.cls_by_data_type = dict()
         self.list_by_base = dict()
         self.base_by_list = dict()
         self.unidirectional_conversions = set()
@@ -42,21 +42,19 @@ class DataTypesInfo:
     # Insert New Information
     #############################
 
-    def insert_data_type(self, base_type_name, base_builder, list_builder):
-        base_type = base_type_name
-        list_type = base_type_name + " List"
+    def insert_data_type(self, base_socket_cls, list_socket_cls):
+        base_type = base_socket_cls.data_type
+        list_type = list_socket_cls.data_type
 
         assert base_type not in self.data_types
         assert list_type not in self.data_types
-        assert isinstance(base_builder, DataSocketBuilder)
-        assert isinstance(list_builder, DataSocketBuilder)
 
         self.data_types.add(base_type)
         self.data_types.add(list_type)
         self.list_by_base[base_type] = list_type
         self.base_by_list[list_type] = base_type
-        self.builder_by_data_type[base_type] = base_builder
-        self.builder_by_data_type[list_type] = list_builder
+        self.cls_by_data_type[base_type] = base_socket_cls
+        self.cls_by_data_type[list_type] = list_socket_cls
 
         self.all_implicit_conversions.add(ImplicitConversion(base_type, list_type))
 
@@ -118,16 +116,6 @@ class DataTypesInfo:
         assert self.is_list(data_type)
         return self.base_by_list[data_type]
 
-    def to_builder(self, data_type):
-        assert self.is_data_type(data_type)
-        return self.builder_by_data_type[data_type]
-
-    def build(self, data_type, node_sockets, name, identifier):
-        builder = self.to_builder(data_type)
-        socket = builder.build(node_sockets, name, identifier)
-        socket.data_type = data_type
-        return socket
-
     def get_data_type_items(self):
         items = []
         for data_type in self.data_types:
@@ -167,26 +155,10 @@ class DataTypesInfo:
     def iter_base_types(self):
         yield from self.list_by_base.keys()
 
+    # Build
+    ##########################
 
-# Data Socket Builders
-##################################3
-
-class DataSocketBuilder:
-    def build(self, node_sockets, name):
-        raise NotImplementedError()
-
-    def get_color(self, socket):
-        raise NotImplementedError()
-
-class UniqueSocketBuilder(DataSocketBuilder):
-    def __init__(self, socket_cls):
-        self.socket_cls = socket_cls
-
-    def build(self, node_sockets, name, identifier):
-        return node_sockets.new(
-            self.socket_cls.bl_idname,
-            name,
-            identifier=identifier)
-
-    def get_color(self):
-        return self.socket_cls.socket_color
+    def build(self, data_type, node_sockets, name, identifier):
+        idname = self.cls_by_data_type[data_type].bl_idname
+        socket = node_sockets.new(idname, name, identifier=identifier)
+        return socket
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index 5d3edd953a4..50962b7519f 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -283,15 +283,6 @@ SharedType &BTreeGraphBuilder::type_from_rna(PointerRNA &rna, StringRefNull prop
   return this->type_by_name(type_name);
 }
 
-std::string BTreeGraphBuilder::query_socket_type_name(bNodeSocket *bsocket) const
-{
-  BLI_assert(this->is_data_socket(bsocket));
-  PointerRNA rna = this->get_rna(bsocket);
-  char type_name[64];
-  RNA_string_get(&rna, "data_typ

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list