[Bf-blender-cvs] [8450e44cb6e] functions: move data type information into a separate file

Jacques Lucke noreply at git.blender.org
Thu Mar 21 11:12:44 CET 2019


Commit: 8450e44cb6eb0a4a15523b68bca6cd3765408dca
Author: Jacques Lucke
Date:   Thu Mar 21 11:01:04 2019 +0100
Branches: functions
https://developer.blender.org/rB8450e44cb6eb0a4a15523b68bca6cd3765408dca

move data type information into a separate file

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

M	release/scripts/startup/function_nodes/node_operators.py
M	release/scripts/startup/function_nodes/nodes/pack_list.py
M	release/scripts/startup/function_nodes/socket_decl.py
M	release/scripts/startup/function_nodes/sockets.py
A	release/scripts/startup/function_nodes/types.py
M	release/scripts/startup/function_nodes/update.py

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

diff --git a/release/scripts/startup/function_nodes/node_operators.py b/release/scripts/startup/function_nodes/node_operators.py
index 95610cc392f..9da4da77eda 100644
--- a/release/scripts/startup/function_nodes/node_operators.py
+++ b/release/scripts/startup/function_nodes/node_operators.py
@@ -1,6 +1,6 @@
 import bpy
 from bpy.props import *
-from . sockets import type_infos
+from . types import type_infos
 
 class NodeOperatorBase:
     tree_name: StringProperty()
diff --git a/release/scripts/startup/function_nodes/nodes/pack_list.py b/release/scripts/startup/function_nodes/nodes/pack_list.py
index 2dae7cca11a..1d709e06faa 100644
--- a/release/scripts/startup/function_nodes/nodes/pack_list.py
+++ b/release/scripts/startup/function_nodes/nodes/pack_list.py
@@ -2,7 +2,7 @@ import bpy
 from bpy.props import *
 from .. base import FunctionNode
 from .. socket_decl import PackListDecl, FixedSocketDecl
-from .. sockets import type_infos
+from .. types import type_infos
 
 class PackListNode(bpy.types.Node, FunctionNode):
     bl_idname = "fn_PackListNode"
diff --git a/release/scripts/startup/function_nodes/socket_decl.py b/release/scripts/startup/function_nodes/socket_decl.py
index 39532b9458d..e46ef644a41 100644
--- a/release/scripts/startup/function_nodes/socket_decl.py
+++ b/release/scripts/startup/function_nodes/socket_decl.py
@@ -1,7 +1,8 @@
 import bpy
 from bpy.props import *
 from dataclasses import dataclass
-from . sockets import type_infos, OperatorSocket
+from . sockets import OperatorSocket
+from . types import type_infos
 from . base import DataSocket
 import uuid
 
diff --git a/release/scripts/startup/function_nodes/sockets.py b/release/scripts/startup/function_nodes/sockets.py
index 83214eaaee6..b609a5872ed 100644
--- a/release/scripts/startup/function_nodes/sockets.py
+++ b/release/scripts/startup/function_nodes/sockets.py
@@ -85,110 +85,3 @@ class CustomColoredSocket(bpy.types.NodeSocket, DataSocket):
 
     def draw_color(self, context, node):
         return self.color
-
-class SocketBuilder:
-    def build(self, node_sockets, name):
-        raise NotImplementedError()
-
-class UniqueSocketBuilder(SocketBuilder):
-    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)
-
-class ColoredSocketBuilder(SocketBuilder):
-    def __init__(self, color):
-        self.color = color
-
-    def build(self, node_sockets, name, identifier):
-        socket = node_sockets.new(
-            "fn_CustomColoredSocket",
-            name,
-            identifier=identifier)
-        socket.color = self.color
-        return socket
-
-class DataTypesInfo:
-    def __init__(self):
-        self.data_types = set()
-        self.builder_by_data_type = dict()
-        self.list_by_base = dict()
-        self.base_by_list = dict()
-
-    def insert_data_type(self, data_type, builder):
-        assert data_type not in self.data_types
-        assert isinstance(builder, SocketBuilder)
-
-        self.data_types.add(data_type)
-        self.builder_by_data_type[data_type] = builder
-
-    def insert_list_relation(self, base_type, list_type):
-        assert self.is_data_type(base_type)
-        assert self.is_data_type(list_type)
-        assert base_type not in self.list_by_base
-        assert list_type not in self.base_by_list
-
-        self.list_by_base[base_type] = list_type
-        self.base_by_list[list_type] = base_type
-
-    def is_data_type(self, data_type):
-        return data_type in self.data_types
-
-    def is_base(self, data_type):
-        return data_type in self.list_by_base
-
-    def is_list(self, data_type):
-        return data_type in self.base_by_list
-
-    def to_list(self, data_type):
-        assert self.is_base(data_type)
-        return self.list_by_base[data_type]
-
-    def to_base(self, data_type):
-        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:
-            items.append((data_type, data_type, ""))
-        return items
-
-    def get_base_type_items(self):
-        items = []
-        for data_type in self.list_by_base.keys():
-            items.append((data_type, data_type, ""))
-        return items
-
-    def get_data_type_items_cb(self):
-        def callback(_1, _2):
-            return self.get_data_type_items()
-        return callback
-
-
-type_infos = DataTypesInfo()
-
-type_infos.insert_data_type("Float", UniqueSocketBuilder(FloatSocket))
-type_infos.insert_data_type("Vector", UniqueSocketBuilder(VectorSocket))
-type_infos.insert_data_type("Integer", UniqueSocketBuilder(IntegerSocket))
-type_infos.insert_data_type("Float List", ColoredSocketBuilder((0, 0.3, 0.5, 0.5)))
-type_infos.insert_data_type("Vector List", ColoredSocketBuilder((0, 0, 0.5, 0.5)))
-type_infos.insert_data_type("Integer List", ColoredSocketBuilder((0.3, 0.7, 0.5, 0.5)))
-
-type_infos.insert_list_relation("Float", "Float List")
-type_infos.insert_list_relation("Vector", "Vector List")
-type_infos.insert_list_relation("Integer", "Integer List")
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/sockets.py b/release/scripts/startup/function_nodes/types.py
similarity index 61%
copy from release/scripts/startup/function_nodes/sockets.py
copy to release/scripts/startup/function_nodes/types.py
index 83214eaaee6..6e25d078fde 100644
--- a/release/scripts/startup/function_nodes/sockets.py
+++ b/release/scripts/startup/function_nodes/types.py
@@ -1,90 +1,9 @@
-import bpy
-from . base import DataSocket, BaseSocket
-from bpy.props import *
-
-class OperatorSocket(bpy.types.NodeSocket, BaseSocket):
-    bl_idname = "fn_OperatorSocket"
-    bl_label = "Operator Socket"
-
-    def draw_color(self, context, node):
-        return (0, 0, 0, 0)
-
-class FloatSocket(bpy.types.NodeSocket, DataSocket):
-    bl_idname = "fn_FloatSocket"
-    bl_label = "Float Socket"
-
-    value: FloatProperty(
-        name="Value",
-        default=0.0,
-    )
-
-    def draw_property(self, layout, node, text):
-        layout.prop(self, "value", text=text)
-
-    def draw_color(self, context, node):
-        return (0, 0.3, 0.5, 1)
-
-    def get_state(self):
-        return self.value
-
-    def restore_state(self, state):
-        self.value = state
-
-class IntegerSocket(bpy.types.NodeSocket, DataSocket):
-    bl_idname = "fn_IntegerSocket"
-    bl_label = "Integer Socket"
-
-    value: IntProperty(
-        name="Value",
-        default=0,
-    )
-
-    def draw_property(self, layout, node, text):
-        layout.prop(self, "value", text=text)
-
-    def draw_color(self, context, node):
-        return (0.3, 0.7, 0.5, 1)
-
-    def get_state(self):
-        return self.value
-
-    def restore_state(self, state):
-        self.value = state
-
-class VectorSocket(bpy.types.NodeSocket, DataSocket):
-    bl_idname = "fn_VectorSocket"
-    bl_label = "Vector Socket"
-
-    value: FloatVectorProperty(
-        name="Value",
-        size=3,
-        default=(0.0, 0.0, 0.0),
-    )
-
-    def draw_property(self, layout, node, text):
-        layout.column().prop(self, "value", text=text)
-
-    def draw_color(self, context, node):
-        return (0, 0, 0.5, 1)
-
-    def get_state(self):
-        return tuple(self.value)
-
-    def restore_state(self, state):
-        self.value = state
-
-class CustomColoredSocket(bpy.types.NodeSocket, DataSocket):
-    bl_idname = "fn_CustomColoredSocket"
-    bl_label = "Custom Colored Socket"
-
-    color: FloatVectorProperty(
-        size=4,
-        subtype='COLOR',
-        soft_min=0.0,
-        soft_max=1.0)
-
-    def draw_color(self, context, node):
-        return self.color
+from . sockets import (
+    FloatSocket,
+    IntegerSocket,
+    VectorSocket,
+    CustomColoredSocket,
+)
 
 class SocketBuilder:
     def build(self, node_sockets, name):
diff --git a/release/scripts/startup/function_nodes/update.py b/release/scripts/startup/function_nodes/update.py
index 507c36f465b..3699ded7487 100644
--- a/release/scripts/startup/function_nodes/update.py
+++ b/release/scripts/startup/function_nodes/update.py
@@ -2,8 +2,9 @@ import bpy
 from collections import defaultdict
 from contextlib import contextmanager
 
+from . types import type_infos
+from . sockets import OperatorSocket
 from . base import DataSocket, FunctionNodeTree
-from . sockets import type_infos, OperatorSocket
 from . utils.graph import iter_connected_components
 
 from . socket_decl import (



More information about the Bf-blender-cvs mailing list