From c9fba919c2e17f940a6e4c2daa4a5dccc515f646 Mon Sep 17 00:00:00 2001 From: Ryan Inch Date: Sat, 9 Apr 2022 23:33:19 -0400 Subject: space_view3d_brush_menus: Fix T96937 and make symmetry work consistently from all applicable modes. --- space_view3d_brush_menus/__init__.py | 2 +- space_view3d_brush_menus/brush_menu.py | 4 +++ space_view3d_brush_menus/symmetry_menu.py | 46 +++++++++++++++++++------------ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/space_view3d_brush_menus/__init__.py b/space_view3d_brush_menus/__init__.py index e8b8c355..e5ab8d4d 100644 --- a/space_view3d_brush_menus/__init__.py +++ b/space_view3d_brush_menus/__init__.py @@ -6,7 +6,7 @@ bl_info = { "name": "Dynamic Brush Menus", "description": "Fast access to brushes & tools in Sculpt and Paint Modes", "author": "Ryan Inch (Imaginer)", - "version": (1, 1, 8), + "version": (1, 1, 9), "blender": (2, 80, 0), "location": "Spacebar in Sculpt/Paint Modes", "warning": '', diff --git a/space_view3d_brush_menus/brush_menu.py b/space_view3d_brush_menus/brush_menu.py index 6a89dbf6..c844316b 100644 --- a/space_view3d_brush_menus/brush_menu.py +++ b/space_view3d_brush_menus/brush_menu.py @@ -105,6 +105,8 @@ class BrushOptionsMenu(Menu): layout.row().menu("VIEW3D_MT_sv3_stroke_options") layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu") + layout.row().menu("VIEW3D_MT_sv3_master_symmetry_menu") + def texpaint(self, mode, layout, context): toolsettings = context.tool_settings.image_paint @@ -194,6 +196,8 @@ class BrushOptionsMenu(Menu): layout.row().menu(ParticlePuffMenu.bl_idname) layout.row().prop(particle_edit.brush, "use_puff_volume", toggle=True) + layout.row().menu("VIEW3D_MT_sv3_master_symmetry_menu") + class BrushRadiusMenu(Menu): bl_label = "Radius" diff --git a/space_view3d_brush_menus/symmetry_menu.py b/space_view3d_brush_menus/symmetry_menu.py index 727dadd0..9b785fb4 100644 --- a/space_view3d_brush_menus/symmetry_menu.py +++ b/space_view3d_brush_menus/symmetry_menu.py @@ -13,24 +13,33 @@ class MasterSymmetryMenu(Menu): def poll(self, context): return utils_core.get_mode() in ( 'SCULPT', - 'TEXTURE_PAINT' + 'VERTEX_PAINT', + 'WEIGHT_PAINT', + 'TEXTURE_PAINT', + 'PARTICLE_EDIT', ) def draw(self, context): layout = self.layout - if utils_core.get_mode() == 'TEXTURE_PAINT': - layout.row().prop(context.tool_settings.image_paint, - "use_symmetry_x", toggle=True) - layout.row().prop(context.tool_settings.image_paint, - "use_symmetry_y", toggle=True) - layout.row().prop(context.tool_settings.image_paint, - "use_symmetry_z", toggle=True) + if utils_core.get_mode() == 'PARTICLE_EDIT': + layout.row().prop(context.active_object.data, "use_mirror_x", + text="Mirror X", toggle=True) + + elif utils_core.get_mode() == 'TEXTURE_PAINT': + layout.row().prop(context.active_object, "use_mesh_mirror_x", + text="Symmetry X", toggle=True) + layout.row().prop(context.active_object, "use_mesh_mirror_y", + text="Symmetry Y", toggle=True) + layout.row().prop(context.active_object, "use_mesh_mirror_z", + text="Symmetry Z", toggle=True) else: layout.row().menu(SymmetryMenu.bl_idname) layout.row().menu(SymmetryRadialMenu.bl_idname) - layout.row().prop(context.tool_settings.sculpt, - "use_symmetry_feather", toggle=True) + + if utils_core.get_mode() == 'SCULPT': + layout.row().prop(context.tool_settings.sculpt, "use_symmetry_feather", + toggle=True) class SymmetryMenu(Menu): @@ -43,12 +52,12 @@ class SymmetryMenu(Menu): layout.row().label(text="Symmetry") layout.row().separator() - layout.row().prop(context.tool_settings.sculpt, - "use_symmetry_x", toggle=True) - layout.row().prop(context.tool_settings.sculpt, - "use_symmetry_y", toggle=True) - layout.row().prop(context.tool_settings.sculpt, - "use_symmetry_z", toggle=True) + layout.row().prop(context.active_object, "use_mesh_mirror_x", + text="Symmetry X", toggle=True) + layout.row().prop(context.active_object, "use_mesh_mirror_y", + text="Symmetry Y", toggle=True) + layout.row().prop(context.active_object, "use_mesh_mirror_z", + text="Symmetry Z", toggle=True) class SymmetryRadialMenu(Menu): @@ -61,8 +70,9 @@ class SymmetryRadialMenu(Menu): layout.row().label(text="Radial") layout.row().separator() - layout.column().prop(context.tool_settings.sculpt, - "radial_symmetry", text="", slider=True) + mode_tool_settings = getattr(context.tool_settings, utils_core.get_mode().lower()) + + layout.column().prop(mode_tool_settings, "radial_symmetry", text="", slider=True) classes = ( -- cgit v1.2.3