UI: move 3D view display options into popover

- Moved Mesh Display, Mesh Analysis & Motion Tracking
  display panels to Overlays.
- Removed Item panel from sidebar (buttons available elsewhere).

Patch by @billreynish w/ edits
This commit is contained in:
2018-06-05 15:34:37 +02:00
parent 2cc6e06bdb
commit 60aee3943f

View File

@@ -3476,31 +3476,6 @@ class VIEW3D_PT_view3d_cursor(Panel):
layout.column().prop(view, "cursor_location", text="Location")
class VIEW3D_PT_view3d_name(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Item"
@classmethod
def poll(cls, context):
return (context.space_data and context.active_object)
def draw(self, context):
layout = self.layout
ob = context.active_object
row = layout.row()
row.label(text="", icon='OBJECT_DATA')
row.prop(ob, "name", text="")
if ob.type == 'ARMATURE' and ob.mode in {'EDIT', 'POSE'}:
bone = context.active_bone
if bone:
row = layout.row()
row.label(text="", icon='BONE_DATA')
row.prop(bone, "name", text="")
class VIEW3D_PT_shading(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
@@ -3583,7 +3558,6 @@ class VIEW3D_PT_overlay(Panel):
view = context.space_data
shading = view.shading
overlay = view.overlay
scene = context.scene
toolsettings = context.tool_settings
display_all = overlay.show_overlays
@@ -3619,12 +3593,27 @@ class VIEW3D_PT_overlay(Panel):
sub.active = bool(overlay.show_floor or view.region_quadviews or not view.region_3d.is_perspective)
subsub = sub.column(align=True)
subsub.active = overlay.show_floor
sub.prop(overlay, "grid_scale", text="Scale")
sub.prop(overlay, "grid_subdivisions", text="Subdivisions")
subsub.prop(overlay, "grid_scale", text="Scale")
subsub.prop(overlay, "grid_subdivisions", text="Subdivisions")
col.prop(view, "show_reconstruction", text="Motion Tracking")
sub = col.column(align=True)
sub.active = view.show_reconstruction
sub.prop(view, "show_camera_path", text="Camera Path")
sub.prop(view, "show_bundle_names", text="3D Marker Names")
sub.label(text="Track Type and Size:")
row = sub.row(align=True)
row.prop(view, "tracks_draw_type", text="")
row.prop(view, "tracks_draw_size", text="")
col.separator()
if context.mode == 'EDIT_MESH':
data = context.active_object.data
statvis = context.tool_settings.statvis
with_freestyle = bpy.app.build_options.freestyle
col.separator()
col.label(text="Edit Mode:")
col.label(text="Edit Mesh:")
col.prop(overlay, "show_occlude_wire")
@@ -3643,6 +3632,72 @@ class VIEW3D_PT_overlay(Panel):
sub.active = overlay.show_vertex_normals or overlay.show_face_normals or overlay.show_split_normals
sub.prop(overlay, "normals_length", text="Size")
split = col.split()
sub = split.column()
sub.prop(data, "show_faces", text="Faces")
sub.prop(data, "show_edges", text="Edges")
sub.prop(data, "show_edge_crease", text="Creases")
if with_freestyle:
sub.prop(data, "show_edge_seams", text="Seams")
sub = split.column()
if not with_freestyle:
sub.prop(data, "show_edge_seams", text="Seams")
sub.prop(data, "show_edge_sharp", text="Sharp", text_ctxt=i18n_contexts.plural)
col.prop(data, "show_edge_bevel_weight", text="Bevel")
if with_freestyle:
sub.prop(data, "show_freestyle_edge_marks", text="Edge Marks")
sub.prop(data, "show_freestyle_face_marks", text="Face Marks")
col.separator()
split = col.split()
sub = split.column()
sub.label(text="Edge Info:")
sub.prop(data, "show_extra_edge_length", text="Length")
sub.prop(data, "show_extra_edge_angle", text="Angle")
sub = split.column()
sub.label(text="Face Info:")
sub.prop(data, "show_extra_face_area", text="Area")
sub.prop(data, "show_extra_face_angle", text="Angle")
if bpy.app.debug:
sub.prop(data, "show_extra_indices", text="Indices")
col.prop(data, "show_statvis", text="Mesh Analysis")
sub = col.column()
sub.active = data.show_statvis
sub.prop(statvis, "type")
statvis_type = statvis.type
if statvis_type == 'OVERHANG':
row = sub.row(align=True)
row.prop(statvis, "overhang_min", text="")
row.prop(statvis, "overhang_max", text="")
layout.row().prop(statvis, "overhang_axis", expand=True)
elif statvis_type == 'THICKNESS':
row = sub.row(align=True)
row.prop(statvis, "thickness_min", text="")
row.prop(statvis, "thickness_max", text="")
layout.prop(statvis, "thickness_samples")
elif statvis_type == 'INTERSECT':
pass
elif statvis_type == 'DISTORT':
row = sub.row(align=True)
row.prop(statvis, "distort_min", text="")
row.prop(statvis, "distort_max", text="")
elif statvis_type == 'SHARP':
row = sub.row(align=True)
row.prop(statvis, "sharp_min", text="")
row.prop(statvis, "sharp_max", text="")
elif context.mode == 'EDIT_CURVE':
data = context.active_object.data
col.separator()
col.label(text="Edit Curve:")
row = col.row()
row.prop(data, "show_handles", text="Handles")
row.prop(data, "show_normal_face", text="Normals")
elif context.mode == 'POSE':
col.separator()
col.label(text="Pose Mode:")
@@ -3737,157 +3792,6 @@ class VIEW3D_PT_view3d_stereo(Panel):
split.prop(view, "stereo_3d_volume_alpha", text="Alpha")
class VIEW3D_PT_view3d_motion_tracking(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Motion Tracking"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
def poll(cls, context):
view = context.space_data
return (view)
def draw_header(self, context):
view = context.space_data
self.layout.prop(view, "show_reconstruction", text="")
def draw(self, context):
layout = self.layout
view = context.space_data
col = layout.column()
col.active = view.show_reconstruction
col.prop(view, "show_camera_path", text="Camera Path")
col.prop(view, "show_bundle_names", text="3D Marker Names")
col.label(text="Track Type and Size:")
row = col.row(align=True)
row.prop(view, "tracks_draw_type", text="")
row.prop(view, "tracks_draw_size", text="")
class VIEW3D_PT_view3d_meshdisplay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Mesh Display"
@classmethod
def poll(cls, context):
# The active object check is needed because of local-mode
return (context.active_object and (context.mode == 'EDIT_MESH'))
def draw(self, context):
layout = self.layout
with_freestyle = bpy.app.build_options.freestyle
mesh = context.active_object.data
scene = context.scene
split = layout.split()
col = split.column()
col.label(text="Overlays:")
col.prop(mesh, "show_faces", text="Faces")
col.prop(mesh, "show_edges", text="Edges")
col.prop(mesh, "show_edge_crease", text="Creases")
if with_freestyle:
col.prop(mesh, "show_edge_seams", text="Seams")
col = split.column()
col.label()
if not with_freestyle:
col.prop(mesh, "show_edge_seams", text="Seams")
col.prop(mesh, "show_edge_sharp", text="Sharp", text_ctxt=i18n_contexts.plural)
col.prop(mesh, "show_edge_bevel_weight", text="Bevel")
if with_freestyle:
col.prop(mesh, "show_freestyle_edge_marks", text="Edge Marks")
col.prop(mesh, "show_freestyle_face_marks", text="Face Marks")
col = layout.column()
col.separator()
split = layout.split()
col = split.column()
col.label(text="Edge Info:")
col.prop(mesh, "show_extra_edge_length", text="Length")
col.prop(mesh, "show_extra_edge_angle", text="Angle")
col = split.column()
col.label(text="Face Info:")
col.prop(mesh, "show_extra_face_area", text="Area")
col.prop(mesh, "show_extra_face_angle", text="Angle")
if bpy.app.debug:
layout.prop(mesh, "show_extra_indices", text="Indices")
class VIEW3D_PT_view3d_meshstatvis(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Mesh Analysis"
@classmethod
def poll(cls, context):
# The active object check is needed because of local-mode
return (context.active_object and (context.mode == 'EDIT_MESH'))
def draw_header(self, context):
mesh = context.active_object.data
self.layout.prop(mesh, "show_statvis", text="")
def draw(self, context):
layout = self.layout
mesh = context.active_object.data
statvis = context.tool_settings.statvis
layout.active = mesh.show_statvis
layout.prop(statvis, "type")
statvis_type = statvis.type
if statvis_type == 'OVERHANG':
row = layout.row(align=True)
row.prop(statvis, "overhang_min", text="")
row.prop(statvis, "overhang_max", text="")
layout.row().prop(statvis, "overhang_axis", expand=True)
elif statvis_type == 'THICKNESS':
row = layout.row(align=True)
row.prop(statvis, "thickness_min", text="")
row.prop(statvis, "thickness_max", text="")
layout.prop(statvis, "thickness_samples")
elif statvis_type == 'INTERSECT':
pass
elif statvis_type == 'DISTORT':
row = layout.row(align=True)
row.prop(statvis, "distort_min", text="")
row.prop(statvis, "distort_max", text="")
elif statvis_type == 'SHARP':
row = layout.row(align=True)
row.prop(statvis, "sharp_min", text="")
row.prop(statvis, "sharp_max", text="")
class VIEW3D_PT_view3d_curvedisplay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Curve Display"
@classmethod
def poll(cls, context):
editmesh = context.mode == 'EDIT_CURVE'
return (editmesh)
def draw(self, context):
layout = self.layout
curve = context.active_object.data
col = layout.column()
row = col.row()
row.prop(curve, "show_handles", text="Handles")
row.prop(curve, "show_normal_face", text="Normals")
class VIEW3D_PT_transform_orientations(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
@@ -4086,13 +3990,8 @@ classes = (
VIEW3D_PT_grease_pencil_palettecolor,
VIEW3D_PT_view3d_properties,
VIEW3D_PT_view3d_cursor,
VIEW3D_PT_view3d_name,
VIEW3D_PT_quad_view,
VIEW3D_PT_view3d_stereo,
VIEW3D_PT_view3d_motion_tracking,
VIEW3D_PT_view3d_meshdisplay,
VIEW3D_PT_view3d_meshstatvis,
VIEW3D_PT_view3d_curvedisplay,
VIEW3D_PT_shading,
VIEW3D_PT_overlay,
VIEW3D_PT_transform_orientations,