1 # SPDX-License-Identifier: GPL-2.0-or-later
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"
13 def poll(self
, context
):
14 return utils_core
.get_mode() in (
22 def draw(self
, context
):
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)
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",
45 class SymmetryMenu(Menu
):
47 bl_idname
= "VIEW3D_MT_sv3_symmetry_menu"
49 def draw(self
, context
):
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
):
65 bl_idname
= "VIEW3D_MT_sv3_symmetry_radial_menu"
67 def draw(self
, context
):
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)
86 bpy
.utils
.register_class(cls
)
90 bpy
.utils
.unregister_class(cls
)