Refactor: Nodes: join group sockets with panel toggle panels

This simplifies the code a lot and is also a step towards making this code more reusable.

Pull Request: https://projects.blender.org/blender/blender/pulls/147041
This commit is contained in:
Jacques Lucke
2025-09-30 14:39:18 +02:00
parent 2bf86f840d
commit 1e8636962e

View File

@@ -1082,52 +1082,21 @@ class NODE_PT_node_tree_interface(Panel):
layout.prop(active_item, "description")
layout.prop(active_item, "default_closed", text="Closed by Default")
if active_item.item_type == 'PANEL' and len(
active_item.interface_items) > 0 and getattr(
active_item.interface_items[0], "is_panel_toggle", False):
panel_toggle_item = active_item.interface_items[0]
header, body = layout.panel("panel_toggle", default_closed=False)
header.label(text="Panel Toggle")
if body:
body.prop(panel_toggle_item, "default_value", text="Default")
col = body.column()
col.prop(panel_toggle_item, "hide_in_modifier")
col.prop(panel_toggle_item, "force_non_field")
layout.use_property_split = False
class NODE_PT_node_tree_interface_panel_toggle(Panel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
bl_category = "Group"
bl_parent_id = "NODE_PT_node_tree_interface"
bl_label = "Panel Toggle"
@classmethod
def poll(cls, context):
snode = context.space_data
if snode is None:
return False
tree = snode.edit_tree
if tree is None:
return False
active_item = tree.interface.active
if not active_item or active_item.item_type != 'PANEL':
return False
if not active_item.interface_items:
return False
first_item = active_item.interface_items[0]
return getattr(first_item, "is_panel_toggle", False)
def draw(self, context):
layout = self.layout
snode = context.space_data
tree = snode.edit_tree
active_item = tree.interface.active
panel_toggle_item = active_item.interface_items[0]
layout.use_property_split = True
layout.use_property_decorate = False
layout.prop(panel_toggle_item, "default_value", text="Default")
col = layout.column()
col.prop(panel_toggle_item, "hide_in_modifier")
col.prop(panel_toggle_item, "force_non_field")
layout.use_property_split = False
class NODE_PT_node_tree_properties(Panel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
@@ -1281,7 +1250,6 @@ classes = (
NODE_PT_node_tree_properties,
NODE_MT_node_tree_interface_context_menu,
NODE_PT_node_tree_interface,
NODE_PT_node_tree_interface_panel_toggle,
NODE_PT_node_tree_animation,
NODE_PT_active_node_generic,
NODE_PT_active_node_color,