Merge branch 'blender-v3.6-release'
[blender-addons.git] / space_view3d_brush_menus / symmetry_menu.py
blob9b785fb4310ea783dc9974e1ce7e9c60c76ab5fa
1 # SPDX-License-Identifier: GPL-2.0-or-later
3 import bpy
4 from bpy.types import Menu
5 from . import utils_core
8 class MasterSymmetryMenu(Menu):
9 bl_label = "Symmetry Options"
10 bl_idname = "VIEW3D_MT_sv3_master_symmetry_menu"
12 @classmethod
13 def poll(self, context):
14 return utils_core.get_mode() in (
15 'SCULPT',
16 'VERTEX_PAINT',
17 'WEIGHT_PAINT',
18 'TEXTURE_PAINT',
19 'PARTICLE_EDIT',
22 def draw(self, context):
23 layout = self.layout
25 if utils_core.get_mode() == 'PARTICLE_EDIT':
26 layout.row().prop(context.active_object.data, "use_mirror_x",
27 text="Mirror X", toggle=True)
29 elif utils_core.get_mode() == 'TEXTURE_PAINT':
30 layout.row().prop(context.active_object, "use_mesh_mirror_x",
31 text="Symmetry X", toggle=True)
32 layout.row().prop(context.active_object, "use_mesh_mirror_y",
33 text="Symmetry Y", toggle=True)
34 layout.row().prop(context.active_object, "use_mesh_mirror_z",
35 text="Symmetry Z", toggle=True)
36 else:
37 layout.row().menu(SymmetryMenu.bl_idname)
38 layout.row().menu(SymmetryRadialMenu.bl_idname)
40 if utils_core.get_mode() == 'SCULPT':
41 layout.row().prop(context.tool_settings.sculpt, "use_symmetry_feather",
42 toggle=True)
45 class SymmetryMenu(Menu):
46 bl_label = "Symmetry"
47 bl_idname = "VIEW3D_MT_sv3_symmetry_menu"
49 def draw(self, context):
50 layout = self.layout
52 layout.row().label(text="Symmetry")
53 layout.row().separator()
55 layout.row().prop(context.active_object, "use_mesh_mirror_x",
56 text="Symmetry X", toggle=True)
57 layout.row().prop(context.active_object, "use_mesh_mirror_y",
58 text="Symmetry Y", toggle=True)
59 layout.row().prop(context.active_object, "use_mesh_mirror_z",
60 text="Symmetry Z", toggle=True)
63 class SymmetryRadialMenu(Menu):
64 bl_label = "Radial"
65 bl_idname = "VIEW3D_MT_sv3_symmetry_radial_menu"
67 def draw(self, context):
68 layout = self.layout
70 layout.row().label(text="Radial")
71 layout.row().separator()
73 mode_tool_settings = getattr(context.tool_settings, utils_core.get_mode().lower())
75 layout.column().prop(mode_tool_settings, "radial_symmetry", text="", slider=True)
78 classes = (
79 MasterSymmetryMenu,
80 SymmetryMenu,
81 SymmetryRadialMenu
84 def register():
85 for cls in classes:
86 bpy.utils.register_class(cls)
88 def unregister():
89 for cls in classes:
90 bpy.utils.unregister_class(cls)