UI: 3D View, minor menu reorganization

Changes from D2876 by @meta-androcto

- Move "Delete" to the first menu item in most toplevel menus.
- Add separators.
- Consistent order of Undo/Redo
This commit is contained in:
Campbell Barton 2017-10-19 15:10:41 +11:00
parent b82b55a313
commit a8fb08b19c
1 changed files with 121 additions and 24 deletions

View File

@ -311,17 +311,21 @@ class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base):
VIEW3D_MT_transform_base.draw(self, context)
# armature specific extensions follow...
layout.separator()
obj = context.object
if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'}:
if obj.data.draw_type == 'BBONE':
layout.separator()
layout.operator("transform.transform", text="Scale BBone").mode = 'BONE_SIZE'
elif obj.data.draw_type == 'ENVELOPE':
layout.separator()
layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONE_SIZE'
layout.operator("transform.transform", text="Scale Radius").mode = 'BONE_ENVELOPE'
if context.edit_object and context.edit_object.type == 'ARMATURE':
layout.separator()
layout.operator("armature.align")
@ -660,6 +664,9 @@ class VIEW3D_MT_select_object(Menu):
layout.operator("object.select_all").action = 'TOGGLE'
layout.operator("object.select_all", text="Inverse").action = 'INVERT'
layout.separator()
layout.operator("object.select_random", text="Random")
layout.operator("object.select_mirror", text="Mirror")
layout.operator("object.select_by_layer", text="Select All by Layer")
@ -718,6 +725,9 @@ class VIEW3D_MT_select_pose(Menu):
layout.operator("pose.select_all").action = 'TOGGLE'
layout.operator("pose.select_all", text="Inverse").action = 'INVERT'
layout.operator("pose.select_mirror", text="Flip Active")
layout.separator()
layout.operator("pose.select_constraint_target", text="Constraint Target")
layout.operator("pose.select_linked", text="Linked")
@ -897,6 +907,9 @@ class VIEW3D_MT_select_edit_curve(Menu):
layout.operator("curve.select_all").action = 'TOGGLE'
layout.operator("curve.select_all", text="Inverse").action = 'INVERT'
layout.separator()
layout.operator("curve.select_random")
layout.operator("curve.select_nth")
layout.operator("curve.select_linked", text="Select Linked")
@ -928,6 +941,9 @@ class VIEW3D_MT_select_edit_surface(Menu):
layout.operator("curve.select_all").action = 'TOGGLE'
layout.operator("curve.select_all", text="Inverse").action = 'INVERT'
layout.separator()
layout.operator("curve.select_random")
layout.operator("curve.select_nth")
layout.operator("curve.select_linked", text="Select Linked")
@ -951,9 +967,9 @@ class VIEW3D_MT_select_edit_text(Menu):
def draw(self, context):
layout = self.layout
layout.operator("font.text_copy", text="Copy")
layout.operator("font.text_cut", text="Cut")
layout.operator("font.text_paste", text="Paste")
layout.operator("font.text_cut", text="Cut")
layout.operator("font.text_copy", text="Copy")
layout.separator()
@ -998,13 +1014,16 @@ class VIEW3D_MT_select_edit_lattice(Menu):
layout.separator()
layout.operator("lattice.select_mirror")
layout.operator("lattice.select_random")
layout.operator("lattice.select_all").action = 'TOGGLE'
layout.operator("lattice.select_all", text="Inverse").action = 'INVERT'
layout.separator()
layout.operator("lattice.select_mirror")
layout.operator("lattice.select_random")
layout.separator()
layout.operator("lattice.select_ungrouped", text="Ungrouped Verts")
@ -1065,6 +1084,9 @@ class VIEW3D_MT_select_gpencil(Menu):
layout.operator("gpencil.select_all", text="(De)select All").action = 'TOGGLE'
layout.operator("gpencil.select_all", text="Inverse").action = 'INVERT'
layout.separator()
layout.operator("gpencil.select_linked", text="Linked")
layout.operator_menu_enum("gpencil.select_grouped", "type", text="Grouped")
@ -1153,7 +1175,7 @@ class VIEW3D_MT_angle_control(Menu):
# ********** Add menu **********
# XXX: INFO_MT_ names used to keep backwards compatibility (Addons etc that hook into the menu)
# XXX: INFO_MT_ names used to keep backwards compatibility (Add-ons etc. that hook into the menu)
class INFO_MT_mesh_add(Menu):
@ -1278,12 +1300,12 @@ class INFO_MT_add(Menu):
# "align_view" to work on first call (see [#32719]).
layout.operator_context = 'EXEC_REGION_WIN'
#layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
# layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
#layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
# layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
#layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
# layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
layout.menu("INFO_MT_metaball_add", text="Metaball", icon='OUTLINER_OB_META')
layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
@ -1419,6 +1441,9 @@ class VIEW3D_MT_object_clear(Menu):
layout.operator("object.location_clear", text="Location").clear_delta = False
layout.operator("object.rotation_clear", text="Rotation").clear_delta = False
layout.operator("object.scale_clear", text="Scale").clear_delta = False
layout.separator()
layout.operator("object.origin_clear", text="Origin")
@ -1638,7 +1663,9 @@ class VIEW3D_MT_object_parent(Menu):
layout = self.layout
layout.operator_enum("object.parent_set", "type")
layout.separator()
layout.operator_enum("object.parent_clear", "type")
@ -1649,7 +1676,9 @@ class VIEW3D_MT_object_track(Menu):
layout = self.layout
layout.operator_enum("object.track_set", "type")
layout.separator()
layout.operator_enum("object.track_clear", "type")
@ -1678,6 +1707,9 @@ class VIEW3D_MT_object_constraints(Menu):
layout.operator("object.constraint_add_with_targets")
layout.operator("object.constraints_copy")
layout.separator()
layout.operator("object.constraints_clear")
@ -1700,6 +1732,9 @@ class VIEW3D_MT_object_showhide(Menu):
layout = self.layout
layout.operator("object.hide_view_clear", text="Show Hidden")
layout.separator()
layout.operator("object.hide_view_set", text="Hide Selected").unselected = False
layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True
@ -1737,12 +1772,16 @@ class VIEW3D_MT_make_links(Menu):
def draw(self, context):
layout = self.layout
operator_context_default = layout.operator_context
if len(bpy.data.scenes) > 10:
layout.operator_context = 'INVOKE_REGION_WIN'
layout.operator("object.make_links_scene", text="Objects to Scene...", icon='OUTLINER_OB_EMPTY')
else:
layout.operator_context = 'EXEC_REGION_WIN'
layout.operator_menu_enum("object.make_links_scene", "scene", text="Objects to Scene")
layout.separator()
layout.operator_context = operator_context_default
layout.operator_enum("object.make_links_data", "type") # inline
@ -1842,16 +1881,14 @@ class VIEW3D_MT_brush_paint_modes(Menu):
# ********** Vertex paint menu **********
class VIEW3D_MT_paint_vertex(Menu):
bl_label = "Paint"
def draw(self, context):
layout = self.layout
layout.operator("ed.undo")
layout.operator("ed.redo")
layout.operator("ed.undo")
layout.separator()
@ -1880,9 +1917,12 @@ class VIEW3D_MT_hook(Menu):
if [mod.type == 'HOOK' for mod in context.active_object.modifiers]:
layout.separator()
layout.operator_menu_enum("object.hook_assign", "modifier")
layout.operator_menu_enum("object.hook_remove", "modifier")
layout.separator()
layout.operator_menu_enum("object.hook_select", "modifier")
layout.operator_menu_enum("object.hook_reset", "modifier")
layout.operator_menu_enum("object.hook_recenter", "modifier")
@ -1901,15 +1941,17 @@ class VIEW3D_MT_vertex_group(Menu):
if ob.mode == 'EDIT' or (ob.mode == 'WEIGHT_PAINT' and ob.type == 'MESH' and ob.data.use_paint_mask_vertex):
if ob.vertex_groups.active:
layout.separator()
layout.operator("object.vertex_group_assign", text="Assign to Active Group")
layout.operator(
"object.vertex_group_remove_from",
text="Remove from Active Group",
).use_all_groups = False
layout.operator("object.vertex_group_remove_from", text="Remove from All").use_all_groups = True
layout.separator()
if ob.vertex_groups.active:
layout.separator()
layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group")
layout.operator("object.vertex_group_remove", text="Remove Active Group").all = False
layout.operator("object.vertex_group_remove", text="Remove All Groups").all = True
@ -1917,7 +1959,6 @@ class VIEW3D_MT_vertex_group(Menu):
# ********** Weight paint menu **********
class VIEW3D_MT_paint_weight(Menu):
bl_label = "Weights"
@ -1937,15 +1978,23 @@ class VIEW3D_MT_paint_weight(Menu):
layout.operator("object.vertex_group_normalize_all", text="Normalize All")
layout.operator("object.vertex_group_normalize", text="Normalize")
layout.separator()
layout.operator("object.vertex_group_mirror", text="Mirror")
layout.operator("object.vertex_group_invert", text="Invert")
layout.operator("object.vertex_group_clean", text="Clean")
layout.separator()
layout.operator("object.vertex_group_quantize", text="Quantize")
layout.operator("object.vertex_group_levels", text="Levels")
layout.operator("object.vertex_group_smooth", text="Smooth")
props = layout.operator("object.data_transfer", text="Transfer Weights")
props.use_reverse_transfer = True
props.data_type = 'VGROUP_WEIGHTS'
layout.operator("object.vertex_group_limit_total", text="Limit Total")
layout.operator("object.vertex_group_fix", text="Fix Deforms")
@ -1966,20 +2015,23 @@ class VIEW3D_MT_sculpt(Menu):
toolsettings = context.tool_settings
sculpt = toolsettings.sculpt
layout.operator("ed.undo")
layout.operator("ed.redo")
layout.operator("ed.undo")
layout.separator()
layout.prop(sculpt, "use_symmetry_x")
layout.prop(sculpt, "use_symmetry_y")
layout.prop(sculpt, "use_symmetry_z")
layout.separator()
layout.prop(sculpt, "lock_x")
layout.prop(sculpt, "lock_y")
layout.prop(sculpt, "lock_z")
layout.separator()
layout.prop(sculpt, "use_threaded", text="Threaded Sculpt")
layout.prop(sculpt, "show_low_resolution")
layout.prop(sculpt, "show_brush")
@ -2071,7 +2123,13 @@ class VIEW3D_MT_particle_specials(Menu):
particle_edit = context.tool_settings.particle_edit
layout.operator("particle.rekey")
layout.separator()
layout.operator("particle.delete")
layout.separator()
layout.operator("particle.remove_doubles")
layout.operator("particle.unify_length")
@ -2079,6 +2137,7 @@ class VIEW3D_MT_particle_specials(Menu):
layout.operator("particle.subdivide")
layout.operator("particle.weight_set")
layout.separator()
layout.operator("particle.mirror")
@ -2267,6 +2326,7 @@ class VIEW3D_MT_pose_group(Menu):
layout.operator_context = 'EXEC_AREA'
layout.operator("pose.group_assign", text="Assign to New Group").type = 0
if pose.bone_groups:
active_group = pose.bone_groups.active_index + 1
layout.operator("pose.group_assign", text="Assign to Group").type = active_group
@ -2326,6 +2386,9 @@ class VIEW3D_MT_pose_specials(Menu):
layout.operator("pose.select_constraint_target")
layout.operator("pose.flip_names")
layout.separator()
layout.operator("pose.paths_calculate")
layout.operator("pose.paths_clear")
layout.operator("pose.user_transforms_clear")
@ -2399,6 +2462,10 @@ class VIEW3D_MT_edit_mesh(Menu):
layout.separator()
layout.menu("VIEW3D_MT_edit_mesh_delete")
layout.separator()
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
@ -2411,13 +2478,15 @@ class VIEW3D_MT_edit_mesh(Menu):
layout.operator("mesh.duplicate_move")
layout.menu("VIEW3D_MT_edit_mesh_extrude")
layout.menu("VIEW3D_MT_edit_mesh_delete")
layout.separator()
layout.menu("VIEW3D_MT_edit_mesh_vertices")
layout.menu("VIEW3D_MT_edit_mesh_edges")
layout.menu("VIEW3D_MT_edit_mesh_faces")
layout.separator()
layout.menu("VIEW3D_MT_edit_mesh_normals")
layout.menu("VIEW3D_MT_edit_mesh_clean")
@ -2726,6 +2795,9 @@ class VIEW3D_MT_edit_mesh_clean(Menu):
layout.operator("mesh.dissolve_degenerate")
layout.operator("mesh.dissolve_limited")
layout.operator("mesh.face_make_planar")
layout.separator()
layout.operator("mesh.vert_connect_nonplanar")
layout.operator("mesh.vert_connect_concave")
layout.operator("mesh.remove_doubles")
@ -2784,7 +2856,9 @@ class VIEW3D_MT_edit_gpencil_delete(Menu):
def draw_curve(self, context):
layout = self.layout
toolsettings = context.tool_settings
layout.menu("VIEW3D_MT_edit_curve_delete")
layout.separator()
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
@ -2795,11 +2869,13 @@ def draw_curve(self, context):
layout.operator("curve.extrude_move")
layout.operator("curve.spin")
layout.operator("curve.duplicate_move")
layout.separator()
layout.operator("curve.split")
layout.operator("curve.separate")
layout.operator("curve.make_segment")
layout.operator("curve.cyclic_toggle")
layout.menu("VIEW3D_MT_edit_curve_delete")
layout.separator()
@ -2867,6 +2943,9 @@ class VIEW3D_MT_edit_curve_specials(Menu):
layout.operator("curve.switch_direction")
layout.operator("curve.spline_weight_set")
layout.operator("curve.radius_set")
layout.separator()
layout.operator("curve.smooth")
layout.operator("curve.smooth_weight")
layout.operator("curve.smooth_radius")
@ -2908,6 +2987,9 @@ class VIEW3D_MT_edit_font(Menu):
layout.operator("font.style_toggle", text="Toggle Bold").style = 'BOLD'
layout.operator("font.style_toggle", text="Toggle Italic").style = 'ITALIC'
layout.separator()
layout.operator("font.style_toggle", text="Toggle Underline").style = 'UNDERLINE'
layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS'
@ -2926,9 +3008,15 @@ class VIEW3D_MT_edit_text_chars(Menu):
layout.operator("font.text_insert", text="Degree Sign").text = "\u00B0"
layout.operator("font.text_insert", text="Multiplication Sign").text = "\u00D7"
layout.operator("font.text_insert", text="Circle").text = "\u008A"
layout.separator()
layout.operator("font.text_insert", text="Superscript 1").text = "\u00B9"
layout.operator("font.text_insert", text="Superscript 2").text = "\u00B2"
layout.operator("font.text_insert", text="Superscript 3").text = "\u00B3"
layout.separator()
layout.operator("font.text_insert", text="Double >>").text = "\u00BB"
layout.operator("font.text_insert", text="Double <<").text = "\u00AB"
layout.operator("font.text_insert", text="Promillage").text = "\u2030"
@ -2960,13 +3048,16 @@ class VIEW3D_MT_edit_meta(Menu):
layout.separator()
layout.operator("mball.delete_metaelems", text="Delete...")
layout.separator()
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.separator()
layout.operator("mball.delete_metaelems", text="Delete...")
layout.operator("mball.duplicate_metaelems")
layout.separator()
@ -3024,6 +3115,10 @@ class VIEW3D_MT_edit_armature(Menu):
edit_object = context.edit_object
arm = edit_object.data
layout.operator("armature.delete")
layout.separator()
layout.menu("VIEW3D_MT_transform_armature")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
@ -3039,7 +3134,6 @@ class VIEW3D_MT_edit_armature(Menu):
layout.operator("armature.duplicate_move")
layout.operator("armature.merge")
layout.operator("armature.fill")
layout.operator("armature.delete")
layout.operator("armature.split")
layout.operator("armature.separate")
@ -3147,8 +3241,7 @@ class VIEW3D_MT_edit_gpencil(Menu):
layout.separator()
layout.operator("gpencil.brush_paint", text="Sculpt Strokes").wait_for_input = True
layout.prop_menu_enum(toolsettings.gpencil_sculpt, "tool", text="Sculpt Brush")
layout.menu("VIEW3D_MT_edit_gpencil_delete")
layout.separator()
@ -3158,12 +3251,16 @@ class VIEW3D_MT_edit_gpencil(Menu):
layout.separator()
layout.operator("gpencil.brush_paint", text="Sculpt Strokes").wait_for_input = True
layout.prop_menu_enum(toolsettings.gpencil_sculpt, "tool", text="Sculpt Brush")
layout.separator()
layout.menu("VIEW3D_MT_object_animation") # NOTE: provides keyingset access...
layout.menu("VIEW3D_MT_edit_gpencil_interpolate")
layout.separator()
layout.menu("VIEW3D_MT_edit_gpencil_delete")
layout.operator("gpencil.duplicate_move", text="Duplicate")
layout.operator("gpencil.stroke_subdivide", text="Subdivide")