Remove Redundant Pies #4

Merged
Demeter Dzadik merged 2 commits from remove_redundant_pies into main 2024-08-21 02:30:46 +02:00
4 changed files with 0 additions and 515 deletions

View File

@ -56,9 +56,3 @@ Selection operators.
### View Pie: `Alt + Q`
Change to different view perspectives.
<img src="docs/pie_views.png" width=500>
### Shading Pie: `Z`
Set the display mode of the 3D Viewport. This pie will soon be removed in favor of Blender's built + in equivalent.
### Mode Switch Pie: `Ctrl + Tab`
Switch between Object Modes. This pie will soon be removed in favor of Blender's built + in equivalent.

View File

@ -22,12 +22,10 @@ import importlib
module_names = (
"prefs",
"hotkeys",
"pie_modes_menu",
"pie_views_numpad_menu",
"pie_sculpt_menu",
"pie_origin",
"pie_manipulator_menu",
"pie_shading_menu",
"pie_align_menu",
"pie_delete_menu",
"pie_apply_transform_menu",

View File

@ -1,466 +0,0 @@
# SPDX-FileCopyrightText: 2016-2022 Blender Foundation
#
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Menu, Operator
from .hotkeys import register_hotkey
class PIE_OT_ClassObject(Operator):
bl_idname = "class.object"
bl_label = "Class Object"
bl_description = "Edit/Object Mode Switch"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode == "OBJECT":
bpy.ops.object.mode_set(mode="EDIT")
else:
bpy.ops.object.mode_set(mode="OBJECT")
return {'FINISHED'}
class PIE_OT_ClassTexturePaint(Operator):
bl_idname = "class.pietexturepaint"
bl_label = "Class Texture Paint"
bl_description = "Texture Paint"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.texture_paint_toggle()
else:
bpy.ops.paint.texture_paint_toggle()
return {'FINISHED'}
class PIE_OT_ClassWeightPaint(Operator):
bl_idname = "class.pieweightpaint"
bl_label = "Class Weight Paint"
bl_description = "Weight Paint"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.weight_paint_toggle()
else:
bpy.ops.paint.weight_paint_toggle()
return {'FINISHED'}
class PIE_OT_ClassVertexPaint(Operator):
bl_idname = "class.pievertexpaint"
bl_label = "Class Vertex Paint"
bl_description = "Vertex Paint"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.vertex_paint_toggle()
else:
bpy.ops.paint.vertex_paint_toggle()
return {'FINISHED'}
class PIE_OT_ClassParticleEdit(Operator):
bl_idname = "class.pieparticleedit"
bl_label = "Class Particle Edit"
bl_description = "Particle Edit (must have active particle system)"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.particle.particle_edit_toggle()
else:
bpy.ops.particle.particle_edit_toggle()
return {'FINISHED'}
# Set Mode Operator #
class PIE_OT_SetObjectModePie(Operator):
bl_idname = "object.set_object_mode_pie"
bl_label = "Set the object interactive mode"
bl_description = "I set the interactive mode of object"
bl_options = {'REGISTER'}
mode: bpy.props.StringProperty(name="Interactive mode", default="OBJECT")
def execute(self, context):
if context.active_object:
try:
bpy.ops.object.mode_set(mode=self.mode)
except TypeError:
msg = (
context.active_object.name
+ " It is not possible to enter into the interactive mode"
)
self.report(type={"WARNING"}, message=msg)
else:
self.report(type={"WARNING"}, message="There is no active object")
return {'FINISHED'}
# Edit Selection Modes
class PIE_OT_ClassVertex(Operator):
bl_idname = "class.vertex"
bl_label = "Class Vertex"
bl_description = "Vert Select Mode"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode != "EDIT":
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')
if bpy.ops.mesh.select_mode != "EDGE, FACE":
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')
return {'FINISHED'}
class PIE_OT_ClassEdge(Operator):
bl_idname = "class.edge"
bl_label = "Class Edge"
bl_description = "Edge Select Mode"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode != "EDIT":
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
if bpy.ops.mesh.select_mode != "VERT, FACE":
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
return {'FINISHED'}
class PIE_OT_ClassFace(Operator):
bl_idname = "class.face"
bl_label = "Class Face"
bl_description = "Face Select Mode"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode != "EDIT":
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='FACE')
if bpy.ops.mesh.select_mode != "VERT, EDGE":
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='FACE')
return {'FINISHED'}
class PIE_OT_VertsEdgesFaces(Operator):
bl_idname = "verts.edgesfaces"
bl_label = "Verts Edges Faces"
bl_description = "Vert/Edge/Face Select Mode"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
if context.object.mode != "EDIT":
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')
if bpy.ops.mesh.select_mode != "VERT, EDGE, FACE":
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')
bpy.ops.mesh.select_mode(use_extend=True, use_expand=False, type='EDGE')
bpy.ops.mesh.select_mode(use_extend=True, use_expand=False, type='FACE')
return {'FINISHED'}
# Menus
class PIE_MT_ObjectEditotherModes(Menu):
"""Edit/Object Others modes"""
bl_idname = "MENU_MT_objecteditmodeothermodes"
bl_label = "Edit Selection Modes"
def draw(self, context):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
box.operator("class.vertex", text="Vertex", icon='VERTEXSEL')
box.operator("class.edge", text="Edge", icon='EDGESEL')
box.operator("class.face", text="Face", icon='FACESEL')
box.operator(
"verts.edgesfaces", text="Vertex/Edges/Faces", icon='OBJECT_DATAMODE'
)
class PIE_MT_ObjectEditMode(Menu):
"""Modes Switch"""
bl_idname = "PIE_MT_objecteditmode"
bl_label = "Mode Switch Pie"
def draw(self, context):
layout = self.layout
ob = context.object
# No Object Selected #
if not ob or not ob.select_get():
message = "No Active Object Selected"
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
box = pie.box()
box.label(text=message, icon="INFO")
elif (
ob
and ob.type == 'MESH'
and ob.mode
in {
'OBJECT',
'SCULPT',
'VERTEX_PAINT',
'WEIGHT_PAINT',
'TEXTURE_PAINT',
'PARTICLE_EDIT',
'GPENCIL_EDIT',
}
):
pie = layout.menu_pie()
# 4 - LEFT
pie.operator("class.pieweightpaint", text="Weight Paint", icon='WPAINT_HLT')
# 6 - RIGHT
pie.operator(
"class.pietexturepaint", text="Texture Paint", icon='TPAINT_HLT'
)
# 2 - BOTTOM
pie.menu(
"MENU_MT_objecteditmodeothermodes",
text="Edit Modes",
icon='EDITMODE_HLT',
)
# 8 - TOP
pie.operator(
"class.object", text="Object/Edit Toggle", icon='OBJECT_DATAMODE'
)
# 7 - TOP - LEFT
pie.operator(
"sculpt.sculptmode_toggle", text="Sculpt", icon='SCULPTMODE_HLT'
)
# 9 - TOP - RIGHT
pie.operator("class.pievertexpaint", text="Vertex Paint", icon='VPAINT_HLT')
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
if context.object.particle_systems:
pie.operator(
"class.pieparticleedit", text="Particle Edit", icon='PARTICLEMODE'
)
else:
pie.separator()
elif ob and ob.type == 'MESH' and ob.mode in {'EDIT'}:
pie = layout.menu_pie()
# 4 - LEFT
pie.operator("class.pieweightpaint", text="Weight Paint", icon='WPAINT_HLT')
# 6 - RIGHT
pie.operator(
"class.pietexturepaint", text="Texture Paint", icon='TPAINT_HLT'
)
# 2 - BOTTOM
pie.menu(
"MENU_MT_objecteditmodeothermodes",
text="Edit Modes",
icon='EDITMODE_HLT',
)
# 8 - TOP
pie.operator(
"class.object", text="Edit/Object Toggle", icon='OBJECT_DATAMODE'
)
# 7 - TOP - LEFT
pie.operator(
"sculpt.sculptmode_toggle", text="Sculpt", icon='SCULPTMODE_HLT'
)
# 9 - TOP - RIGHT
pie.operator("class.pievertexpaint", text="Vertex Paint", icon='VPAINT_HLT')
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
if context.object.particle_systems:
pie.operator(
"class.pieparticleedit", text="Particle Edit", icon='PARTICLEMODE'
)
else:
pie.separator()
elif ob and ob.type == 'CURVE':
pie = layout.menu_pie()
# 4 - LEFT
pie.separator()
# 6 - RIGHT
pie.separator()
# 2 - BOTTOM
pie.separator()
# 8 - TOP
pie.operator(
"object.editmode_toggle", text="Edit/Object", icon='OBJECT_DATAMODE'
)
# 7 - TOP - LEFT
pie.separator()
# 9 - TOP - RIGHT
pie.separator()
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
elif ob and ob.type == 'ARMATURE':
pie = layout.menu_pie()
# 4 - LEFT
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Object", icon="OBJECT_DATAMODE"
).mode = "OBJECT"
# 6 - RIGHT
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Pose", icon="POSE_HLT"
).mode = "POSE"
# 2 - BOTTOM
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Edit", icon="EDITMODE_HLT"
).mode = "EDIT"
# 8 - TOP
pie.operator(
"object.editmode_toggle", text="Edit Mode", icon='OBJECT_DATAMODE'
)
# 7 - TOP - LEFT
pie.separator()
# 9 - TOP - RIGHT
pie.separator()
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
elif ob and ob.type == 'FONT':
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
pie.operator(
"object.editmode_toggle",
text="Edit/Object Toggle",
icon='OBJECT_DATAMODE',
)
pie.separator()
pie.separator()
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
elif ob and ob.type == 'SURFACE':
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
pie.operator(
"object.editmode_toggle",
text="Edit/Object Toggle",
icon='OBJECT_DATAMODE',
)
pie.separator()
pie.separator()
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
elif ob and ob.type == 'META':
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
pie.operator(
"object.editmode_toggle",
text="Edit/Object Toggle",
icon='OBJECT_DATAMODE',
)
pie.separator()
pie.separator()
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
elif ob and ob.type == 'LATTICE':
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
pie.operator(
"object.editmode_toggle",
text="Edit/Object Toggle",
icon='OBJECT_DATAMODE',
)
pie.separator()
pie.separator()
pie.separator()
if ob and ob.type == 'GPENCIL':
pie = layout.menu_pie()
# 4 - LEFT
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Sculpt", icon="SCULPTMODE_HLT"
).mode = "SCULPT_GPENCIL"
# 6 - RIGHT
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Draw", icon="GREASEPENCIL"
).mode = "PAINT_GPENCIL"
# 2 - BOTTOM
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Edit", icon="EDITMODE_HLT"
).mode = "EDIT_GPENCIL"
# 8 - TOP
pie.operator(
PIE_OT_SetObjectModePie.bl_idname, text="Object", icon="OBJECT_DATAMODE"
).mode = "OBJECT"
# 7 - TOP - LEFT
pie.separator()
# 9 - TOP - RIGHT
pie.separator()
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
pie.operator(
PIE_OT_SetObjectModePie.bl_idname,
text="Weight Paint",
icon="WPAINT_HLT",
).mode = "WEIGHT_GPENCIL"
elif ob and ob.type in {"LIGHT", "CAMERA", "EMPTY", "SPEAKER"}:
message = "Active Object has only Object Mode available"
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
box = pie.box()
box.label(text=message, icon="INFO")
registry = (
PIE_MT_ObjectEditMode,
PIE_OT_ClassObject,
PIE_OT_ClassVertex,
PIE_OT_ClassEdge,
PIE_OT_ClassFace,
PIE_MT_ObjectEditotherModes,
PIE_OT_ClassTexturePaint,
PIE_OT_ClassWeightPaint,
PIE_OT_ClassVertexPaint,
PIE_OT_ClassParticleEdit,
PIE_OT_VertsEdgesFaces,
PIE_OT_SetObjectModePie,
)
def register():
register_hotkey(
'wm.call_menu_pie',
op_kwargs={'name': 'PIE_MT_objecteditmode'},
hotkey_kwargs={'type': "TAB", 'value': "PRESS", 'ctrl': True},
key_cat="3D View",
)

View File

@ -1,41 +0,0 @@
# SPDX-FileCopyrightText: 2016-2022 Blender Foundation
#
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Menu
from .hotkeys import register_hotkey
# Shading Pie - Z
class PIE_MT_ShadingView(Menu):
bl_idname = "PIE_MT_shadingview"
bl_label = "Shading Pie"
def draw(self, context):
layout = self.layout
pie = layout.menu_pie()
pie.prop(context.space_data.shading, "type", expand=True)
if context.active_object:
if context.mode == 'EDIT_MESH':
pie.operator("MESH_OT_faces_shade_smooth")
pie.operator("MESH_OT_faces_shade_flat")
else:
pie.operator("OBJECT_OT_shade_smooth")
pie.operator("OBJECT_OT_shade_flat")
registry = (
PIE_MT_ShadingView,
)
def register():
register_hotkey(
'wm.call_menu_pie',
op_kwargs={'name': 'PIE_MT_shadingview'},
hotkey_kwargs={'type': "Z", 'value': "PRESS"},
key_cat="3D View",
)