[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