diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-06-10 16:22:47 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-06-10 16:24:04 +0300 |
commit | e5a0cf730aecb4e9b357d7dadc56b1a7e736fe6f (patch) | |
tree | 5d6ccef92fec077a591d474fe5f2ff435d76b0e4 /release | |
parent | afa45fb858d84c2e073abe020e9cc94ef59b87d6 (diff) |
UI: use two columns for the overlay popover
Also use sub-panels.
Patch by @billreynish w/ edits.
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 329 |
1 files changed, 217 insertions, 112 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 3a8fb3ce2f0..cb6f63afdab 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3607,15 +3607,22 @@ class VIEW3D_PT_overlay(Panel): col = layout.column() col.active = display_all - col.prop(view, "show_manipulator", text="Manipulators") - - col.prop(overlay, "show_text", text="Text") - col.prop(overlay, "show_cursor", text="3D Cursor") - col.prop(overlay, "show_outline_selected") - col.prop(overlay, "show_all_objects_origin") - col.prop(overlay, "show_relationship_lines") - col.prop(overlay, "show_motion_paths") - col.prop(overlay, "show_face_orientation") + split = col.split() + + sub = split.column() + sub.prop(view, "show_manipulator", text="Manipulators") + sub.prop(overlay, "show_text", text="Text") + sub.prop(overlay, "show_cursor", text="3D Cursor") + sub.prop(overlay, "show_outline_selected") + sub.prop(overlay, "show_all_objects_origin") + + sub = split.column() + sub.prop(overlay, "show_relationship_lines") + sub.prop(overlay, "show_motion_paths") + sub.prop(overlay, "show_face_orientation") + sub.prop(overlay, "show_backface_culling") + if shading.type == "MATERIAL": + sub.prop(overlay, "show_look_dev") row = col.row() row.prop(overlay, "show_wireframes") @@ -3623,11 +3630,6 @@ class VIEW3D_PT_overlay(Panel): sub.active = overlay.show_wireframes sub.prop(overlay, "wireframe_threshold", text="") - col.prop(overlay, "show_backface_culling") - - if shading.type == "MATERIAL": - col.prop(overlay, "show_look_dev") - col = layout.column() col.active = display_all split = col.split(percentage=0.55) @@ -3638,82 +3640,97 @@ class VIEW3D_PT_overlay(Panel): row.prop(overlay, "show_axis_y", text="Y", toggle=True) row.prop(overlay, "show_axis_z", text="Z", toggle=True) - sub = col.column(align=True) - 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 - subsub.prop(overlay, "grid_scale", text="Scale") - subsub.prop(overlay, "grid_subdivisions", text="Subdivisions") + if overlay.show_floor: + sub = col.column(align=True) + 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 + 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 Mesh:") + if view.show_reconstruction: + 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="") + + +class VIEW3D_PT_overlay_edit_mesh(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Edit Mesh" - col.prop(overlay, "show_occlude_wire") + @classmethod + def poll(cls, context): + return context.mode == 'EDIT_MESH' - col.prop(overlay, "show_weight") - col.label("Show Zero Weights:") - col.row().prop(toolsettings, "vertex_group_user", expand=True) + def draw(self, context): + layout = self.layout + + view = context.space_data + shading = view.shading + overlay = view.overlay + toolsettings = context.tool_settings + display_all = overlay.show_overlays + data = context.active_object.data + statvis = context.tool_settings.statvis + with_freestyle = bpy.app.build_options.freestyle - col.label(text="Normals:") - row = col.row(align=True) + col = layout.column() + col.active = display_all - row.prop(overlay, "show_vertex_normals", text="", icon='VERTEXSEL') - row.prop(overlay, "show_split_normals", text="", icon='LOOPSEL') - row.prop(overlay, "show_face_normals", text="", icon='FACESEL') + split = col.split() - sub = row.row(align=True) - sub.active = overlay.show_vertex_normals or overlay.show_face_normals or overlay.show_split_normals - sub.prop(overlay, "normals_length", text="Size") + 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") + sub.prop(data, "show_edge_sharp", text="Sharp", text_ctxt=i18n_contexts.plural) + sub.prop(data, "show_edge_bevel_weight", text="Bevel") + if not with_freestyle: + sub.prop(data, "show_edge_seams", text="Seams") - split = col.split() + sub = split.column() + sub.prop(overlay, "show_occlude_wire") + sub.prop(data, "show_extra_edge_length", text="Edge Length") + sub.prop(data, "show_extra_edge_angle", text="Edge Angle") + sub.prop(data, "show_extra_face_area", text="Face Area") + sub.prop(data, "show_extra_face_angle", text="Face Angle") - 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 bpy.app.debug: + sub.prop(data, "show_extra_indices", text="Indices") - if with_freestyle: - sub.prop(data, "show_edge_seams", text="Seams") + if with_freestyle: + col.label(text="Freestyle:") + row = col.row() + row.prop(data, "show_freestyle_edge_marks", text="Edge Marks") + row.prop(data, "show_freestyle_face_marks", text="Face Marks") + row.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.label(text="Normals:") + row = col.row(align=True) - 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") + row.prop(overlay, "show_vertex_normals", text="", icon='VERTEXSEL') + row.prop(overlay, "show_split_normals", text="", icon='LOOPSEL') + row.prop(overlay, "show_face_normals", text="", icon='FACESEL') + + sub = row.row(align=True) + sub.active = overlay.show_vertex_normals or overlay.show_face_normals or overlay.show_split_normals + sub.prop(overlay, "normals_length", text="Size") + + col.prop(overlay, "show_weight") + if overlay.show_weight: + col.label("Show Zero Weights:") + col.row().prop(toolsettings, "vertex_group_user", expand=True) + + col.prop(data, "show_statvis", text="Mesh Analysis") + if data.show_statvis: sub = col.column() sub.active = data.show_statvis sub.prop(statvis, "type") @@ -3722,12 +3739,12 @@ class VIEW3D_PT_overlay(Panel): 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) + sub.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") + sub.prop(statvis, "thickness_samples") elif statvis_type == 'INTERSECT': pass elif statvis_type == 'DISTORT': @@ -3739,43 +3756,125 @@ class VIEW3D_PT_overlay(Panel): 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:") - - col = layout.column() - col.active = display_all - col.prop(overlay, "show_transparent_bones") - row = col.split(0.65) - row.prop(overlay, "show_bone_selection") - sub = row.column() - sub.active = display_all and overlay.show_bone_selection - sub.prop(overlay, "bone_selection_alpha", text="") - - elif context.mode == 'EDIT_ARMATURE': - col.separator() - col.label(text="Edit Armature:") +class VIEW3D_PT_overlay_edit_curve(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Edit Curve" - col = layout.column() - col.active = display_all - col.prop(overlay, "show_transparent_bones") + @classmethod + def poll(cls, context): + return context.mode == 'EDIT_CURVE' - elif context.mode in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}: - col.separator() - col.label(text="Paint Mode:") + def draw(self, context): + layout = self.layout + view = context.space_data + data = context.active_object.data + overlay = view.overlay + display_all = overlay.show_overlays + + col = layout.column() + col.active = display_all + + row = col.row() + row.prop(data, "show_handles", text="Handles") + row.prop(data, "show_normal_face", text="Normals") + + +class VIEW3D_PT_overlay_sculpt(Panel): + bl_space_type = 'VIEW_3D' + bl_context = ".sculpt_mode" + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Sculpt" + + @classmethod + def poll(cls, context): + return ( + context.mode == 'SCULPT' and + (context.sculpt_object and context.tool_settings.sculpt) + ) + + def draw(self, context): + layout = self.layout + toolsettings = context.tool_settings + sculpt = toolsettings.sculpt + + layout.prop(sculpt, "show_diffuse_color") + layout.prop(sculpt, "show_mask") + + +class VIEW3D_PT_overlay_pose(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Pose Mode" + + @classmethod + def poll(cls, context): + return context.mode == 'POSE' + + def draw(self, context): + layout = self.layout + view = context.space_data + overlay = view.overlay + display_all = overlay.show_overlays + + col = layout.column() + col.active = display_all + col.prop(overlay, "show_transparent_bones") + row = col.split(0.65) + row.prop(overlay, "show_bone_selection") + sub = row.column() + sub.active = display_all and overlay.show_bone_selection + sub.prop(overlay, "bone_selection_alpha", text="") + + +class VIEW3D_PT_overlay_edit_armature(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Edit Armature" + + @classmethod + def poll(cls, context): + return context.mode == 'EDIT_ARMATURE' + + def draw(self, context): + layout = self.layout + view = context.space_data + overlay = view.overlay + display_all = overlay.show_overlays + + col = layout.column() + col.active = display_all + col.prop(overlay, "show_transparent_bones") + + +class VIEW3D_PT_overlay_paint(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_parent_id = 'VIEW3D_PT_overlay' + bl_label = "Paint" + + @classmethod + def poll(cls, context): + return context.mode in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'} + + def draw(self, context): + layout = self.layout + view = context.space_data + overlay = view.overlay + display_all = overlay.show_overlays + + col = layout.column() + col.active = display_all - if context.mode in {'PAINT_WEIGHT', 'PAINT_VERTEX'}: - col.prop(overlay, "show_paint_wire") + if context.mode in {'PAINT_WEIGHT', 'PAINT_VERTEX'}: + col.prop(overlay, "show_paint_wire") - col.prop(view, "show_mode_shade_override") + col.prop(view, "show_mode_shade_override") class VIEW3D_PT_quad_view(Panel): @@ -4049,6 +4148,12 @@ classes = ( VIEW3D_PT_view3d_stereo, VIEW3D_PT_shading, VIEW3D_PT_overlay, + VIEW3D_PT_overlay_edit_mesh, + VIEW3D_PT_overlay_edit_curve, + VIEW3D_PT_overlay_edit_armature, + VIEW3D_PT_overlay_pose, + VIEW3D_PT_overlay_paint, + VIEW3D_PT_overlay_sculpt, VIEW3D_PT_transform_orientations, VIEW3D_PT_context_properties, ) |