[Bf-blender-cvs] [dd452a314a0] functions: improve group node ui
Jacques Lucke
noreply at git.blender.org
Thu Dec 5 13:14:32 CET 2019
Commit: dd452a314a09017027dcb4db8865f0a02238c729
Author: Jacques Lucke
Date: Thu Dec 5 11:21:24 2019 +0100
Branches: functions
https://developer.blender.org/rBdd452a314a09017027dcb4db8865f0a02238c729
improve group node ui
===================================================================
M release/scripts/startup/nodes/base.py
M release/scripts/startup/nodes/function_nodes/groups.py
===================================================================
diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index fa6c871462f..2f9fe7ee02c 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -119,6 +119,18 @@ class BaseNode:
def draw_advanced(self, layout):
pass
+ def draw_socket(self, layout, socket, text, decl, index):
+ decl.draw_socket(layout, socket, index)
+
+ def draw_label(self):
+ if self.hide:
+ return self.draw_closed_label()
+ else:
+ return self.bl_label
+
+ def draw_closed_label(self):
+ return self.bl_label
+
def iter_directly_used_trees(self):
return
yield
@@ -211,7 +223,7 @@ class BaseSocket:
def draw(self, context, layout, node, text):
decl, index = self.get_decl_with_index(node)
- decl.draw_socket(layout, self, index)
+ node.draw_socket(layout, self, text, decl, index)
def draw_self(self, layout, node, text):
layout.label(text=text)
diff --git a/release/scripts/startup/nodes/function_nodes/groups.py b/release/scripts/startup/nodes/function_nodes/groups.py
index db306aeff87..2e8f3ec62ad 100644
--- a/release/scripts/startup/nodes/function_nodes/groups.py
+++ b/release/scripts/startup/nodes/function_nodes/groups.py
@@ -23,6 +23,11 @@ class GroupInputNode(bpy.types.Node, BaseNode):
sort_index: IntProperty()
+ display_settings: BoolProperty(
+ name="Display Settings",
+ default=False,
+ )
+
interface_type: EnumProperty(
items=interface_type_items,
default="DATA",
@@ -35,8 +40,6 @@ class GroupInputNode(bpy.types.Node, BaseNode):
)
def declaration(self, builder: NodeBuilder):
- builder.background_color((0.8, 0.8, 0.8))
-
if self.interface_type == "DATA":
builder.fixed_output("value", "Value", self.data_type)
elif self.interface_type == "EXECUTE":
@@ -47,17 +50,24 @@ class GroupInputNode(bpy.types.Node, BaseNode):
assert False
def draw(self, layout):
- col = layout.column()
- col.prop(self, "input_name", text="")
+ if not self.display_settings:
+ return
+
+ layout.prop(self, "interface_type", text="")
if self.interface_type == "DATA":
if hasattr(self.outputs[0], "draw_property"):
- self.outputs[0].draw_property(col, self, "Default")
+ self.outputs[0].draw_property(layout, self, "Default")
- self.invoke_type_selection(col, "set_data_type", "Select Type")
+ self.invoke_type_selection(layout, "set_data_type", "Select Type")
- def draw_advanced(self, layout):
- layout.prop(self, "interface_type", text="")
+ def draw_socket(self, layout, socket, text, decl, index):
+ row = layout.row()
+ row.prop(self, "display_settings", text="", icon="SETTINGS", emboss=False)
+ row.prop(self, "input_name", text="")
+
+ def draw_closed_label(self):
+ return self.input_name + " (Input)"
def set_data_type(self, data_type):
self.data_type = data_type
@@ -69,6 +79,11 @@ class GroupOutputNode(bpy.types.Node, BaseNode):
sort_index: IntProperty()
+ display_settings: BoolProperty(
+ name="Display Settings",
+ default=False,
+ )
+
output_name: StringProperty(
default="Name",
update=BaseNode.sync_tree,
@@ -86,8 +101,6 @@ class GroupOutputNode(bpy.types.Node, BaseNode):
)
def declaration(self, builder: NodeBuilder):
- builder.background_color((0.8, 0.8, 0.8))
-
if self.interface_type == "DATA":
builder.fixed_input("value", "Value", self.data_type)
elif self.interface_type == "EXECUTE":
@@ -96,14 +109,21 @@ class GroupOutputNode(bpy.types.Node, BaseNode):
builder.influences_input("influences", "Influences")
def draw(self, layout):
- col = layout.column()
- col.prop(self, "output_name", text="")
+ if not self.display_settings:
+ return
+
+ layout.prop(self, "interface_type", text="")
if self.interface_type == "DATA":
- self.invoke_type_selection(col, "set_type_type", "Select Type")
+ self.invoke_type_selection(layout, "set_type_type", "Select Type")
- def draw_advanced(self, layout):
- layout.prop(self, "interface_type", text="")
+ def draw_socket(self, layout, socket, text, decl, index):
+ row = layout.row()
+ row.prop(self, "display_settings", text="", icon="SETTINGS", emboss=False)
+ row.prop(self, "output_name", text="")
+
+ def draw_closed_label(self):
+ return self.output_name + " (Output)"
def set_type_type(self, data_type):
self.data_type = data_type
@@ -153,6 +173,9 @@ class GroupNode(bpy.types.Node, FunctionNode):
layout.scale_y = 1.3
self.invoke_group_selector(layout, "set_group", text, icon="NODETREE")
+ def draw_closed_label(self):
+ return self.node_group.name
+
def set_group(self, group):
self.node_group = group
More information about the Bf-blender-cvs
mailing list