3d view pies: Fix for missing grease pencil edit mode. fix layout. by italic/meta-androcto

This commit is contained in:
Brendon Murphy 2016-09-12 19:55:46 +10:00
parent 8ffc527b58
commit 88359b9a4d
1 changed files with 133 additions and 46 deletions

View File

@ -21,49 +21,45 @@
bl_info = {
"name": "Hotkey: 'Tab'",
"description": "Switch between 3d view object/edit modes",
# "author": "pitiwazou, meta-androcto",
# "version": (0, 1, 0),
# "author": "pitiwazou, meta-androcto, italic",
# "version": (0, 1, 0),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
"wiki_url": "",
"category": "Mode Switch Pie"
}
}
import bpy
from bpy.types import (
Menu,
Operator,
)
# Define Class Object Mode
Menu,
Operator
)
class ClassObject(Operator):
"""Object Mode"""
bl_idname = "class.object"
bl_label = "Class Object"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Edit/Object Mode Switch"
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'}
# Define Class Vertex
class ClassVertex(Operator):
"""Vertex"""
bl_idname = "class.vertex"
bl_label = "Class Vertex"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Vert Select"
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')
@ -71,17 +67,15 @@ class ClassVertex(Operator):
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='VERT')
return {'FINISHED'}
# Define Class Edge
class ClassEdge(Operator):
"""Edge"""
bl_idname = "class.edge"
bl_label = "Class Edge"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Edge Select"
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')
@ -89,34 +83,31 @@ class ClassEdge(Operator):
bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
return {'FINISHED'}
# Define Class Face
class ClassFace(Operator):
"""Face"""
bl_idname = "class.face"
bl_label = "Class Face"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Face Select"
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'}
# Define Class Texture Paint
class ClassTexturePaint(Operator):
"""Texture Paint"""
bl_idname = "class.pietexturepaint"
bl_label = "Class Texture Paint"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Texture Paint"
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.texture_paint_toggle()
@ -124,17 +115,15 @@ class ClassTexturePaint(Operator):
bpy.ops.paint.texture_paint_toggle()
return {'FINISHED'}
# Define Class Weight Paint
class ClassWeightPaint(Operator):
"""Weight Paint"""
bl_idname = "class.pieweightpaint"
bl_label = "Class Weight Paint"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Weight Paint"
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.weight_paint_toggle()
@ -142,17 +131,15 @@ class ClassWeightPaint(Operator):
bpy.ops.paint.weight_paint_toggle()
return {'FINISHED'}
# Define Class Vertex Paint
class ClassVertexPaint(Operator):
"""Vertex Paint"""
bl_idname = "class.pievertexpaint"
bl_label = "Class Vertex Paint"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Vertex Paint"
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode="OBJECT")
bpy.ops.paint.vertex_paint_toggle()
@ -160,25 +147,38 @@ class ClassVertexPaint(Operator):
bpy.ops.paint.vertex_paint_toggle()
return {'FINISHED'}
# Define Class Particle Edit
class ClassParticleEdit(Operator):
"""Particle Edit"""
bl_idname = "class.pieparticleedit"
bl_label = "Class Particle Edit"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Particle Edit (must have active particle system)"
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'}
class ClassStrokeEdit(Operator):
bl_idname = "class.piestrokeedit"
bl_label = "Class Stroke Edit"
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Stroke Edit"
def execute(self, context):
if context.object.mode == "EDIT":
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.gpencil.editmode_toggle()
else:
bpy.ops.gpencil.editmode_toggle()
return {'FINISHED'}
# Components Selection Mode
@ -241,10 +241,9 @@ class VertsEdgesFaces(Operator):
context.tool_settings.mesh_select_mode = (True, True, True)
return {'FINISHED'}
# Pie Edit/Object Others modes - Tab
class PieObjectEditotherModes(Menu):
"""Edit/Object Others modes"""
bl_idname = "menu.objecteditmodeothermodes"
bl_label = "Edit Selection Modes"
@ -262,10 +261,10 @@ class PieObjectEditotherModes(Menu):
box.operator("verts.edgesfaces", text="Vertex/Edges/Faces", icon='OBJECT_DATAMODE')
box.operator("wm.context_toggle", text="Limit to Visible",
icon="ORTHO").data_path = "space_data.use_occlude_geometry"
# Pie Modes Switch- Tab key
class PieObjectEditMode(Menu):
"""Modes Switch"""
bl_idname = "pie.objecteditmode"
bl_label = "Modes Menu (Tab)"
@ -273,7 +272,7 @@ class PieObjectEditMode(Menu):
layout = self.layout
ob = context.object
if ob and ob.type == 'MESH' and ob.mode in {'OBJECT', 'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT', 'PARTICLE'}:
if ob and ob.type == 'MESH' and ob.mode in {'OBJECT', 'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT', 'PARTICLE_EDIT'}:
pie = layout.menu_pie()
# 4 - LEFT
pie.operator("class.pievertexpaint", text="Vertex Paint", icon='VPAINT_HLT')
@ -290,9 +289,15 @@ class PieObjectEditMode(Menu):
# 1 - BOTTOM - LEFT
if context.object.particle_systems:
pie.operator("class.pieparticleedit", text="Particle Edit", icon='PARTICLEMODE')
else:
pie.separator()
# 3 - BOTTOM - RIGHT
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'MESH' and ob.mode in {'EDIT'}:
elif ob and ob.type == 'MESH' and ob.mode in {'EDIT'}:
pie = layout.menu_pie()
# 4 - LEFT
pie.operator("class.pievertexpaint", text="Vertex Paint", icon='VPAINT_HLT')
@ -306,37 +311,107 @@ class PieObjectEditMode(Menu):
pie.operator("sculpt.sculptmode_toggle", text="Sculpt", icon='SCULPTMODE_HLT')
# 9 - TOP - RIGHT
pie.operator("class.pieweightpaint", text="Weight Paint", icon='WPAINT_HLT')
# 1 - BOTTOM - LEFT
if context.object.particle_systems:
pie.operator("class.pieparticleedit", text="Particle Edit", icon='PARTICLEMODE')
else:
pie.separator()
# 3 - BOTTOM - RIGHT
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'CURVE':
elif ob and ob.type == 'CURVE':
pie = layout.menu_pie()
pie.separator()
pie.separator()
pie.separator()
pie.operator("object.editmode_toggle", text="Edit/Object", icon='OBJECT_DATAMODE')
pie.separator()
pie.separator()
pie.separator()
# 3 - BOTTOM - RIGHT
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'ARMATURE':
elif ob and ob.type == 'ARMATURE':
pie = layout.menu_pie()
pie.operator("object.editmode_toggle", text="Edit Mode", icon='OBJECT_DATAMODE')
pie.separator()
pie.operator("object.posemode_toggle", text="Pose", icon='POSE_HLT')
pie.operator("class.object", text="Object Mode", icon='OBJECT_DATAMODE')
pie.separator()
pie.operator("object.editmode_toggle", text="Edit Mode", icon='OBJECT_DATAMODE')
pie.separator()
pie.separator()
pie.separator()
# 3 - BOTTOM - RIGHT
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'FONT':
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
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'SURFACE':
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
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'META':
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
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
if ob and ob.type == 'LATTICE':
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()
# 3 - BOTTOM - RIGHT
if context.gpencil_data:
pie.operator("class.piestrokeedit", text="Stroke Edit", icon='GREASEPENCIL')
else:
pie.separator()
classes = (
PieObjectEditMode,
@ -349,11 +424,12 @@ classes = (
ClassWeightPaint,
ClassVertexPaint,
ClassParticleEdit,
ClassStrokeEdit,
VertsEdges,
EdgesFaces,
VertsFaces,
VertsEdgesFaces
)
)
addon_keymaps = []
@ -368,7 +444,12 @@ def register():
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS')
kmi.properties.name = "pie.objecteditmode"
# kmi.active = True
# kmi.active = True
addon_keymaps.append((km, kmi))
km = wm.keyconfigs.addon.keymaps.new(name='Grease Pencil Stroke Edit Mode')
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS')
kmi.properties.name = "pie.objecteditmode"
addon_keymaps.append((km, kmi))
@ -385,5 +466,11 @@ def unregister():
if kmi.properties.name == "pie.objecteditmode":
km.keymap_items.remove(kmi)
km = kc.keymaps['Grease Pencil Stroke Edit Mode']
for kmi in km.keymap_items:
if kmi.idname == 'wm.call_menu_pie':
if kmi.properties.name == "pie.objecteditmode":
km.keymap_items.remove(kmi)
if __name__ == "__main__":
register()