Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--space_view3d_pie_menus/__init__.py96
-rw-r--r--space_view3d_pie_menus/pie_align_menu.py368
-rw-r--r--space_view3d_pie_menus/pie_animation_menu.py18
-rw-r--r--space_view3d_pie_menus/pie_apply_transform_menu.py87
-rw-r--r--space_view3d_pie_menus/pie_cursor.py31
-rw-r--r--space_view3d_pie_menus/pie_delete_menu.py30
-rw-r--r--space_view3d_pie_menus/pie_editor_switch_menu.py59
-rw-r--r--space_view3d_pie_menus/pie_manipulator_menu.py40
-rw-r--r--space_view3d_pie_menus/pie_modes_menu.py26
-rw-r--r--space_view3d_pie_menus/pie_orientation_menu.py17
-rw-r--r--space_view3d_pie_menus/pie_origin.py67
-rw-r--r--space_view3d_pie_menus/pie_origin_cursor.py225
-rw-r--r--space_view3d_pie_menus/pie_pivot_point_menu.py18
-rw-r--r--space_view3d_pie_menus/pie_proportional_menu.py64
-rw-r--r--space_view3d_pie_menus/pie_save_open_menu.py22
-rw-r--r--space_view3d_pie_menus/pie_sculpt_menu.py102
-rw-r--r--space_view3d_pie_menus/pie_select_menu.py69
-rw-r--r--space_view3d_pie_menus/pie_shading_menu.py22
-rw-r--r--space_view3d_pie_menus/pie_snap_menu.py41
-rw-r--r--space_view3d_pie_menus/pie_views_numpad_menu.py69
20 files changed, 548 insertions, 923 deletions
diff --git a/space_view3d_pie_menus/__init__.py b/space_view3d_pie_menus/__init__.py
index 5a08426f..01afb97b 100644
--- a/space_view3d_pie_menus/__init__.py
+++ b/space_view3d_pie_menus/__init__.py
@@ -18,19 +18,6 @@
# <pep8 compliant>
-bl_info = {
- "name": "3D Viewport Pie Menus",
- "author": "meta-androcto, pitiwazou, chromoly, italic",
- "version": (1, 1, 4),
- "blender": (2, 7, 7),
- "description": "Individual Pie Menu Activation List",
- "location": "Addons Preferences",
- "warning": "",
- "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
- "Scripts/3D_interaction/viewport_pies",
- "category": "Pie Menu"
- }
-
import bpy
from bpy.props import (
@@ -42,6 +29,20 @@ from bpy.types import (
AddonPreferences,
)
+
+bl_info = {
+ "name": "3D Viewport Pie Menus",
+ "author": "meta-androcto, pitiwazou, chromoly, italic",
+ "version": (1, 1, 5),
+ "blender": (2, 7, 7),
+ "description": "Individual Pie Menu Activation List",
+ "location": "Addons Preferences",
+ "warning": "",
+ "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
+ "Scripts/3D_interaction/viewport_pies",
+ "category": "Pie Menu"
+ }
+
sub_modules_names = (
"pie_modes_menu",
"pie_views_numpad_menu",
@@ -64,7 +65,8 @@ sub_modules_names = (
)
-sub_modules = [__import__(__package__ + "." + submod, {}, {}, submod) for submod in sub_modules_names]
+sub_modules = [__import__(__package__ + "." + submod, {}, {}, submod) for
+ submod in sub_modules_names]
sub_modules.sort(key=lambda mod: (mod.bl_info['category'], mod.bl_info['name']))
@@ -122,11 +124,60 @@ def unregister_submodule(mod):
del prefs[name]
+def enable_all_modules(self, context):
+ for mod in sub_modules:
+ mod_name = mod.__name__.split('.')[-1]
+ setattr(self, 'use_' + mod_name, False)
+ if not mod.__addon_enabled__:
+ setattr(self, 'use_' + mod_name, True)
+ mod.__addon_enabled__ = True
+
+ return None
+
+
+def disable_all_modules(self, context):
+ for mod in sub_modules:
+ mod_name = mod.__name__.split('.')[-1]
+
+ if mod.__addon_enabled__:
+ setattr(self, 'use_' + mod_name, False)
+ mod.__addon_enabled__ = False
+
+ return None
+
+
class PieToolsPreferences(AddonPreferences):
bl_idname = __name__
+ enable_all = BoolProperty(
+ name="Enable all",
+ description="Enable all Pie Modules",
+ default=False,
+ update=enable_all_modules
+ )
+ disable_all = BoolProperty(
+ name="Disable all",
+ description="Disable all Pie Modules",
+ default=False,
+ update=disable_all_modules
+ )
+
def draw(self, context):
layout = self.layout
+ split = layout.split(percentage=0.5, align=True)
+ row = split.row()
+ row.alignment = "LEFT"
+ sub_box = row.box()
+ sub_box.prop(self, "enable_all", emboss=False,
+ icon="VISIBLE_IPO_ON", icon_only=True)
+ row.label("Enable All")
+
+ row = split.row()
+ row.alignment = "RIGHT"
+ row.label("Disable All")
+ sub_box = row.box()
+ sub_box.prop(self, "disable_all", emboss=False,
+ icon="VISIBLE_IPO_OFF", icon_only=True)
for mod in sub_modules:
mod_name = mod.__name__.split('.')[-1]
@@ -161,10 +212,12 @@ class PieToolsPreferences(AddonPreferences):
split = col.row().split(percentage=0.15)
split.label('Location:')
split.label(info['location'])
- if info.get('author') and info.get('author') != 'chromoly':
+ """
+ if info.get('author'):
split = col.row().split(percentage=0.15)
split.label('Author:')
split.label(info['author'])
+ """
if info.get('version'):
split = col.row().split(percentage=0.15)
split.label('Version:')
@@ -196,12 +249,14 @@ class PieToolsPreferences(AddonPreferences):
try:
prefs.draw(context)
except:
+ import traceback
traceback.print_exc()
box.label(text='Error (see console)', icon='ERROR')
del prefs.layout
row = layout.row()
- row.label("End of Pie Menu Activations")
+ row.label(text="End of Advanced Object Panels Activations",
+ icon="FILE_PARENT")
for mod in sub_modules:
@@ -219,10 +274,10 @@ for mod in sub_modules:
return update
prop = BoolProperty(
- name=info['name'],
- description=info.get('description', ''),
- update=gen_update(mod),
- )
+ name=info['name'],
+ description=info.get('description', ''),
+ update=gen_update(mod),
+ )
setattr(PieToolsPreferences, 'use_' + mod_name, prop)
prop = BoolProperty()
setattr(PieToolsPreferences, 'show_expanded_' + mod_name, prop)
@@ -253,5 +308,6 @@ def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_align_menu.py b/space_view3d_pie_menus/pie_align_menu.py
index 94b0e1cf..c77b9253 100644
--- a/space_view3d_pie_menus/pie_align_menu.py
+++ b/space_view3d_pie_menus/pie_align_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Alt X'",
"description": "V/E/F Align tools",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "Mesh Edit Mode",
"warning": "",
@@ -35,11 +35,10 @@ from bpy.types import (
Menu,
Operator,
)
+from bpy.props import EnumProperty
# Pie Align - Alt + X
-
-
class PieAlign(Menu):
bl_idname = "pie.align"
bl_label = "Pie Align"
@@ -54,32 +53,46 @@ class PieAlign(Menu):
# 2 - BOTTOM
pie.operator("align.y", text="Align Y", icon='PLUS')
# 8 - TOP
- pie.operator("align.2y0", text="Align To Y-0")
+ pie.operator("align.2xyz", text="Align To Y-0").axis = '1'
# 7 - TOP - LEFT
- pie.operator("align.2x0", text="Align To X-0")
+ pie.operator("align.2xyz", text="Align To X-0").axis = '0'
# 9 - TOP - RIGHT
- pie.operator("align.2z0", text="Align To Z-0")
+ pie.operator("align.2xyz", text="Align To Z-0").axis = '2'
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
# pie.menu("align.xyz")
box = pie.split().box().column()
+
row = box.row(align=True)
row.label("X")
- row.operator("alignx.left", text="Neg")
- row.operator("alignx.right", text="Pos")
+ align_1 = row.operator("alignxyz.all", text="Neg")
+ align_1.axis = '0'
+ align_1.side = 'NEGATIVE'
+ align_2 = row.operator("alignxyz.all", text="Pos")
+ align_2.axis = '0'
+ align_2.side = 'POSITIVE'
+
row = box.row(align=True)
row.label("Y")
- row.operator("aligny.front", text="Neg")
- row.operator("aligny.back", text="Pos")
+ align_3 = row.operator("alignxyz.all", text="Neg")
+ align_3.axis = '1'
+ align_3.side = 'NEGATIVE'
+ align_4 = row.operator("alignxyz.all", text="Pos")
+ align_4.axis = '1'
+ align_4.side = 'POSITIVE'
+
row = box.row(align=True)
row.label("Z")
- row.operator("alignz.bottom", text="Neg")
- row.operator("alignz.top", text="Pos")
-
-# Align X
+ align_5 = row.operator("alignxyz.all", text="Neg")
+ align_5.axis = '2'
+ align_5.side = 'NEGATIVE'
+ align_6 = row.operator("alignxyz.all", text="Pos")
+ align_6.axis = '2'
+ align_6.side = 'POSITIVE'
+# Align X
class AlignX(Operator):
bl_idname = "align.x"
bl_label = "Align X"
@@ -89,13 +102,17 @@ class AlignX(Operator):
def execute(self, context):
for vert in bpy.context.object.data.vertices:
- bpy.ops.transform.resize(value=(0, 1, 1), constraint_axis=(True, False, False), constraint_orientation='GLOBAL',
- mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
+ bpy.ops.transform.resize(
+ value=(0, 1, 1), constraint_axis=(True, False, False),
+ constraint_orientation='GLOBAL',
+ mirror=False, proportional='DISABLED',
+ proportional_edit_falloff='SMOOTH',
+ proportional_size=1
+ )
return {'FINISHED'}
-# Align Y
-
+# Align Y
class AlignY(Operator):
bl_idname = "align.y"
bl_label = "Align Y"
@@ -105,13 +122,17 @@ class AlignY(Operator):
def execute(self, context):
for vert in bpy.context.object.data.vertices:
- bpy.ops.transform.resize(value=(1, 0, 1), constraint_axis=(False, True, False), constraint_orientation='GLOBAL',
- mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
+ bpy.ops.transform.resize(
+ value=(1, 0, 1), constraint_axis=(False, True, False),
+ constraint_orientation='GLOBAL',
+ mirror=False, proportional='DISABLED',
+ proportional_edit_falloff='SMOOTH',
+ proportional_size=1
+ )
return {'FINISHED'}
-# Align Z
-
+# Align Z
class AlignZ(Operator):
bl_idname = "align.z"
bl_label = "Align Z"
@@ -121,267 +142,122 @@ class AlignZ(Operator):
def execute(self, context):
for vert in bpy.context.object.data.vertices:
- bpy.ops.transform.resize(value=(1, 1, 0), constraint_axis=(False, False, True), constraint_orientation='GLOBAL',
- mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
- return {'FINISHED'}
+ bpy.ops.transform.resize(
+ value=(1, 1, 0), constraint_axis=(False, False, True),
+ constraint_orientation='GLOBAL',
+ mirror=False, proportional='DISABLED',
+ proportional_edit_falloff='SMOOTH',
+ proportional_size=1
+ )
-#####################
-# Align To 0 #
-#####################
-
-# Align to X - 0
-
-
-class AlignToX0(Operator):
- bl_idname = "align.2x0"
- bl_label = "Align To X = 0"
- bl_description = "Align Selected To Location X = 0"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[0] = 0
- bpy.ops.object.editmode_toggle()
return {'FINISHED'}
-# Align to Z - 0
+# ################# #
+# Align To 0 #
+# ################# #
-class AlignToY0(Operator):
- bl_idname = "align.2y0"
- bl_label = "Align To Y = 0"
- bl_description = "Align Selected To Location Y = 0"
+class AlignToXYZ0(Operator):
+ bl_idname = "align.2xyz"
+ bl_label = "Align To X, Y or Z = 0"
+ bl_description = "Align Active Object To a chosen X, Y or Z equals 0 Location"
bl_options = {'REGISTER', 'UNDO'}
- def execute(self, context):
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[1] = 0
- bpy.ops.object.editmode_toggle()
- return {'FINISHED'}
-
-# Align to Z - 0
-
-
-class AlignToZ0(Operator):
- bl_idname = "align.2z0"
- bl_label = "Align To Z = 0"
- bl_description = "Align Selected To Location Z = 0"
- bl_options = {'REGISTER', 'UNDO'}
+ axis = EnumProperty(
+ name="Axis",
+ items=[
+ ('0', "X", "X Axis"),
+ ('1', "Y", "Y Axis"),
+ ('2', "Z", "Z Axis")
+ ],
+ description="Choose an axis for alignment",
+ default='0'
+ )
+
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj and obj.type == "MESH"
def execute(self, context):
bpy.ops.object.mode_set(mode='OBJECT')
-
+ align = int(self.axis)
for vert in bpy.context.object.data.vertices:
if vert.select:
- vert.co[2] = 0
+ vert.co[align] = 0
bpy.ops.object.editmode_toggle()
- return {'FINISHED'}
-
-# Align X Left
-
-
-class AlignXLeft(Operator):
- bl_idname = "alignx.left"
- bl_label = "Align X Left"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- count = 0
- axe = 0
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- if count == 0:
- max = vert.co[axe]
- count += 1
- continue
- count += 1
- if vert.co[axe] < max:
- max = vert.co[axe]
-
- bpy.ops.object.mode_set(mode='OBJECT')
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[axe] = max
- bpy.ops.object.mode_set(mode='EDIT')
return {'FINISHED'}
-# Align X Right
-
-
-class AlignXRight(Operator):
- bl_idname = "alignx.right"
- bl_label = "Align X Right"
-
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- count = 0
- axe = 0
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- if count == 0:
- max = vert.co[axe]
- count += 1
- continue
- count += 1
- if vert.co[axe] > max:
- max = vert.co[axe]
-
- bpy.ops.object.mode_set(mode='OBJECT')
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[axe] = max
- bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
-
-# Align Y Back
-
-
-class AlignYBack(Operator):
- bl_idname = "aligny.back"
- bl_label = "Align Y back"
+# Align X Left
+class AlignXYZAll(Operator):
+ bl_idname = "alignxyz.all"
+ bl_label = "Align to Front/Back Axis"
+ bl_description = "Align to a Front or Back along the chosen Axis"
bl_options = {'REGISTER', 'UNDO'}
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- count = 0
- axe = 1
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- if count == 0:
- max = vert.co[axe]
- count += 1
- continue
- count += 1
- if vert.co[axe] > max:
- max = vert.co[axe]
-
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[axe] = max
- bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
-
-# Align Y Front
-
-
-class AlignYFront(Operator):
- bl_idname = "aligny.front"
- bl_label = "Align Y Front"
- bl_options = {'REGISTER', 'UNDO'}
+ axis = EnumProperty(
+ name="Axis",
+ items=[
+ ('0', "X", "X Axis"),
+ ('1', "Y", "Y Axis"),
+ ('2', "Z", "Z Axis")
+ ],
+ description="Choose an axis for alignment",
+ default='0'
+ )
+ side = EnumProperty(
+ name="Side",
+ items=[
+ ('POSITIVE', "Front", "Align on the positive chosen axis"),
+ ('NEGATIVE', "Back", "Align acriss the negative chosen axis"),
+ ],
+ description="Choose a side for alignment",
+ default='POSITIVE'
+ )
+
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj and obj.type == "MESH"
def execute(self, context):
bpy.ops.object.mode_set(mode='OBJECT')
count = 0
- axe = 1
+ axe = int(self.axis)
for vert in bpy.context.object.data.vertices:
if vert.select:
if count == 0:
- max = vert.co[axe]
+ maxv = vert.co[axe]
count += 1
continue
count += 1
- if vert.co[axe] < max:
- max = vert.co[axe]
+ if self.side == 'POSITIVE':
+ if vert.co[axe] > maxv:
+ maxv = vert.co[axe]
+ else:
+ if vert.co[axe] < maxv:
+ maxv = vert.co[axe]
bpy.ops.object.mode_set(mode='OBJECT')
for vert in bpy.context.object.data.vertices:
if vert.select:
- vert.co[axe] = max
+ vert.co[axe] = maxv
bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
-
-# Align Z Top
-
-
-class AlignZTop(Operator):
- bl_idname = "alignz.top"
- bl_label = "Align Z Top"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- count = 0
- axe = 2
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- if count == 0:
- max = vert.co[axe]
- count += 1
- continue
- count += 1
- if vert.co[axe] > max:
- max = vert.co[axe]
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[axe] = max
- bpy.ops.object.mode_set(mode='EDIT')
return {'FINISHED'}
-# Align Z Bottom
-
-
-class AlignZBottom(Operator):
- bl_idname = "alignz.bottom"
- bl_label = "Align Z Bottom"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- count = 0
- axe = 2
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- if count == 0:
- max = vert.co[axe]
- count += 1
- continue
- count += 1
- if vert.co[axe] < max:
- max = vert.co[axe]
-
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for vert in bpy.context.object.data.vertices:
- if vert.select:
- vert.co[axe] = max
- bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
classes = (
PieAlign,
AlignX,
AlignY,
AlignZ,
- AlignToX0,
- AlignToY0,
- AlignToZ0,
- AlignXLeft,
- AlignXRight,
- AlignYBack,
- AlignYFront,
- AlignZTop,
- AlignZBottom,
+ AlignToXYZ0,
+ AlignXYZAll,
)
addon_keymaps = []
@@ -390,29 +266,27 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Align
km = wm.keyconfigs.addon.keymaps.new(name='Mesh')
kmi = km.keymap_items.new('wm.call_menu_pie', 'X', 'PRESS', alt=True)
kmi.properties.name = "pie.align"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Mesh']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.align":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_animation_menu.py b/space_view3d_pie_menus/pie_animation_menu.py
index 7f7a3684..d65891f9 100644
--- a/space_view3d_pie_menus/pie_animation_menu.py
+++ b/space_view3d_pie_menus/pie_animation_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Alt A'",
"description": "Pie menu for Timeline controls",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -85,6 +85,7 @@ class InsertAutoKeyframe(Operator):
return {'FINISHED'}
+
classes = (
PieAnimation,
InsertAutoKeyframe
@@ -96,29 +97,26 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Animation
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
kmi = km.keymap_items.new('wm.call_menu_pie', 'A', 'PRESS', alt=True)
kmi.properties.name = "pie.animation"
- # kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Object Non-modal']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.animation":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_apply_transform_menu.py b/space_view3d_pie_menus/pie_apply_transform_menu.py
index 802de3d6..7eb0a3a9 100644
--- a/space_view3d_pie_menus/pie_apply_transform_menu.py
+++ b/space_view3d_pie_menus/pie_apply_transform_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Ctrl A'",
"description": "Apply Transform Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -35,10 +35,10 @@ from bpy.types import (
Menu,
Operator,
)
-
-# Pie Apply Transforms - Ctrl + A
+from bpy.props import EnumProperty
+# Pie Apply Transforms - Ctrl + A
class PieApplyTransforms(Menu):
bl_idname = "pie.applytranforms"
bl_label = "Pie Apply Transforms"
@@ -53,58 +53,44 @@ class PieApplyTransforms(Menu):
# 2 - BOTTOM
pie.operator("object.duplicates_make_real", text="Make Duplicates Real")
# 8 - TOP
- pie.operator("apply.transformrotation", text="Rotation", icon='MAN_ROT')
+ pie.operator("apply.transformlocrotscale", text="Rotation", icon='MAN_ROT').option = 'ROT'
# 7 - TOP - LEFT
- pie.operator("apply.transformlocation", text="Location", icon='MAN_TRANS')
+ pie.operator("apply.transformlocrotscale", text="Location", icon='MAN_ROT').option = 'LOC'
# 9 - TOP - RIGHT
- pie.operator("apply.transformscale", text="Scale", icon='MAN_SCALE')
+ pie.operator("apply.transformlocrotscale", text="Scale", icon='MAN_ROT').option = 'SCALE'
# 1 - BOTTOM - LEFT
pie.operator("object.visual_transform_apply", text="Visual Transforms")
# 3 - BOTTOM - RIGHT
pie.menu("clear.menu", text="Clear Transform Menu")
-# Apply Transforms
-
-
-class ApplyTransformLocation(Operator):
- bl_idname = "apply.transformlocation"
- bl_label = "Apply Transform Location"
- bl_description = "Apply Transform Location"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
- bpy.ops.object.transform_apply(location=True, rotation=False, scale=False)
- return {'FINISHED'}
# Apply Transforms
-
-
-class ApplyTransformRotation(Operator):
- bl_idname = "apply.transformrotation"
- bl_label = "Apply Transform Rotation"
- bl_description = "Apply Transform Rotation"
+class ApplyTransLocRotPie(Operator):
+ bl_idname = "apply.transformlocrotscale"
+ bl_label = "Apply Transforms"
+ bl_description = "Apply Transform: Location, Rotation or Scale"
bl_options = {'REGISTER', 'UNDO'}
- def execute(self, context):
- bpy.ops.object.transform_apply(location=False, rotation=True, scale=False)
- return {'FINISHED'}
-
-# Apply Transforms
-
-
-class ApplyTransformScale(Operator):
- bl_idname = "apply.transformscale"
- bl_label = "Apply Transform Scale"
- bl_description = "Apply Transform Scale"
- bl_options = {'REGISTER', 'UNDO'}
+ option = EnumProperty(
+ name="Type",
+ items=[
+ ("LOC", "Location", "Apply Location"),
+ ("ROT", "Rotation", "Apply Rotation"),
+ ("SCALE", "Scale", "Apply Scale")
+ ],
+ default="LOC",
+ )
def execute(self, context):
- bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
+ loc = True if self.option == "LOC" else False
+ rot = True if self.option == "ROT" else False
+ sca = True if self.option == "SCALE" else False
+ bpy.ops.object.transform_apply(location=loc, rotation=rot, scale=sca)
+
return {'FINISHED'}
# Apply Transforms
-
class ApplyTransformAll(Operator):
bl_idname = "apply.transformall"
bl_label = "Apply All Transforms"
@@ -115,9 +101,8 @@ class ApplyTransformAll(Operator):
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
return {'FINISHED'}
-# Clear Menu
-
+# Clear Menu
class ClearMenu(Menu):
bl_idname = "clear.menu"
bl_label = "Clear Menu"
@@ -129,9 +114,8 @@ class ClearMenu(Menu):
layout.operator("object.scale_clear", text="Clear Scale", icon='MAN_SCALE')
layout.operator("object.origin_clear", text="Clear Origin", icon='MANIPUL')
-# Clear all
-
+# Clear all
class ClearAll(Operator):
bl_idname = "clear.all"
bl_label = "Clear All"
@@ -144,11 +128,10 @@ class ClearAll(Operator):
bpy.ops.object.scale_clear()
return {'FINISHED'}
+
classes = (
PieApplyTransforms,
- ApplyTransformLocation,
- ApplyTransformRotation,
- ApplyTransformScale,
+ ApplyTransLocRotPie,
ApplyTransformAll,
ClearMenu,
ClearAll,
@@ -167,22 +150,20 @@ def register():
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
kmi = km.keymap_items.new('wm.call_menu_pie', 'A', 'PRESS', ctrl=True)
kmi.properties.name = "pie.applytranforms"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Object Mode']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.applytranforms":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_cursor.py b/space_view3d_pie_menus/pie_cursor.py
index 195a07bf..568cdd6d 100644
--- a/space_view3d_pie_menus/pie_cursor.py
+++ b/space_view3d_pie_menus/pie_cursor.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Shift S'",
"description": "Cursor Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 0),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -36,23 +36,23 @@ from bpy.types import (
Operator,
)
-# SnapCursSelToCenter1 thanks to Isaac Weaver (wisaac) D1963
-
+# SnapCursSelToCenter1 thanks to Isaac Weaver (wisaac) D1963
class Snap_CursSelToCenter1(Operator):
- """Snap 3D cursor and selected objects to the center \n"""\
- """Works only in Object Mode"""
bl_idname = "view3d.snap_cursor_selected_to_center1"
bl_label = "Snap Cursor & Selection to Center"
+ bl_description = ("Snap 3D cursor and selected objects to the center \n"
+ "Works only in Object Mode")
@classmethod
def poll(cls, context):
- return (context.mode == "OBJECT")
+ return (context.area.type == "VIEW_3D" and context.mode == "OBJECT")
def execute(self, context):
context.space_data.cursor_location = (0, 0, 0)
for obj in context.selected_objects:
obj.location = (0, 0, 0)
+
return {'FINISHED'}
@@ -69,9 +69,10 @@ class Snap_CursorMenu(Menu):
icon='CLIPUV_HLT').use_offset = False
# 6 - RIGHT
pie.operator("view3d.snap_selected_to_cursor",
- text="Selection to Cursor (Offset)", icon='CURSOR').use_offset = True
+ text="Selection to Cursor (Offset)", icon='CURSOR').use_offset = True
# 2 - BOTTOM
- pie.operator("view3d.snap_cursor_selected_to_center1", text="Selected & Cursor to Center", icon='ALIGN')
+ pie.operator("view3d.snap_cursor_selected_to_center1",
+ text="Selected & Cursor to Center", icon='ALIGN')
# 8 - TOP
pie.operator("view3d.snap_cursor_to_center", text="Cursor to Center", icon='CLIPUV_DEHLT')
# 7 - TOP - LEFT
@@ -95,8 +96,8 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Origin/Pivot
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
@@ -108,15 +109,13 @@ def register():
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "snap.cursormenu":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_delete_menu.py b/space_view3d_pie_menus/pie_delete_menu.py
index f804c877..4a8e002c 100644
--- a/space_view3d_pie_menus/pie_delete_menu.py
+++ b/space_view3d_pie_menus/pie_delete_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'X'",
"description": "Edit mode V/E/F Delete Modes",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 0),
"blender": (2, 77, 0),
"location": "Mesh Edit Mode",
"warning": "",
@@ -31,14 +31,10 @@ bl_info = {
}
import bpy
-from bpy.types import (
- Menu,
- Operator,
- )
-
-# Pie Delete - X
+from bpy.types import Menu
+# Pie Delete - X
class PieDelete(Menu):
bl_idname = "pie.delete"
bl_label = "Pie Delete"
@@ -60,50 +56,48 @@ class PieDelete(Menu):
pie.operator("mesh.dissolve_faces", text="Dissolve Faces", icon='SNAP_FACE')
# 1 - BOTTOM - LEFT
box = pie.split().column()
- row = box.row(align=True)
box.operator("mesh.dissolve_limited", text="Limited Dissolve", icon='STICKY_UVS_LOC')
box.operator("mesh.delete_edgeloop", text="Delete Edge Loops", icon='BORDER_LASSO')
box.operator("mesh.edge_collapse", text="Edge Collapse", icon='UV_EDGESEL')
# 3 - BOTTOM - RIGHT
box = pie.split().column()
- row = box.row(align=True)
box.operator("mesh.delete", text="Only Edge & Faces", icon='SPACE2').type = 'EDGE_FACE'
box.operator("mesh.delete", text="Only Faces", icon='UV_FACESEL').type = 'ONLY_FACE'
box.operator("mesh.remove_doubles", text="Remove Doubles", icon='ORTHO')
+
classes = (
PieDelete,
)
+
addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Delete
km = wm.keyconfigs.addon.keymaps.new(name='Mesh')
kmi = km.keymap_items.new('wm.call_menu_pie', 'X', 'PRESS')
kmi.properties.name = "pie.delete"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Mesh']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.delete":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_editor_switch_menu.py b/space_view3d_pie_menus/pie_editor_switch_menu.py
index 788b053d..67f40ff8 100644
--- a/space_view3d_pie_menus/pie_editor_switch_menu.py
+++ b/space_view3d_pie_menus/pie_editor_switch_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Ctrl Alt S ",
"description": "Switch Editor Type Menu",
- # "author": "saidenka",
- # "version": (0, 1, 0),
+ "author": "saidenka",
+ "version": (0, 1, 0),
"blender": (2, 77, 0),
"location": "All Editors",
"warning": "",
@@ -69,19 +69,19 @@ class AreaPieEditor(Menu):
layout = self.layout
pie = layout.menu_pie()
# 4 - LEFT
- pie.operator(SetAreaType.bl_idname, text="Text Editor", icon="TEXT").type = "TEXT_EDITOR"
+ pie.operator(SetAreaType.bl_idname, text="Text Editor", icon="TEXT").types = "TEXT_EDITOR"
# 6 - RIGHT
pie.menu(AreaTypePieAnim.bl_idname, text="Animation Editors", icon="ACTION")
# 2 - BOTTOM
- pie.operator(SetAreaType.bl_idname, text="Property", icon="BUTS").type = "PROPERTIES"
+ pie.operator(SetAreaType.bl_idname, text="Property", icon="BUTS").types = "PROPERTIES"
# 8 - TOP
- pie.operator(SetAreaType.bl_idname, text="3D View", icon="MESH_CUBE").type = "VIEW_3D"
+ pie.operator(SetAreaType.bl_idname, text="3D View", icon="MESH_CUBE").types = "VIEW_3D"
# 7 - TOP - LEFT
- pie.operator(SetAreaType.bl_idname, text="UV/Image Editor", icon="IMAGE_COL").type = "IMAGE_EDITOR"
+ pie.operator(SetAreaType.bl_idname, text="UV/Image Editor", icon="IMAGE_COL").types = "IMAGE_EDITOR"
# 9 - TOP - RIGHT
- pie.operator(SetAreaType.bl_idname, text="Node Editor", icon="NODETREE").type = "NODE_EDITOR"
+ pie.operator(SetAreaType.bl_idname, text="Node Editor", icon="NODETREE").types = "NODE_EDITOR"
# 1 - BOTTOM - LEFT
- pie.operator(SetAreaType.bl_idname, text="Outliner", icon="OOPS").type = "OUTLINER"
+ pie.operator(SetAreaType.bl_idname, text="Outliner", icon="OOPS").types = "OUTLINER"
# 3 - BOTTOM - RIGHT
pie.menu(AreaTypePieOther.bl_idname, text="More Editors", icon="QUESTION")
@@ -93,17 +93,17 @@ class AreaTypePieOther(Menu):
def draw(self, context):
# 4 - LEFT
- self.layout.operator(SetAreaType.bl_idname, text="Logic Editor", icon="LOGIC").type = "LOGIC_EDITOR"
+ self.layout.operator(SetAreaType.bl_idname, text="Logic Editor", icon="LOGIC").types = "LOGIC_EDITOR"
# 6 - RIGHT
- self.layout.operator(SetAreaType.bl_idname, text="File Browser", icon="FILESEL").type = "FILE_BROWSER"
+ self.layout.operator(SetAreaType.bl_idname, text="File Browser", icon="FILESEL").types = "FILE_BROWSER"
# 2 - BOTTOM
- self.layout.operator(SetAreaType.bl_idname, text="Python Console", icon="CONSOLE").type = "CONSOLE"
+ self.layout.operator(SetAreaType.bl_idname, text="Python Console", icon="CONSOLE").types = "CONSOLE"
# 8 - TOP
# 7 - TOP - LEFT
- self.layout.operator(SetAreaType.bl_idname, text="User Setting",
- icon="PREFERENCES").type = "USER_PREFERENCES"
+ self.layout.operator(SetAreaType.bl_idname, text="User Preferences",
+ icon="PREFERENCES").types = "USER_PREFERENCES"
# 9 - TOP - RIGHT
- self.layout.operator(SetAreaType.bl_idname, text="Info", icon="INFO").type = "INFO"
+ self.layout.operator(SetAreaType.bl_idname, text="Info", icon="INFO").types = "INFO"
# 1 - BOTTOM - LEFT
# 3 - BOTTOM - RIGHT
@@ -114,33 +114,33 @@ class SetAreaType(Operator):
bl_description = "Change Editor Type"
bl_options = {'REGISTER'}
- type = StringProperty(name="Area Type")
+ types = StringProperty(name="Area Type")
def execute(self, context):
- context.area.type = self.type
+ context.area.type = self.types
return {'FINISHED'}
class AreaTypePieAnim(Menu):
bl_idname = "INFO_MT_window_pie_area_type_anim"
bl_label = "Editor Type (Animation)"
- bl_description = "Is pie menu change editor type (animation related)"
+ bl_description = "Menu for changing editor type (animation related)"
def draw(self, context):
# 4 - LEFT
- self.layout.operator(SetAreaType.bl_idname, text="NLA Editor", icon="NLA").type = "NLA_EDITOR"
+ self.layout.operator(SetAreaType.bl_idname, text="NLA Editor", icon="NLA").types = "NLA_EDITOR"
# 6 - RIGHT
- self.layout.operator(SetAreaType.bl_idname, text="DopeSheet", icon="ACTION").type = "DOPESHEET_EDITOR"
+ self.layout.operator(SetAreaType.bl_idname, text="DopeSheet", icon="ACTION").types = "DOPESHEET_EDITOR"
# 2 - BOTTOM
- self.layout.operator(SetAreaType.bl_idname, text="Graph Editor", icon="IPO").type = "GRAPH_EDITOR"
+ self.layout.operator(SetAreaType.bl_idname, text="Graph Editor", icon="IPO").types = "GRAPH_EDITOR"
# 8 - TOP
- self.layout.operator(SetAreaType.bl_idname, text="Timeline", icon="TIME").type = "TIMELINE"
+ self.layout.operator(SetAreaType.bl_idname, text="Timeline", icon="TIME").types = "TIMELINE"
# 7 - TOP - LEFT
self.layout.operator(SetAreaType.bl_idname,
- text="Video Sequence Editor", icon="SEQUENCE").type = "SEQUENCE_EDITOR"
+ text="Video Sequence Editor", icon="SEQUENCE").types = "SEQUENCE_EDITOR"
# 9 - TOP - RIGHT
self.layout.operator(SetAreaType.bl_idname,
- text="Video Clip Editor", icon="RENDER_ANIMATION").type = "CLIP_EDITOR"
+ text="Video Clip Editor", icon="RENDER_ANIMATION").types = "CLIP_EDITOR"
# 1 - BOTTOM - LEFT
self.layout.operator("wm.call_menu_pie", text="Back", icon="BACK").name = AreaPieEditor.bl_idname
# 3 - BOTTOM - RIGHT
@@ -161,29 +161,26 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Snapping
km = wm.keyconfigs.addon.keymaps.new(name='Window')
kmi = km.keymap_items.new('wm.call_menu_pie', 'S', 'PRESS', ctrl=True, alt=True)
kmi.properties.name = "pie.editor"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Window']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "wm.area_type_pie_operator":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_manipulator_menu.py b/space_view3d_pie_menus/pie_manipulator_menu.py
index 2e3de4cf..2690c094 100644
--- a/space_view3d_pie_menus/pie_manipulator_menu.py
+++ b/space_view3d_pie_menus/pie_manipulator_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Ctrl Space'",
"description": "Extended Manipulator Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -44,7 +44,7 @@ class ManipTranslate(Operator):
bl_description = " Show Translate"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'TRANSLATE'}
if context.space_data.transform_manipulators != {'TRANSLATE'}:
@@ -59,7 +59,7 @@ class ManipRotate(Operator):
bl_description = " Show Rotate"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'ROTATE'}
if context.space_data.transform_manipulators != {'ROTATE'}:
@@ -74,7 +74,7 @@ class ManipScale(Operator):
bl_description = " Show Scale"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'SCALE'}
if context.space_data.transform_manipulators != {'SCALE'}:
@@ -89,7 +89,7 @@ class TranslateRotate(Operator):
bl_description = " Show Translate/Rotate"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'TRANSLATE', 'ROTATE'}
if context.space_data.transform_manipulators != {'TRANSLATE', 'ROTATE'}:
@@ -104,7 +104,7 @@ class TranslateScale(Operator):
bl_description = " Show Translate/Scale"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'TRANSLATE', 'SCALE'}
if context.space_data.transform_manipulators != {'TRANSLATE', 'SCALE'}:
@@ -119,7 +119,7 @@ class RotateScale(Operator):
bl_description = " Show Rotate/Scale"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'ROTATE', 'SCALE'}
if context.space_data.transform_manipulators != {'ROTATE', 'SCALE'}:
@@ -134,7 +134,7 @@ class TranslateRotateScale(Operator):
bl_description = "Show All"
def execute(self, context):
- if context.space_data.show_manipulator == False:
+ if context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
context.space_data.transform_manipulators = {'TRANSLATE', 'ROTATE', 'SCALE'}
if context.space_data.transform_manipulators != {'TRANSLATE', 'ROTATE', 'SCALE'}:
@@ -150,17 +150,16 @@ class WManupulators(Operator):
def execute(self, context):
- if context.space_data.show_manipulator == True:
+ if context.space_data.show_manipulator is True:
context.space_data.show_manipulator = False
- elif context.space_data.show_manipulator == False:
+ elif context.space_data.show_manipulator is False:
context.space_data.show_manipulator = True
return {'FINISHED'}
-# Pie Manipulators - Ctrl + Space
-
+# Pie Manipulators - Ctrl + Space
class PieManipulator(Menu):
bl_idname = "pie.manipulator"
bl_label = "Pie Manipulator"
@@ -185,7 +184,6 @@ class PieManipulator(Menu):
# 3 - BOTTOM - RIGHT
pie.operator("manip.scale", text="Scale", icon='MAN_SCALE')
-# Pie Snapping - Shift + Tab
classes = (
PieManipulator,
@@ -205,29 +203,27 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Manipulators
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'SPACE', 'PRESS', ctrl=True)
kmi.properties.name = "pie.manipulator"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.manipulator":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_modes_menu.py b/space_view3d_pie_menus/pie_modes_menu.py
index 347c61d9..356d6e18 100644
--- a/space_view3d_pie_menus/pie_modes_menu.py
+++ b/space_view3d_pie_menus/pie_modes_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Tab'",
"description": "Switch between 3d view object/edit modes",
- # "author": "pitiwazou, meta-androcto, italic",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto, italic",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -252,7 +252,8 @@ class PieInteractiveModeGreasePencil(Operator):
try:
bpy.ops.gpencil.editmode_toggle()
except:
- self.report({'WARNING'}, "It is not possible to enter into the interactive mode")
+ self.report({'WARNING'},
+ "It is not possible to enter into the interactive mode")
return {'FINISHED'}
@@ -453,14 +454,13 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Select Mode
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
addon_keymaps.append((km, kmi))
km = wm.keyconfigs.addon.keymaps.new(name='Grease Pencil Stroke Edit Mode')
@@ -472,21 +472,13 @@ def register():
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Object Non-modal']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- 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)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_orientation_menu.py b/space_view3d_pie_menus/pie_orientation_menu.py
index 17c13a5c..a9de9fa6 100644
--- a/space_view3d_pie_menus/pie_orientation_menu.py
+++ b/space_view3d_pie_menus/pie_orientation_menu.py
@@ -22,8 +22,8 @@
bl_info = {
"name": "Hotkey: 'Alt + Spacebar'",
- # "author": "Italic_",
- # "version": (1, 1, 0),
+ "author": "Italic_",
+ "version": (1, 1, 0),
"blender": (2, 77, 0),
"description": "Set Transform Orientations",
"location": "3D View",
@@ -38,12 +38,13 @@ from bpy.props import (
StringProperty,
)
+
class OrientPoll(Operator):
bl_idname = "pie.orientation"
bl_label = "Orientation Poll"
bl_options = {'INTERNAL'}
- space = bpy.props.StringProperty()
+ space = StringProperty()
@classmethod
def poll(cls, context):
@@ -89,13 +90,11 @@ def register():
bpy.utils.register_class(cls)
wm = bpy.context.window_manager
-
if wm.keyconfigs.addon:
# Manipulators
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'SPACE', 'PRESS', alt=True)
kmi.properties.name = "pie.orient"
-# kmi.active = True
addon_keymaps.append((km, kmi))
@@ -106,11 +105,9 @@ def unregister():
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.orient":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_origin.py b/space_view3d_pie_menus/pie_origin.py
index f30acf85..84344d7e 100644
--- a/space_view3d_pie_menus/pie_origin.py
+++ b/space_view3d_pie_menus/pie_origin.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Alt Shift O'",
"description": "Origin Snap/Place Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -38,33 +38,40 @@ from bpy.types import (
# Pivot to selection
-
-
class PivotToSelection(Operator):
bl_idname = "object.pivot2selection"
bl_label = "Pivot To Selection"
bl_description = "Pivot Point To Selection"
bl_options = {'REGISTER', 'UNDO'}
+ @classmethod
+ def poll(cls, context):
+ return context.active_object is not None
+
def execute(self, context):
saved_location = context.scene.cursor_location.copy()
bpy.ops.view3d.snap_cursor_to_selected()
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
context.scene.cursor_location = saved_location
- return {'FINISHED'}
-# Pivot to Bottom
+ return {'FINISHED'}
+# Pivot to Bottom
class PivotBottom(Operator):
bl_idname = "object.pivotobottom"
bl_label = "Pivot To Bottom"
- bl_description = "Set the Pivot Point To Lowest Point"
+ bl_description = ("Set the Pivot Point To Lowest Point\n"
+ "Needs an Active Object of the Mesh type")
bl_options = {'REGISTER', 'UNDO'}
- def execute(self, context):
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj is not None and obj.type == "MESH"
+ def execute(self, context):
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY')
@@ -82,11 +89,11 @@ class PivotBottom(Operator):
o.location.z += a
bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
-# Pie Origin/Pivot - Shift + S
+ return {'FINISHED'}
+# Pie Origin/Pivot - Shift + S
class PieOriginPivot(Menu):
bl_idname = "origin.pivotmenu"
bl_label = "Origin Menu"
@@ -100,28 +107,37 @@ class PieOriginPivot(Menu):
pie.operator("object.origin_set", text="Origin to Center of Mass",
icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS'
# 6 - RIGHT
- pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR'
+ pie.operator("object.origin_set", text="Origin To 3D Cursor",
+ icon='CURSOR').type = 'ORIGIN_CURSOR'
# 2 - BOTTOM
- pie.operator("object.pivotobottom", text="Origin to Bottom", icon='TRIA_DOWN')
+ pie.operator("object.pivotobottom", text="Origin to Bottom",
+ icon='TRIA_DOWN')
# 8 - TOP
- pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT')
+ pie.operator("object.pivot2selection", text="Origin To Selection",
+ icon='SNAP_INCREMENT')
# 7 - TOP - LEFT
- pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN'
+ pie.operator("object.origin_set", text="Geometry To Origin",
+ icon='BBOX').type = 'GEOMETRY_ORIGIN'
# 9 - TOP - RIGHT
- pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY'
+ pie.operator("object.origin_set", text="Origin To Geometry",
+ icon='ROTATE').type = 'ORIGIN_GEOMETRY'
else:
# 4 - LEFT
pie.operator("object.origin_set", text="Origin to Center of Mass",
icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS'
# 6 - RIGHT
- pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR'
+ pie.operator("object.origin_set", text="Origin To 3D Cursor",
+ icon='CURSOR').type = 'ORIGIN_CURSOR'
# 2 - BOTTOM
- pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT')
+ pie.operator("object.pivot2selection", text="Origin To Selection",
+ icon='SNAP_INCREMENT')
# 8 - TOP
- pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY'
+ pie.operator("object.origin_set", text="Origin To Geometry",
+ icon='ROTATE').type = 'ORIGIN_GEOMETRY'
# 7 - TOP - LEFT
- pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN'
+ pie.operator("object.origin_set", text="Geometry To Origin",
+ icon='BBOX').type = 'GEOMETRY_ORIGIN'
classes = (
@@ -136,29 +152,26 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Origin/Pivot
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'O', 'PRESS', shift=True, alt=True)
kmi.properties.name = "origin.pivotmenu"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "origin.pivotmenu":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_origin_cursor.py b/space_view3d_pie_menus/pie_origin_cursor.py
deleted file mode 100644
index 553c8a9b..00000000
--- a/space_view3d_pie_menus/pie_origin_cursor.py
+++ /dev/null
@@ -1,225 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-# <pep8 compliant>
-
-bl_info = {
- "name": "Hotkey: 'Shift S'",
- "description": "Cursor & Origin Snap/Place Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
- "blender": (2, 77, 0),
- "location": "3D View",
- "warning": "",
- "wiki_url": "",
- "category": "Cursor/Origin Pie"
- }
-
-import bpy
-from bpy.types import (
- Menu,
- Operator,
- )
-
-# SnapCursSelToCenter1 thanks to Isaac Weaver (wisaac) D1963
-
-
-class SnapCursSelToCenter1(Operator):
- """Snap 3D cursor and selected objects to the center \n"""\
- """Works only in Object Mode"""
- bl_idname = "view3d.snap_cursor_selected_to_center1"
- bl_label = "Snap Cursor & Selection to Center"
-
- @classmethod
- def poll(cls, context):
- return (context.mode == "OBJECT")
-
- def execute(self, context):
- context.space_data.cursor_location = (0, 0, 0)
- for obj in context.selected_objects:
- obj.location = (0, 0, 0)
- return {'FINISHED'}
-
-# Pivot to selection
-
-
-class PivotToSelection(Operator):
- bl_idname = "object.pivot2selection"
- bl_label = "Pivot To Selection"
- bl_description = "Pivot Point To Selection"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
- saved_location = context.scene.cursor_location.copy()
- bpy.ops.view3d.snap_cursor_to_selected()
- bpy.ops.object.mode_set(mode='OBJECT')
- bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
- context.scene.cursor_location = saved_location
- return {'FINISHED'}
-
-# Pivot to Bottom
-
-
-class PivotBottom(Operator):
- bl_idname = "object.pivotobottom"
- bl_label = "Pivot To Bottom"
- bl_description = "Set the Pivot Point To Lowest Point"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
-
- bpy.ops.object.mode_set(mode='OBJECT')
- bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
- bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY')
- o = context.active_object
- init = 0
- for x in o.data.vertices:
- if init == 0:
- a = x.co.z
- init = 1
- elif x.co.z < a:
- a = x.co.z
-
- for x in o.data.vertices:
- x.co.z -= a
-
- o.location.z += a
- bpy.ops.object.mode_set(mode='EDIT')
- return {'FINISHED'}
-
-# Pie Origin/Pivot - Shift + S
-
-
-class PieOriginPivot(Menu):
- bl_idname = "pie.originpivot"
- bl_label = "Origin Menu"
-
- def draw(self, context):
- layout = self.layout
- obj = context.object
- pie = layout.menu_pie()
- if obj and obj.type == 'MESH':
- # 4 - LEFT
- pie.operator("object.origin_set", text="Origin to Center of Mass",
- icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS'
- # 6 - RIGHT
- pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR'
- # 2 - BOTTOM
- pie.operator("object.pivotobottom", text="Origin to Bottom", icon='TRIA_DOWN')
- # 8 - TOP
- pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT')
- # 7 - TOP - LEFT
- pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN'
- # 9 - TOP - RIGHT
- pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY'
-
- else:
- # 4 - LEFT
- pie.operator("object.origin_set", text="Origin to Center of Mass",
- icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS'
- # 6 - RIGHT
- pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR'
- # 2 - BOTTOM
- pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT')
- # 8 - TOP
- pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY'
- # 7 - TOP - LEFT
- pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN'
-
-
-# Origin/Pivot menu1 - Shift + S
-class OriginPivotMenu(Menu):
- bl_idname = "origin.pivotmenu"
- bl_label = "Cursor Menu"
-
- def draw(self, context):
- layout = self.layout
- pie = layout.menu_pie()
- # 4 - LEFT
- pie.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor",
- icon='CLIPUV_HLT').use_offset = False
- # 6 - RIGHT
- pie.operator("view3d.snap_selected_to_cursor",
- text="Selection to Cursor (Offset)", icon='CURSOR').use_offset = True
- # 2 - BOTTOM
- pie.operator("wm.call_menu_pie", text="Origin Pie", icon='ROTATECOLLECTION').name = "pie.originpivot"
- # 8 - TOP
- pie.operator("view3d.snap_cursor_to_center", text="Cursor to Center", icon='CLIPUV_DEHLT')
- # 7 - TOP - LEFT
- pie.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected", icon='ROTACTIVE')
- # 9 - TOP - RIGHT
- pie.operator("view3d.snap_cursor_to_active", text="Cursor to Active", icon='BBOX')
- # 1 - BOTTOM - LEFT
- pie.operator("view3d.snap_cursor_selected_to_center1", text="Selected & Cursor to Center", icon='ALIGN')
- # 3 - BOTTOM - RIGHT
- pie.menu("snapgrid.menu", text="Snap Grid", icon='GRID')
-
-# More Menu
-
-
-class Snap_CursorGrid(Menu):
- bl_idname = "snapgrid.menu"
- bl_label = "More Menu"
-
- def draw(self, context):
- layout = self.layout
- layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid", icon='GRID')
- layout.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid", icon='GRID')
-
-classes = (
- OriginPivotMenu,
- PieOriginPivot,
- PivotToSelection,
- PivotBottom,
- SnapCursSelToCenter1,
- Snap_CursorGrid,
- )
-
-addon_keymaps = []
-
-
-def register():
- for cls in classes:
- bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
-
- if wm.keyconfigs.addon:
- # Origin/Pivot
- km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
- kmi = km.keymap_items.new('wm.call_menu_pie', 'S', 'PRESS', shift=True)
- kmi.properties.name = "origin.pivotmenu"
-# kmi.active = True
- addon_keymaps.append((km, kmi))
-
-
-def unregister():
- for cls in classes:
- bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
-
- kc = wm.keyconfigs.addon
- if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "origin.pivotmenu":
- km.keymap_items.remove(kmi)
-
-
-if __name__ == "__main__":
- register()
diff --git a/space_view3d_pie_menus/pie_pivot_point_menu.py b/space_view3d_pie_menus/pie_pivot_point_menu.py
index b58d33f8..df6600a3 100644
--- a/space_view3d_pie_menus/pie_pivot_point_menu.py
+++ b/space_view3d_pie_menus/pie_pivot_point_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: ' . key' ",
"description": "Set Pivot Point Menu",
- # "author": "seb_k, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "seb_k, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -57,29 +57,27 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Pivot Point
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'PERIOD', 'PRESS')
kmi.properties.name = "pie.pivot"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.pivot":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_proportional_menu.py b/space_view3d_pie_menus/pie_proportional_menu.py
index ea5ddeed..479b57d4 100644
--- a/space_view3d_pie_menus/pie_proportional_menu.py
+++ b/space_view3d_pie_menus/pie_proportional_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'O'",
"description": "Proportional Object/Edit Tools",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View Object & Edit modes",
"warning": "",
@@ -36,11 +36,8 @@ from bpy.types import (
Operator,
)
-#####################################
-# Proportional Edit Object #
-#####################################
-
+# Proportional Edit Object
class ProportionalEditObj(Operator):
bl_idname = "proportional_obj.active"
bl_label = "Proportional Edit Object"
@@ -49,10 +46,10 @@ class ProportionalEditObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == True:
+ if ts.use_proportional_edit_objects is True:
ts.use_proportional_edit_objects = False
- elif ts.use_proportional_edit_objects == False:
+ elif ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
return {'FINISHED'}
@@ -65,7 +62,7 @@ class ProportionalSmoothObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'SMOOTH'
@@ -81,7 +78,7 @@ class ProportionalSphereObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'SPHERE'
@@ -97,7 +94,7 @@ class ProportionalRootObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'ROOT'
@@ -113,7 +110,7 @@ class ProportionalSharpObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'SHARP'
@@ -129,7 +126,7 @@ class ProportionalLinearObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'LINEAR'
@@ -145,7 +142,7 @@ class ProportionalConstantObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'CONSTANT'
@@ -161,7 +158,7 @@ class ProportionalRandomObj(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_proportional_edit_objects == False:
+ if ts.use_proportional_edit_objects is False:
ts.use_proportional_edit_objects = True
ts.proportional_edit_falloff = 'RANDOM'
@@ -169,11 +166,8 @@ class ProportionalRandomObj(Operator):
ts.proportional_edit_falloff = 'RANDOM'
return {'FINISHED'}
-#######################################
-# Proportional Edit Edit Mode #
-#######################################
-
+# Proportional Edit Edit Mode
class ProportionalEditEdt(Operator):
bl_idname = "proportional_edt.active"
bl_label = "Proportional Edit EditMode"
@@ -325,9 +319,8 @@ class ProportionalRandomEdt(Operator):
ts.proportional_edit_falloff = 'RANDOM'
return {'FINISHED'}
-# Pie ProportionalEditObj - O
-
+# Pie ProportionalEditObj - O
class PieProportionalObj(Menu):
bl_idname = "pie.proportional_obj"
bl_label = "Pie Proportional Obj"
@@ -352,9 +345,8 @@ class PieProportionalObj(Menu):
# 3 - BOTTOM - RIGHT
pie.operator("proportional_obj.random", text="Random", icon='RNDCURVE')
-# Pie ProportionalEditEdt - O
-
+# Pie ProportionalEditEdt - O
class PieProportionalEdt(Menu):
bl_idname = "pie.proportional_edt"
bl_label = "Pie Proportional Edit"
@@ -379,9 +371,8 @@ class PieProportionalEdt(Menu):
# 3 - BOTTOM - RIGHT
pie.menu("pie.proportional_more", text="More", icon='LINCURVE')
-# Pie ProportionalEditEdt - O
-
+# Pie ProportionalEditEdt - O
class PieProportionalMore(Menu):
bl_idname = "pie.proportional_more"
bl_label = "Pie Proportional More"
@@ -390,11 +381,11 @@ class PieProportionalMore(Menu):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
- row = box.row(align=True)
box.operator("proportional_edt.linear", text="Linear", icon='LINCURVE')
box.operator("proportional_edt.sharp", text="Sharp", icon='SHARPCURVE')
box.operator("proportional_edt.random", text="Random", icon='RNDCURVE')
+
classes = (
ProportionalEditObj,
ProportionalSmoothObj,
@@ -425,44 +416,33 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# ProportionalEditObj
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
kmi = km.keymap_items.new('wm.call_menu_pie', 'O', 'PRESS')
kmi.properties.name = "pie.proportional_obj"
-# kmi.active = True
addon_keymaps.append((km, kmi))
# ProportionalEditEdt
km = wm.keyconfigs.addon.keymaps.new(name='Mesh')
kmi = km.keymap_items.new('wm.call_menu_pie', 'O', 'PRESS')
kmi.properties.name = "pie.proportional_edt"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Object Mode']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.proportional_obj":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
- kc = wm.keyconfigs.addon
- if kc:
- km = kc.keymaps['Mesh']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.proportional_edt":
- km.keymap_items.remove(kmi)
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_save_open_menu.py b/space_view3d_pie_menus/pie_save_open_menu.py
index 0a43eb2b..bdd9b63c 100644
--- a/space_view3d_pie_menus/pie_save_open_menu.py
+++ b/space_view3d_pie_menus/pie_save_open_menu.py
@@ -71,7 +71,6 @@ class pie_link(Menu):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
- row = box.row(align=True)
box.operator("wm.link", text="Link", icon='LINK_BLEND')
box.operator("wm.append", text="Append", icon='APPEND_BLEND')
box.menu("external.data", text="External Data", icon='EXTERNAL_DATA')
@@ -85,7 +84,6 @@ class pie_recover(Menu):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
- row = box.row(align=True)
box.operator("wm.recover_auto_save", text="Recover Auto Save...", icon='RECOVER_AUTO')
box.operator("wm.recover_last_session", text="Recover Last Session", icon='RECOVER_LAST')
box.operator("wm.revert_mainfile", text="Revert", icon='FILE_REFRESH')
@@ -99,7 +97,6 @@ class pie_fileio(Menu):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
- row = box.row(align=True)
box.menu("INFO_MT_file_import", icon='IMPORT')
box.separator()
box.menu("INFO_MT_file_export", icon='EXPORT')
@@ -128,7 +125,7 @@ class ExternalData(Menu):
class FileIncrementalSave(Operator):
bl_idname = "file.save_incremental"
bl_label = "Save Incremental"
- bl_description = "Save First!then Incremental, .blend will get _001 extension"
+ bl_description = "Save First! then Incremental, .blend will get _001 extension"
bl_options = {"REGISTER"}
@classmethod
@@ -163,7 +160,8 @@ class FileIncrementalSave(Operator):
try:
bpy.ops.wm.save_as_mainfile(filepath=output)
except:
- self.report({'WARNING'}, "File could not be saved. Check the System Console for errors")
+ self.report({'WARNING'},
+ "File could not be saved. Check the System Console for errors")
return {'CANCELLED'}
self.report(
@@ -189,29 +187,27 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Save/Open/...
km = wm.keyconfigs.addon.keymaps.new(name='Window')
kmi = km.keymap_items.new('wm.call_menu_pie', 'S', 'PRESS', ctrl=True)
kmi.properties.name = "pie.saveopen"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Window']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.saveopen":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_sculpt_menu.py b/space_view3d_pie_menus/pie_sculpt_menu.py
index bebbc71e..edeffac3 100644
--- a/space_view3d_pie_menus/pie_sculpt_menu.py
+++ b/space_view3d_pie_menus/pie_sculpt_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'W'",
"description": "Sculpt Brush Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 0),
"blender": (2, 77, 0),
"location": "W key",
"warning": "",
@@ -38,8 +38,6 @@ from bpy.types import (
# Sculpt Draw
-
-
class SculptSculptDraw(Operator):
bl_idname = "sculpt.sculptraw"
bl_label = "Sculpt SculptDraw"
@@ -49,9 +47,8 @@ class SculptSculptDraw(Operator):
context.tool_settings.sculpt.brush = bpy.data.brushes['SculptDraw']
return {'FINISHED'}
-# Pie Sculp Pie Menus - W
-
+# Pie Sculp Pie Menus - W
class PieSculptPie(Menu):
bl_idname = "pie.sculpt"
bl_label = "Pie Sculpt"
@@ -60,57 +57,75 @@ class PieSculptPie(Menu):
layout = self.layout
pie = layout.menu_pie()
# 4 - LEFT
- pie.operator("paint.brush_select", text="Crease", icon='BRUSH_CREASE').sculpt_tool = 'CREASE'
+ pie.operator("paint.brush_select",
+ text="Crease", icon='BRUSH_CREASE').sculpt_tool = 'CREASE'
# 6 - RIGHT
- pie.operator("paint.brush_select", text='Blob', icon='BRUSH_BLOB').sculpt_tool = 'BLOB'
+ pie.operator("paint.brush_select",
+ text='Blob', icon='BRUSH_BLOB').sculpt_tool = 'BLOB'
# 2 - BOTTOM
- pie.menu(PieSculpttwo.bl_idname, text="More Brushes", icon='BRUSH_SMOOTH')
+ pie.menu(PieSculpttwo.bl_idname,
+ text="More Brushes", icon='BRUSH_SMOOTH')
# 8 - TOP
- pie.operator("sculpt.sculptraw", text='SculptDraw', icon='BRUSH_SCULPT_DRAW')
+ pie.operator("sculpt.sculptraw",
+ text='SculptDraw', icon='BRUSH_SCULPT_DRAW')
# 7 - TOP - LEFT
- pie.operator("paint.brush_select", text="Clay", icon='BRUSH_CLAY').sculpt_tool = 'CLAY'
+ pie.operator("paint.brush_select",
+ text="Clay", icon='BRUSH_CLAY').sculpt_tool = 'CLAY'
# 9 - TOP - RIGHT
- pie.operator("paint.brush_select", text='Claystrips', icon='BRUSH_CLAY_STRIPS').sculpt_tool = 'CLAY_STRIPS'
+ pie.operator("paint.brush_select",
+ text='Claystrips', icon='BRUSH_CLAY_STRIPS').sculpt_tool = 'CLAY_STRIPS'
# 1 - BOTTOM - LEFT
- pie.operator("paint.brush_select", text='Inflate/Deflate', icon='BRUSH_INFLATE').sculpt_tool = 'INFLATE'
+ pie.operator("paint.brush_select",
+ text='Inflate/Deflate', icon='BRUSH_INFLATE').sculpt_tool = 'INFLATE'
# 3 - BOTTOM - RIGHT
- pie.menu(PieSculptthree.bl_idname, text="Grab Brushes", icon='BRUSH_GRAB')
-
-# Pie Sculpt 2
+ pie.menu(PieSculptthree.bl_idname,
+ text="Grab Brushes", icon='BRUSH_GRAB')
+# Pie Sculpt 2
class PieSculpttwo(Menu):
bl_idname = "pie.sculpttwo"
bl_label = "Pie Sculpt 2"
def draw(self, context):
-
layout = self.layout
- layout.operator("paint.brush_select", text='Smooth', icon='BRUSH_SMOOTH').sculpt_tool = 'SMOOTH'
- layout.operator("paint.brush_select", text='Flatten', icon='BRUSH_FLATTEN').sculpt_tool = 'FLATTEN'
- layout.operator("paint.brush_select", text='Scrape/Peaks', icon='BRUSH_SCRAPE').sculpt_tool = 'SCRAPE'
- layout.operator("paint.brush_select", text='Fill/Deepen', icon='BRUSH_FILL').sculpt_tool = 'FILL'
- layout.operator("paint.brush_select", text='Pinch/Magnify', icon='BRUSH_PINCH').sculpt_tool = 'PINCH'
- layout.operator("paint.brush_select", text='Layer', icon='BRUSH_LAYER').sculpt_tool = 'LAYER'
- layout.operator("paint.brush_select", text='Mask', icon='BRUSH_MASK').sculpt_tool = 'MASK'
- layout.operator("paint.brush_select", text='Simplify', icon='BRUSH_DATA').sculpt_tool = 'SIMPLIFY'
-
-# Pie Sculpt Three
+ layout.operator("paint.brush_select", text='Smooth',
+ icon='BRUSH_SMOOTH').sculpt_tool = 'SMOOTH'
+ layout.operator("paint.brush_select", text='Flatten',
+ icon='BRUSH_FLATTEN').sculpt_tool = 'FLATTEN'
+ layout.operator("paint.brush_select", text='Scrape/Peaks',
+ icon='BRUSH_SCRAPE').sculpt_tool = 'SCRAPE'
+ layout.operator("paint.brush_select", text='Fill/Deepen',
+ icon='BRUSH_FILL').sculpt_tool = 'FILL'
+ layout.operator("paint.brush_select", text='Pinch/Magnify',
+ icon='BRUSH_PINCH').sculpt_tool = 'PINCH'
+ layout.operator("paint.brush_select", text='Layer',
+ icon='BRUSH_LAYER').sculpt_tool = 'LAYER'
+ layout.operator("paint.brush_select", text='Mask',
+ icon='BRUSH_MASK').sculpt_tool = 'MASK'
+ layout.operator("paint.brush_select", text='Simplify',
+ icon='BRUSH_DATA').sculpt_tool = 'SIMPLIFY'
+# Pie Sculpt Three
class PieSculptthree(Menu):
bl_idname = "pie.sculptthree"
bl_label = "Pie Sculpt 3"
def draw(self, context):
-
layout = self.layout
- layout.operator("paint.brush_select", text='Grab', icon='BRUSH_GRAB').sculpt_tool = 'GRAB'
- layout.operator("paint.brush_select", text='Nudge', icon='BRUSH_NUDGE').sculpt_tool = 'NUDGE'
- layout.operator("paint.brush_select", text='Thumb', icon='BRUSH_THUMB').sculpt_tool = 'THUMB'
- layout.operator("paint.brush_select", text='Snakehook', icon='BRUSH_SNAKE_HOOK').sculpt_tool = 'SNAKE_HOOK'
- layout.operator("paint.brush_select", text='Twist', icon='BRUSH_ROTATE').sculpt_tool = 'ROTATE'
+
+ layout.operator("paint.brush_select",
+ text='Grab', icon='BRUSH_GRAB').sculpt_tool = 'GRAB'
+ layout.operator("paint.brush_select",
+ text='Nudge', icon='BRUSH_NUDGE').sculpt_tool = 'NUDGE'
+ layout.operator("paint.brush_select",
+ text='Thumb', icon='BRUSH_THUMB').sculpt_tool = 'THUMB'
+ layout.operator("paint.brush_select",
+ text='Snakehook', icon='BRUSH_SNAKE_HOOK').sculpt_tool = 'SNAKE_HOOK'
+ layout.operator("paint.brush_select",
+ text='Twist', icon='BRUSH_ROTATE').sculpt_tool = 'ROTATE'
classes = (
@@ -126,44 +141,33 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Sculpt Pie Menu
km = wm.keyconfigs.addon.keymaps.new(name='Sculpt')
kmi = km.keymap_items.new('wm.call_menu_pie', 'W', 'PRESS')
kmi.properties.name = "pie.sculpt"
-# kmi.active = True
addon_keymaps.append((km, kmi))
# Sculpt Pie Menu 2
km = wm.keyconfigs.addon.keymaps.new(name='Sculpt')
kmi = km.keymap_items.new('wm.call_menu_pie', 'W', 'PRESS', alt=True)
kmi.properties.name = "pie.sculpttwo"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Sculpt']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.sculpt":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
- kc = wm.keyconfigs.addon
- if kc:
- km = kc.keymaps['Sculpt']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.sculpttwo":
- km.keymap_items.remove(kmi)
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_select_menu.py b/space_view3d_pie_menus/pie_select_menu.py
index 585e28dc..091e18ed 100644
--- a/space_view3d_pie_menus/pie_select_menu.py
+++ b/space_view3d_pie_menus/pie_select_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'A'",
"description": "Object/Edit mode Selection Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -31,14 +31,10 @@ bl_info = {
}
import bpy
-from bpy.types import (
- Menu,
- Operator,
- )
-
-# Pie Selection Object Mode - A
+from bpy.types import Menu
+# Pie Selection Object Mode - A
class PieSelectionsMore(Menu):
bl_idname = "pie.selectionsmore"
bl_label = "Pie Selections Object Mode"
@@ -47,15 +43,13 @@ class PieSelectionsMore(Menu):
layout = self.layout
pie = layout.menu_pie()
box = pie.split().column()
- row = box.row(align=True)
box.operator("object.select_by_type", text="Select By Type", icon='SNAP_VOLUME')
box.operator("object.select_grouped", text="Select Grouped", icon='ROTATE')
box.operator("object.select_linked", text="Select Linked", icon='CONSTRAINT_BONE')
box.menu("VIEW3D_MT_select_object_more_less", text="More/Less")
-# Pie Selection Object Mode - A
-
+# Pie Selection Object Mode - A
class PieSelectionsOM(Menu):
bl_idname = "pie.selectionsom"
bl_label = "Pie Selections Object Mode"
@@ -68,9 +62,11 @@ class PieSelectionsOM(Menu):
# 6 - RIGHT
pie.operator("object.select_random", text="Select Random", icon='GROUP_VERTEX')
# 2 - BOTTOM
- pie.operator("object.select_all", text="Invert Selection", icon='ZOOM_PREVIOUS').action = 'INVERT'
+ pie.operator("object.select_all", text="Invert Selection",
+ icon='ZOOM_PREVIOUS').action = 'INVERT'
# 8 - TOP
- pie.operator("object.select_all", text="Select All Toggle", icon='RENDER_REGION').action = 'TOGGLE'
+ pie.operator("object.select_all", text="Select All Toggle",
+ icon='RENDER_REGION').action = 'TOGGLE'
# 7 - TOP - LEFT
pie.operator("view3d.select_circle", text="Circle Select", icon='BORDER_LASSO')
# 9 - TOP - RIGHT
@@ -80,9 +76,8 @@ class PieSelectionsOM(Menu):
# 3 - BOTTOM - RIGHT
pie.menu("pie.selectionsmore", text="Select Menu", icon='RESTRICT_SELECT_OFF')
-# Pie Selection Edit Mode
-
+# Pie Selection Edit Mode
class PieSelectionsEM(Menu):
bl_idname = "pie.selectionsem"
bl_label = "Pie Selections Edit Mode"
@@ -91,25 +86,30 @@ class PieSelectionsEM(Menu):
layout = self.layout
pie = layout.menu_pie()
# 4 - LEFT
- pie.operator("view3d.select_border", text="Border Select", icon='BORDER_RECT')
+ pie.operator("view3d.select_border", text="Border Select",
+ icon='BORDER_RECT')
# 6 - RIGHT
pie.menu("object.selectloopselection", text="Select Loop Menu", icon='LOOPSEL')
# 2 - BOTTOM
- pie.operator("mesh.select_all", text="Select None", icon='RESTRICT_SELECT_ON').action = 'DESELECT'
+ pie.operator("mesh.select_all", text="Select None",
+ icon='RESTRICT_SELECT_ON').action = 'DESELECT'
# 8 - TOP
- pie.operator("mesh.select_all", text="Select All", icon='RESTRICT_SELECT_OFF').action = 'SELECT'
+ pie.operator("mesh.select_all", text="Select All",
+ icon='RESTRICT_SELECT_OFF').action = 'SELECT'
# 7 - TOP - LEFT
- pie.operator("mesh.select_all", text="Select All Toggle", icon='ARROW_LEFTRIGHT').action = 'TOGGLE'
+ pie.operator("mesh.select_all", text="Select All Toggle",
+ icon='ARROW_LEFTRIGHT').action = 'TOGGLE'
# 9 - TOP - RIGHT
- pie.operator("mesh.select_all", text="Invert Selection", icon='FULLSCREEN_EXIT').action = 'INVERT'
+ pie.operator("mesh.select_all", text="Invert Selection",
+ icon='FULLSCREEN_EXIT').action = 'INVERT'
# 1 - BOTTOM - LEFT
- pie.operator("view3d.select_circle", text="Circle Select", icon='BORDER_LASSO')
+ pie.operator("view3d.select_circle", text="Circle Select",
+ icon='BORDER_LASSO')
# 3 - BOTTOM - RIGHT
pie.menu("object.selectallbyselection", text="Multi Select Menu", icon='SNAP_EDGE')
-# Select All By Selection
-
+# Select All By Selection
class SelectAllBySelection(Menu):
bl_idname = "object.selectallbyselection"
bl_label = "Verts Edges Faces"
@@ -140,6 +140,7 @@ class SelectAllBySelection(Menu):
prop.value = "(True, True, True)"
prop.data_path = "tool_settings.mesh_select_mode"
+
class SelectLoopSelection(Menu):
bl_idname = "object.selectloopselection"
bl_label = "Verts Edges Faces"
@@ -153,12 +154,13 @@ class SelectLoopSelection(Menu):
layout.operator("mesh.loop_multi_select", text="Select Ring", icon='EDGESEL').ring = True
layout.operator("mesh.loop_to_region", text="Select Loop Inner Region", icon='FACESEL')
+
classes = (
PieSelectionsOM,
PieSelectionsEM,
SelectAllBySelection,
PieSelectionsMore,
- SelectLoopSelection
+ SelectLoopSelection,
)
addon_keymaps = []
@@ -167,8 +169,8 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Selection Object Mode
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
@@ -186,23 +188,14 @@ def register():
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['Object Mode']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.selectionsom":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
- kc = wm.keyconfigs.addon
- if kc:
- km = kc.keymaps['Mesh']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.selectionsem":
- km.keymap_items.remove(kmi)
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_shading_menu.py b/space_view3d_pie_menus/pie_shading_menu.py
index 8c9f1f50..e7eb03b9 100644
--- a/space_view3d_pie_menus/pie_shading_menu.py
+++ b/space_view3d_pie_menus/pie_shading_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Z'",
"description": "Viewport Shading Menus",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3D View",
"warning": "",
@@ -33,9 +33,8 @@ bl_info = {
import bpy
from bpy.types import Menu
-# Pie Shading - Z
-
+# Pie Shading - Z
class PieShadingView(Menu):
bl_idname = "pie.shadingview"
bl_label = "Pie Shading"
@@ -47,7 +46,7 @@ class PieShadingView(Menu):
pie.prop(context.space_data, "viewport_shade", expand=True)
if context.active_object:
- if(context.mode == 'EDIT_MESH'):
+ if context.mode == 'EDIT_MESH':
pie.operator("MESH_OT_faces_shade_smooth")
pie.operator("MESH_OT_faces_shade_flat")
else:
@@ -65,29 +64,26 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Shading
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'Z', 'PRESS')
kmi.properties.name = "pie.shadingview"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.shadingview":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
if __name__ == "__main__":
diff --git a/space_view3d_pie_menus/pie_snap_menu.py b/space_view3d_pie_menus/pie_snap_menu.py
index 9e58e608..b5ca502c 100644
--- a/space_view3d_pie_menus/pie_snap_menu.py
+++ b/space_view3d_pie_menus/pie_snap_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Ctrl Shift Tab'",
"description": "Snap Element Menu",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "3d View",
"warning": "",
@@ -36,9 +36,8 @@ from bpy.types import (
Operator,
)
-# Pie Snap - Shift + Tab
-
+# Pie Snap - Shift + Tab
class PieSnaping(Menu):
bl_idname = "pie.snapping"
bl_label = "Pie Snapping"
@@ -72,10 +71,10 @@ class SnapActive(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == True:
+ if ts.use_snap is True:
ts.use_snap = False
- elif ts.use_snap == False:
+ elif ts.use_snap is False:
ts.use_snap = True
return {'FINISHED'}
@@ -88,7 +87,7 @@ class SnapVolume(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == False:
+ if ts.use_snap is False:
ts.use_snap = True
ts.snap_element = 'VOLUME'
@@ -105,7 +104,7 @@ class SnapFace(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == False:
+ if ts.use_snap is False:
ts.use_snap = True
ts.snap_element = 'FACE'
@@ -122,7 +121,7 @@ class SnapEdge(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == False:
+ if ts.use_snap is False:
ts.use_snap = True
ts.snap_element = 'EDGE'
@@ -139,7 +138,7 @@ class SnapVertex(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == False:
+ if ts.use_snap is False:
ts.use_snap = True
ts.snap_element = 'VERTEX'
@@ -156,7 +155,7 @@ class SnapIncrement(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap == False:
+ if ts.use_snap is False:
ts.use_snap = True
ts.snap_element = 'INCREMENT'
@@ -173,10 +172,10 @@ class SnapAlignRotation(Operator):
def execute(self, context):
ts = context.tool_settings
- if ts.use_snap_align_rotation == True:
+ if ts.use_snap_align_rotation is True:
ts.use_snap_align_rotation = False
- elif ts.use_snap_align_rotation == False:
+ elif ts.use_snap_align_rotation is False:
ts.use_snap_align_rotation = True
return {'FINISHED'}
@@ -220,6 +219,8 @@ class SnapTargetMenu(Menu):
# 9 - TOP - RIGHT
# 1 - BOTTOM - LEFT
# 3 - BOTTOM - RIGHT
+
+
# Pie Snapping - Shift + Tab
classes = (
@@ -241,29 +242,27 @@ addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Snapping
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS', ctrl=True, shift=True)
kmi.properties.name = "pie.snapping"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.snapping":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
+
if __name__ == "__main__":
register()
diff --git a/space_view3d_pie_menus/pie_views_numpad_menu.py b/space_view3d_pie_menus/pie_views_numpad_menu.py
index a176258a..02cf5464 100644
--- a/space_view3d_pie_menus/pie_views_numpad_menu.py
+++ b/space_view3d_pie_menus/pie_views_numpad_menu.py
@@ -21,8 +21,8 @@
bl_info = {
"name": "Hotkey: 'Q'",
"description": "Viewport Numpad Menus",
- # "author": "pitiwazou, meta-androcto",
- # "version": (0, 1, 0),
+ "author": "pitiwazou, meta-androcto",
+ "version": (0, 1, 1),
"blender": (2, 77, 0),
"location": "Q key",
"warning": "",
@@ -35,47 +35,42 @@ from bpy.types import (
Menu,
Operator,
)
-from bpy.props import (
- StringProperty,
- )
-
-# Lock Camera Transforms
+# Lock Camera Transforms
class LockTransforms(Operator):
bl_idname = "object.locktransforms"
bl_label = "Lock Object Transforms"
+ bl_description = ("Enable or disable the editing of objects transforms in the 3D View\n"
+ "Needs an existing Active Object")
bl_options = {'REGISTER', 'UNDO'}
+ @classmethod
+ def poll(cls, context):
+ return context.active_object is not None
+
def execute(self, context):
- obj = context.object
- if obj.lock_rotation[0] == False:
+ obj = context.active_object
+ if obj.lock_rotation[0] is False:
obj.lock_rotation[0] = True
obj.lock_rotation[1] = True
obj.lock_rotation[2] = True
- obj.lock_location[0] = True
- obj.lock_location[1] = True
- obj.lock_location[2] = True
obj.lock_scale[0] = True
obj.lock_scale[1] = True
obj.lock_scale[2] = True
- elif context.object.lock_rotation[0] == True:
+ elif context.object.lock_rotation[0] is True:
obj.lock_rotation[0] = False
obj.lock_rotation[1] = False
obj.lock_rotation[2] = False
- obj.lock_location[0] = False
- obj.lock_location[1] = False
- obj.lock_location[2] = False
obj.lock_scale[0] = False
obj.lock_scale[1] = False
obj.lock_scale[2] = False
+
return {'FINISHED'}
# Pie View All Sel Glob Etc - Q
-
-
class PieViewallSelGlobEtc(Menu):
bl_idname = "pie.vieallselglobetc"
bl_label = "Pie View All Sel Glob..."
@@ -99,16 +94,15 @@ class PieViewallSelGlobEtc(Menu):
layout.operator("screen.screen_full_area", text="Full Screen", icon='FULLSCREEN_ENTER')
# 3 - BOTTOM - RIGHT
-# Pie views numpad - Q
-
+# Pie views numpad - Q
class PieViewNumpad(Menu):
bl_idname = "pie.viewnumpad"
bl_label = "Pie Views Ortho"
def draw(self, context):
layout = self.layout
- ob = context.object
+ ob = context.active_object
pie = layout.menu_pie()
scene = context.scene
rd = scene.render
@@ -128,10 +122,11 @@ class PieViewNumpad(Menu):
# 1 - BOTTOM - LEFT
box = pie.split().column()
row = box.row(align=True)
- if context.space_data.lock_camera == False:
+
+ if context.space_data.lock_camera is False:
row.operator("wm.context_toggle", text="Lock Cam to View",
icon='UNLOCKED').data_path = "space_data.lock_camera"
- elif context.space_data.lock_camera == True:
+ elif context.space_data.lock_camera is True:
row.operator("wm.context_toggle", text="Lock Cam to View",
icon='LOCKED').data_path = "space_data.lock_camera"
@@ -139,18 +134,18 @@ class PieViewNumpad(Menu):
row.operator("view3d.viewnumpad", text="View Cam", icon='VISIBLE_IPO_ON').type = 'CAMERA'
row.operator("view3d.camera_to_view", text="Cam to view", icon='MAN_TRANS')
- if ob.lock_rotation[0] == False:
- row = box.row(align=True)
- row.operator("object.locktransforms", text="Lock Transforms", icon='LOCKED')
+ icon_locked = 'LOCKED' if ob and ob.lock_rotation[0] is False else \
+ 'UNLOCKED' if ob and ob.lock_rotation[0] is True else 'LOCKED'
+
+ row = box.row(align=True)
+ row.operator("object.locktransforms", text="Lock Transforms", icon=icon_locked)
- elif ob.lock_rotation[0] == True:
- row = box.row(align=True)
- row.operator("object.locktransforms", text="UnLock Transforms", icon='UNLOCKED')
row = box.row(align=True)
row.prop(rd, "use_border", text="Border")
# 3 - BOTTOM - RIGHT
pie.menu(PieViewallSelGlobEtc.bl_idname, text="View Menu", icon='BBOX')
+
classes = (
PieViewNumpad,
LockTransforms,
@@ -164,34 +159,26 @@ def register():
for cls in classes:
bpy.utils.register_class(cls)
-# Active Camera
- bpy.types.Scene.cameratoto = bpy.props.StringProperty(default="")
-
wm = bpy.context.window_manager
-
if wm.keyconfigs.addon:
# Views numpad
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu_pie', 'Q', 'PRESS')
kmi.properties.name = "pie.viewnumpad"
-# kmi.active = True
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
- wm = bpy.context.window_manager
+ wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
- km = kc.keymaps['3D View Generic']
- for kmi in km.keymap_items:
- if kmi.idname == 'wm.call_menu_pie':
- if kmi.properties.name == "pie.viewnumpad":
- km.keymap_items.remove(kmi)
+ for km, kmi in addon_keymaps:
+ km.keymap_items.remove(kmi)
+ addon_keymaps.clear()
- del bpy.types.Scene.cameratoto
if __name__ == "__main__":
register()