UI: Improve geometry nodes tool popover layout
See #101778, #111524 Separate the layout into one popover for object types and another for object modes. Use checkboxes with icons and full phrases like "Object Mode". Also rename the modifier popover to "Modifier". Thought it just has one option right now, so it looks quite weird. --- ![image](https://projects.blender.org/attachments/17e86c35-3c13-48e4-8113-817c5a80fdd3) ![image](https://projects.blender.org/attachments/f92a55a9-e4f0-4c29-8d15-a47a3154ed70) ![image](https://projects.blender.org/attachments/50cd0a93-0abb-4766-819b-62d265251822) Pull Request: https://projects.blender.org/blender/blender/pulls/112749
This commit is contained in:
parent
7c636c1702
commit
2cb34f7c0d
|
@ -162,11 +162,12 @@ class NODE_HT_header(Header):
|
|||
else:
|
||||
row.template_ID(snode, "node_tree", new="node.new_geometry_nodes_modifier")
|
||||
if snode.node_tree and snode.node_tree.asset_data:
|
||||
layout.popover(panel="NODE_PT_geometry_node_asset_traits")
|
||||
layout.popover(panel="NODE_PT_geometry_node_modifier")
|
||||
else:
|
||||
layout.template_ID(snode, "node_tree", new="node.new_geometry_node_group_tool")
|
||||
if snode.node_tree and snode.node_tree.asset_data:
|
||||
layout.popover(panel="NODE_PT_geometry_node_asset_traits")
|
||||
layout.popover(panel="NODE_PT_geometry_node_tool_object_types", text="Types")
|
||||
layout.popover(panel="NODE_PT_geometry_node_tool_mode", text="Modes")
|
||||
display_pin = False
|
||||
else:
|
||||
# Custom node tree is edited as independent ID block
|
||||
|
@ -431,10 +432,62 @@ class NODE_PT_material_slots(Panel):
|
|||
row.operator("object.material_slot_deselect", text="Deselect")
|
||||
|
||||
|
||||
class NODE_PT_geometry_node_asset_traits(Panel):
|
||||
class NODE_PT_geometry_node_tool_object_types(Panel):
|
||||
bl_space_type = 'NODE_EDITOR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Asset"
|
||||
bl_label = "Object Types"
|
||||
bl_ui_units_x = 8
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
snode = context.space_data
|
||||
group = snode.node_tree
|
||||
|
||||
types = [("is_type_mesh", "Mesh", 'MESH_DATA'),
|
||||
("is_type_curve", "Curves", 'CURVES_DATA')]
|
||||
if context.preferences.experimental.use_new_point_cloud_type:
|
||||
types.append(("is_type_point_cloud", "Point Cloud", 'POINTCLOUD_DATA'))
|
||||
|
||||
col = layout.column()
|
||||
col.active = group.is_tool
|
||||
for prop, name, icon in types:
|
||||
row = col.row()
|
||||
row_checkbox = row.row()
|
||||
row_checkbox.prop(group, prop, text="")
|
||||
row_label = row.row()
|
||||
row_label.label(text=name, icon=icon)
|
||||
|
||||
|
||||
class NODE_PT_geometry_node_tool_mode(Panel):
|
||||
bl_space_type = 'NODE_EDITOR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Modes"
|
||||
bl_ui_units_x = 8
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
snode = context.space_data
|
||||
group = snode.node_tree
|
||||
|
||||
modes = [("is_mode_edit", "Edit Mode", 'SCULPTMODE_HLT'),
|
||||
("is_mode_sculpt", "Sculpt Mode", 'EDITMODE_HLT')]
|
||||
|
||||
col = layout.column()
|
||||
col.active = group.is_tool
|
||||
for prop, name, icon in modes:
|
||||
row = col.row()
|
||||
row_checkbox = row.row()
|
||||
row_checkbox.prop(group, prop, text="")
|
||||
row_label = row.row()
|
||||
row_label.label(text=name, icon=icon)
|
||||
|
||||
|
||||
class NODE_PT_geometry_node_modifier(Panel):
|
||||
bl_space_type = 'NODE_EDITOR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Modifier"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@ -444,21 +497,7 @@ class NODE_PT_geometry_node_asset_traits(Panel):
|
|||
snode = context.space_data
|
||||
group = snode.node_tree
|
||||
|
||||
if snode.geometry_nodes_type == 'MODIFIER':
|
||||
layout.prop(group, "is_modifier")
|
||||
else:
|
||||
col = layout.column(heading="Type")
|
||||
col.prop(group, "is_tool")
|
||||
col = layout.column(heading="Mode")
|
||||
col.active = group.is_tool
|
||||
col.prop(group, "is_mode_edit")
|
||||
col.prop(group, "is_mode_sculpt")
|
||||
col = layout.column(heading="Geometry")
|
||||
col.active = group.is_tool
|
||||
col.prop(group, "is_type_mesh")
|
||||
col.prop(group, "is_type_curve")
|
||||
if context.preferences.experimental.use_new_point_cloud_type:
|
||||
col.prop(group, "is_type_point_cloud")
|
||||
layout.prop(group, "is_modifier")
|
||||
|
||||
|
||||
class NODE_PT_node_color_presets(PresetPanel, Panel):
|
||||
|
@ -1141,7 +1180,9 @@ classes = (
|
|||
NODE_MT_context_menu,
|
||||
NODE_MT_view_pie,
|
||||
NODE_PT_material_slots,
|
||||
NODE_PT_geometry_node_asset_traits,
|
||||
NODE_PT_geometry_node_modifier,
|
||||
NODE_PT_geometry_node_tool_object_types,
|
||||
NODE_PT_geometry_node_tool_mode,
|
||||
NODE_PT_node_color_presets,
|
||||
NODE_MT_node_tree_interface_context_menu,
|
||||
NODE_PT_node_tree_interface,
|
||||
|
|
Loading…
Reference in New Issue