UI: show symmetry popovers next to newly added mirror buttons
This moves symmetry panels to a small popover next to the mirror axis buttons.
This commit is contained in:
parent
909c0bd043
commit
91a292ba40
|
@ -122,40 +122,44 @@ class VIEW3D_HT_tool_header(Header):
|
|||
row.label(icon='MOD_MIRROR')
|
||||
sub = row.row(align=True)
|
||||
sub.scale_x = 0.6
|
||||
return sub
|
||||
return row, sub
|
||||
|
||||
if mode_string == 'EDIT_MESH':
|
||||
sub = row_for_mirror()
|
||||
_row, sub = row_for_mirror()
|
||||
sub.prop(context.object.data, "use_mirror_x", text="X", toggle=True)
|
||||
tool_settings = context.tool_settings
|
||||
layout.prop(tool_settings, "use_mesh_automerge", text="")
|
||||
elif mode_string == 'EDIT_ARMATURE':
|
||||
sub = row_for_mirror()
|
||||
_row, sub = row_for_mirror()
|
||||
sub.prop(context.object.data, "use_mirror_x", text="X", toggle=True)
|
||||
elif mode_string == 'POSE':
|
||||
sub = row_for_mirror()
|
||||
_row, sub = row_for_mirror()
|
||||
sub.prop(context.object.pose, "use_mirror_x", text="X", toggle=True)
|
||||
elif mode_string == 'PAINT_WEIGHT':
|
||||
sub = row_for_mirror()
|
||||
row, sub = row_for_mirror()
|
||||
sub.prop(context.object.data, "use_mirror_x", text="X", toggle=True)
|
||||
row.popover(panel="VIEW3D_PT_tools_weightpaint_symmetry_for_topbar", text="")
|
||||
elif mode_string == 'SCULPT':
|
||||
sub = row_for_mirror()
|
||||
row, sub = row_for_mirror()
|
||||
sculpt = context.tool_settings.sculpt
|
||||
sub.prop(sculpt, "use_symmetry_x", text="X", toggle=True)
|
||||
sub.prop(sculpt, "use_symmetry_y", text="Y", toggle=True)
|
||||
sub.prop(sculpt, "use_symmetry_z", text="Z", toggle=True)
|
||||
row.popover(panel="VIEW3D_PT_sculpt_symmetry_for_topbar", text="")
|
||||
elif mode_string == 'PAINT_TEXTURE':
|
||||
sub = row_for_mirror()
|
||||
_row, sub = row_for_mirror()
|
||||
ipaint = context.tool_settings.image_paint
|
||||
sub.prop(ipaint, "use_symmetry_x", text="X", toggle=True)
|
||||
sub.prop(ipaint, "use_symmetry_y", text="Y", toggle=True)
|
||||
sub.prop(ipaint, "use_symmetry_z", text="Z", toggle=True)
|
||||
# No need for a popover, the panel only has these options.
|
||||
elif mode_string == 'PAINT_VERTEX':
|
||||
sub = row_for_mirror()
|
||||
row, sub = row_for_mirror()
|
||||
vpaint = context.tool_settings.vertex_paint
|
||||
sub.prop(vpaint, "use_symmetry_x", text="X", toggle=True)
|
||||
sub.prop(vpaint, "use_symmetry_y", text="Y", toggle=True)
|
||||
sub.prop(vpaint, "use_symmetry_z", text="Z", toggle=True)
|
||||
row.popover(panel="VIEW3D_PT_tools_vertexpaint_symmetry_for_topbar", text="")
|
||||
|
||||
# Expand panels from the side-bar as popovers.
|
||||
if mode_string == 'SCULPT':
|
||||
|
|
|
@ -1169,7 +1169,11 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel):
|
|||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.sculpt_object and context.tool_settings.sculpt)
|
||||
return (
|
||||
(context.sculpt_object and context.tool_settings.sculpt) and
|
||||
# When used in the tool header, this is explicitly included next to the XYZ symmetry buttons.
|
||||
(context.region.type != 'TOOL_HEADER')
|
||||
)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@ -1223,6 +1227,14 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel):
|
|||
layout.column().prop(sculpt, "tile_offset", text="Tile Offset")
|
||||
|
||||
|
||||
class VIEW3D_PT_sculpt_symmetry_for_topbar(Panel):
|
||||
bl_space_type = 'TOPBAR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Symmetry"
|
||||
|
||||
draw = VIEW3D_PT_sculpt_symmetry.draw
|
||||
|
||||
|
||||
class VIEW3D_PT_tools_brush_display_show_brush(Panel, View3DPaintPanel):
|
||||
bl_context = ".paint_common" # dot on purpose (access from topbar)
|
||||
bl_label = "Show Brush"
|
||||
|
@ -1290,6 +1302,11 @@ class VIEW3D_PT_tools_weightpaint_symmetry(Panel, View3DPaintPanel):
|
|||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_label = "Symmetry"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
# When used in the tool header, this is explicitly included next to the XYZ symmetry buttons.
|
||||
return (context.region.type != 'TOOL_HEADER')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
tool_settings = context.tool_settings
|
||||
|
@ -1297,6 +1314,14 @@ class VIEW3D_PT_tools_weightpaint_symmetry(Panel, View3DPaintPanel):
|
|||
draw_vpaint_symmetry(layout, wpaint)
|
||||
|
||||
|
||||
class VIEW3D_PT_tools_weightpaint_symmetry_for_topbar(Panel):
|
||||
bl_space_type = 'TOPBAR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Symmetry"
|
||||
|
||||
draw = VIEW3D_PT_tools_weightpaint_symmetry.draw
|
||||
|
||||
|
||||
# TODO, move to space_view3d.py
|
||||
class VIEW3D_PT_tools_weightpaint_options(Panel, View3DPaintPanel):
|
||||
bl_context = ".weightpaint"
|
||||
|
@ -1363,6 +1388,11 @@ class VIEW3D_PT_tools_vertexpaint_symmetry(Panel, View3DPaintPanel):
|
|||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_label = "Symmetry"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
# When used in the tool header, this is explicitly included next to the XYZ symmetry buttons.
|
||||
return (context.region.type != 'TOOL_HEADER')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
tool_settings = context.tool_settings
|
||||
|
@ -1370,6 +1400,14 @@ class VIEW3D_PT_tools_vertexpaint_symmetry(Panel, View3DPaintPanel):
|
|||
draw_vpaint_symmetry(layout, vpaint)
|
||||
|
||||
|
||||
class VIEW3D_PT_tools_vertexpaint_symmetry_for_topbar(Panel):
|
||||
bl_space_type = 'TOPBAR'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Symmetry"
|
||||
|
||||
draw = VIEW3D_PT_tools_vertexpaint_symmetry.draw
|
||||
|
||||
|
||||
# ********** default tools for texture-paint ****************
|
||||
|
||||
|
||||
|
@ -1407,6 +1445,11 @@ class VIEW3D_PT_tools_imagepaint_symmetry(Panel, View3DPaintPanel):
|
|||
bl_label = "Symmetry"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
# When used in the tool header, this is explicitly included next to the XYZ symmetry buttons.
|
||||
return (context.region.type != 'TOOL_HEADER')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
@ -2054,13 +2097,16 @@ classes = (
|
|||
VIEW3D_PT_sculpt_dyntopo,
|
||||
VIEW3D_PT_sculpt_dyntopo_remesh,
|
||||
VIEW3D_PT_sculpt_symmetry,
|
||||
VIEW3D_PT_sculpt_symmetry_for_topbar,
|
||||
VIEW3D_PT_sculpt_options,
|
||||
VIEW3D_PT_sculpt_options_unified,
|
||||
VIEW3D_PT_sculpt_options_gravity,
|
||||
VIEW3D_PT_tools_weightpaint_symmetry,
|
||||
VIEW3D_PT_tools_weightpaint_symmetry_for_topbar,
|
||||
VIEW3D_PT_tools_weightpaint_options,
|
||||
VIEW3D_PT_tools_weightpaint_options_unified,
|
||||
VIEW3D_PT_tools_vertexpaint_symmetry,
|
||||
VIEW3D_PT_tools_vertexpaint_symmetry_for_topbar,
|
||||
VIEW3D_PT_tools_vertexpaint_options,
|
||||
VIEW3D_PT_tools_imagepaint_symmetry,
|
||||
VIEW3D_PT_tools_imagepaint_options,
|
||||
|
|
Loading…
Reference in New Issue