forked from bartvdbraak/blender
UI: re-arrange object mode and 3D view buttons
After some consideration we're moving 3D view settings that impact the 3D view back. See T55386 for details.
This commit is contained in:
parent
18cc8809c3
commit
81f24dd781
@ -90,20 +90,6 @@ class TOPBAR_HT_lower_bar(Header):
|
||||
self.draw_center(context)
|
||||
|
||||
def draw_left(self, context):
|
||||
layout = self.layout
|
||||
layer = context.view_layer
|
||||
object = layer.objects.active
|
||||
|
||||
# Object Mode
|
||||
# -----------
|
||||
object_mode = 'OBJECT' if object is None else object.mode
|
||||
act_mode_item = bpy.types.Object.bl_rna.properties['mode'].enum_items[object_mode]
|
||||
|
||||
layout.operator_menu_enum("object.mode_set", "mode", text=act_mode_item.name, icon=act_mode_item.icon)
|
||||
|
||||
layout.template_header_3D_mode()
|
||||
|
||||
def draw_center(self, context):
|
||||
layout = self.layout
|
||||
mode = context.mode
|
||||
|
||||
@ -143,6 +129,9 @@ class TOPBAR_HT_lower_bar(Header):
|
||||
elif mode == 'PARTICLE':
|
||||
layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
|
||||
|
||||
def draw_center(self, context):
|
||||
pass
|
||||
|
||||
def draw_right(self, context):
|
||||
layout = self.layout
|
||||
|
||||
@ -169,99 +158,6 @@ class TOPBAR_HT_lower_bar(Header):
|
||||
elif mode == 'PARTICLE':
|
||||
layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".particlemode", category="")
|
||||
|
||||
# 3D View Options, tsk. maybe users aren't always using 3D view?
|
||||
toolsettings = context.tool_settings
|
||||
scene = context.scene
|
||||
obj = context.active_object
|
||||
|
||||
object_mode = 'OBJECT' if obj is None else obj.mode
|
||||
|
||||
# Pivot & Orientation
|
||||
pivot_point = context.tool_settings.transform_pivot_point
|
||||
act_pivot_point = bpy.types.ToolSettings.bl_rna.properties['transform_pivot_point'].enum_items[pivot_point]
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.popover(
|
||||
space_type='TOPBAR',
|
||||
region_type='HEADER',
|
||||
panel_type="TOPBAR_PT_pivot_point",
|
||||
icon=act_pivot_point.icon,
|
||||
text="",
|
||||
)
|
||||
|
||||
if obj:
|
||||
# Proportional editing
|
||||
if context.gpencil_data and context.gpencil_data.use_stroke_edit_mode:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
elif object_mode in {'EDIT', 'PARTICLE_EDIT'}:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
elif object_mode == 'OBJECT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "use_proportional_edit_objects", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.use_proportional_edit_objects
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
else:
|
||||
# Proportional editing
|
||||
if context.gpencil_data and context.gpencil_data.use_stroke_edit_mode:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
# Snap
|
||||
show_snap = False
|
||||
if obj is None:
|
||||
show_snap = True
|
||||
else:
|
||||
if object_mode not in {'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT'}:
|
||||
show_snap = True
|
||||
else:
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
paint_settings = UnifiedPaintPanel.paint_settings(context)
|
||||
|
||||
if paint_settings:
|
||||
brush = paint_settings.brush
|
||||
if brush and brush.stroke_method == 'CURVE':
|
||||
show_snap = True
|
||||
|
||||
if show_snap:
|
||||
snap_items = bpy.types.ToolSettings.bl_rna.properties['snap_elements'].enum_items
|
||||
for elem in toolsettings.snap_elements:
|
||||
# TODO: Display multiple icons.
|
||||
# (Currently only one of the enabled modes icons is displayed)
|
||||
icon = snap_items[elem].icon
|
||||
break
|
||||
else:
|
||||
icon = 'NONE'
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "use_snap", text="")
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.popover(
|
||||
space_type='TOPBAR',
|
||||
region_type='HEADER',
|
||||
panel_type="TOPBAR_PT_snapping",
|
||||
icon=icon,
|
||||
text=""
|
||||
)
|
||||
|
||||
layout.prop(scene, "transform_orientation", text="")
|
||||
|
||||
|
||||
class _draw_left_context_mode:
|
||||
@staticmethod
|
||||
|
@ -45,14 +45,11 @@ class VIEW3D_HT_header(Header):
|
||||
|
||||
mode = 'OBJECT' if obj is None else obj.mode
|
||||
|
||||
# Testing move mode to topbar.
|
||||
'''
|
||||
act_mode_item = bpy.types.Object.bl_rna.properties['mode'].enum_items[mode]
|
||||
layout.operator_menu_enum("object.mode_set", "mode", text=act_mode_item.name, icon=act_mode_item.icon)
|
||||
del act_mode_item
|
||||
|
||||
layout.template_header_3D_mode()
|
||||
'''
|
||||
|
||||
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
|
||||
shading_type = view.shading.type
|
||||
@ -97,6 +94,90 @@ class VIEW3D_HT_header(Header):
|
||||
|
||||
layout.separator_spacer()
|
||||
|
||||
# Mode & Transform Settings
|
||||
object_mode = 'OBJECT' if obj is None else obj.mode
|
||||
scene = context.scene
|
||||
|
||||
# Pivot & Orientation
|
||||
pivot_point = context.tool_settings.transform_pivot_point
|
||||
act_pivot_point = bpy.types.ToolSettings.bl_rna.properties['transform_pivot_point'].enum_items[pivot_point]
|
||||
|
||||
if obj:
|
||||
# Proportional editing
|
||||
if context.gpencil_data and context.gpencil_data.use_stroke_edit_mode:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
elif object_mode in {'EDIT', 'PARTICLE_EDIT'}:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
elif object_mode == 'OBJECT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "use_proportional_edit_objects", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.use_proportional_edit_objects
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
else:
|
||||
# Proportional editing
|
||||
if context.gpencil_data and context.gpencil_data.use_stroke_edit_mode:
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_edit", icon_only=True)
|
||||
sub = row.row(align=True)
|
||||
sub.active = toolsettings.proportional_edit != 'DISABLED'
|
||||
sub.prop(toolsettings, "proportional_edit_falloff", icon_only=True)
|
||||
|
||||
# Snap
|
||||
show_snap = False
|
||||
if obj is None:
|
||||
show_snap = True
|
||||
else:
|
||||
if object_mode not in {'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT'}:
|
||||
show_snap = True
|
||||
else:
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
paint_settings = UnifiedPaintPanel.paint_settings(context)
|
||||
|
||||
if paint_settings:
|
||||
brush = paint_settings.brush
|
||||
if brush and brush.stroke_method == 'CURVE':
|
||||
show_snap = True
|
||||
|
||||
if show_snap:
|
||||
snap_items = bpy.types.ToolSettings.bl_rna.properties['snap_elements'].enum_items
|
||||
for elem in toolsettings.snap_elements:
|
||||
# TODO: Display multiple icons.
|
||||
# (Currently only one of the enabled modes icons is displayed)
|
||||
icon = snap_items[elem].icon
|
||||
break
|
||||
else:
|
||||
icon = 'NONE'
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "use_snap", text="")
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.popover(
|
||||
space_type='TOPBAR',
|
||||
region_type='HEADER',
|
||||
panel_type="TOPBAR_PT_snapping",
|
||||
icon=icon,
|
||||
text=""
|
||||
)
|
||||
|
||||
layout.prop(scene, "transform_orientation", text="")
|
||||
|
||||
layout.separator()
|
||||
|
||||
# Viewport Settings
|
||||
row = layout.row(align=True)
|
||||
row.prop(shading, "type", text="", expand=True)
|
||||
|
||||
@ -126,54 +207,56 @@ class VIEW3D_MT_editor_menus(Menu):
|
||||
edit_object = context.edit_object
|
||||
gp_edit = context.gpencil_data and context.gpencil_data.use_stroke_edit_mode
|
||||
|
||||
layout.menu("VIEW3D_MT_view")
|
||||
# Use aligned row to squeeze out a bit more space.
|
||||
row = layout.row(align=True)
|
||||
row.menu("VIEW3D_MT_view")
|
||||
|
||||
# Select Menu
|
||||
if gp_edit:
|
||||
layout.menu("VIEW3D_MT_select_gpencil")
|
||||
row.menu("VIEW3D_MT_select_gpencil")
|
||||
elif mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}:
|
||||
mesh = obj.data
|
||||
if mesh.use_paint_mask:
|
||||
layout.menu("VIEW3D_MT_select_paint_mask")
|
||||
row.menu("VIEW3D_MT_select_paint_mask")
|
||||
elif mesh.use_paint_mask_vertex and mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX'}:
|
||||
layout.menu("VIEW3D_MT_select_paint_mask_vertex")
|
||||
row.menu("VIEW3D_MT_select_paint_mask_vertex")
|
||||
elif mode_string != 'SCULPT':
|
||||
layout.menu("VIEW3D_MT_select_%s" % mode_string.lower())
|
||||
row.menu("VIEW3D_MT_select_%s" % mode_string.lower())
|
||||
|
||||
if gp_edit:
|
||||
pass
|
||||
elif mode_string == 'OBJECT':
|
||||
layout.menu("INFO_MT_add", text="Add")
|
||||
row.menu("INFO_MT_add", text="Add")
|
||||
elif mode_string == 'EDIT_MESH':
|
||||
layout.menu("INFO_MT_mesh_add", text="Add")
|
||||
row.menu("INFO_MT_mesh_add", text="Add")
|
||||
elif mode_string == 'EDIT_CURVE':
|
||||
layout.menu("INFO_MT_curve_add", text="Add")
|
||||
row.menu("INFO_MT_curve_add", text="Add")
|
||||
elif mode_string == 'EDIT_SURFACE':
|
||||
layout.menu("INFO_MT_surface_add", text="Add")
|
||||
row.menu("INFO_MT_surface_add", text="Add")
|
||||
elif mode_string == 'EDIT_METABALL':
|
||||
layout.menu("INFO_MT_metaball_add", text="Add")
|
||||
row.menu("INFO_MT_metaball_add", text="Add")
|
||||
elif mode_string == 'EDIT_ARMATURE':
|
||||
layout.menu("INFO_MT_edit_armature_add", text="Add")
|
||||
row.menu("INFO_MT_edit_armature_add", text="Add")
|
||||
|
||||
if gp_edit:
|
||||
layout.menu("VIEW3D_MT_edit_gpencil")
|
||||
row.menu("VIEW3D_MT_edit_gpencil")
|
||||
elif edit_object:
|
||||
layout.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
|
||||
row.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
|
||||
|
||||
if mode_string == 'EDIT_MESH':
|
||||
layout.menu("VIEW3D_MT_edit_mesh_vertices")
|
||||
layout.menu("VIEW3D_MT_edit_mesh_edges")
|
||||
layout.menu("VIEW3D_MT_edit_mesh_faces")
|
||||
row.menu("VIEW3D_MT_edit_mesh_vertices")
|
||||
row.menu("VIEW3D_MT_edit_mesh_edges")
|
||||
row.menu("VIEW3D_MT_edit_mesh_faces")
|
||||
|
||||
elif obj:
|
||||
if mode_string != 'PAINT_TEXTURE':
|
||||
layout.menu("VIEW3D_MT_%s" % mode_string.lower())
|
||||
row.menu("VIEW3D_MT_%s" % mode_string.lower())
|
||||
if mode_string in {'SCULPT', 'PAINT_VERTEX', 'PAINT_WEIGHT', 'PAINT_TEXTURE'}:
|
||||
layout.menu("VIEW3D_MT_brush")
|
||||
row.menu("VIEW3D_MT_brush")
|
||||
if mode_string == 'SCULPT':
|
||||
layout.menu("VIEW3D_MT_hide_mask")
|
||||
row.menu("VIEW3D_MT_hide_mask")
|
||||
else:
|
||||
layout.menu("VIEW3D_MT_object")
|
||||
row.menu("VIEW3D_MT_object")
|
||||
|
||||
|
||||
# ********** Menu **********
|
||||
|
Loading…
Reference in New Issue
Block a user