From f4e1bf3eb7039c6813e6ee80e57c5f13b19d47fb Mon Sep 17 00:00:00 2001 From: meta-androcto Date: Sat, 24 Aug 2019 10:09:20 +1000 Subject: viewport pies: remove cursor, proportional: T67995 --- space_view3d_pie_menus/__init__.py | 4 +- space_view3d_pie_menus/pie_cursor.py | 122 ------- space_view3d_pie_menus/pie_proportional_menu.py | 427 ------------------------ space_view3d_pie_menus/pie_select_menu.py | 39 +-- 4 files changed, 18 insertions(+), 574 deletions(-) delete mode 100644 space_view3d_pie_menus/pie_cursor.py delete mode 100644 space_view3d_pie_menus/pie_proportional_menu.py diff --git a/space_view3d_pie_menus/__init__.py b/space_view3d_pie_menus/__init__.py index 32c386e9..cdb9a9e5 100644 --- a/space_view3d_pie_menus/__init__.py +++ b/space_view3d_pie_menus/__init__.py @@ -34,7 +34,7 @@ from bpy.types import ( bl_info = { "name": "3D Viewport Pie Menus", "author": "meta-androcto", - "version": (1, 2, 8), + "version": (1, 2, 9), "blender": (2, 80, 0), "description": "Pie Menu Activation", "location": "Addons Preferences", @@ -49,11 +49,9 @@ sub_modules_names = ( "pie_views_numpad_menu", "pie_sculpt_menu", "pie_origin", - "pie_cursor", "pie_manipulator_menu", "pie_snap_menu", "pie_shading_menu", - "pie_proportional_menu", "pie_align_menu", "pie_delete_menu", "pie_apply_transform_menu", diff --git a/space_view3d_pie_menus/pie_cursor.py b/space_view3d_pie_menus/pie_cursor.py deleted file mode 100644 index 6d60c47e..00000000 --- a/space_view3d_pie_menus/pie_cursor.py +++ /dev/null @@ -1,122 +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 ##### - -# - -bl_info = { - "name": "Hotkey: 'Shift S'", - "description": "Cursor Menu", - "author": "pitiwazou, meta-androcto", - "version": (0, 1, 0), - "blender": (2, 80, 0), - "location": "3D View", - "warning": "", - "wiki_url": "", - "category": "Cursor Pie" - } - -import bpy -from bpy.types import ( - Menu, - Operator, - ) - - -# SnapCursSelToCenter1 thanks to Isaac Weaver (wisaac) D1963 -class PIE_OT_Snap_CursSelToCenter1(Operator): - 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.area.type == "VIEW_3D" and context.mode == "OBJECT") - - def execute(self, context): - context.scene.cursor.location = (0, 0, 0) - for obj in context.selected_objects: - obj.location = (0, 0, 0) - - return {'FINISHED'} - - -# Origin/Pivot menu1 - Shift + S -class PIE_MT_Snap_CursorMenu(Menu): - bl_idname = "SNAP_MT_cursormenu" - 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 (Keep Offset)", icon='PIVOT_CURSOR').use_offset = True - # 2 - BOTTOM - pie.operator("view3d.snap_cursor_selected_to_center1", - text="Selected & Cursor to Center", icon='NONE') - # 8 - TOP - pie.operator("view3d.snap_cursor_to_center", text="Cursor to World Origin", icon='CLIPUV_DEHLT') - # 7 - TOP - LEFT - pie.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected", icon='NONE') - # 9 - TOP - RIGHT - pie.operator("view3d.snap_cursor_to_active", text="Cursor to Active", icon='NONE') - # 1 - BOTTOM - LEFT - pie.operator("view3d.snap_selected_to_grid", text="Selection to Grid", icon='GRID') - # 3 - BOTTOM - RIGHT - pie.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid", icon='GRID') - - -classes = ( - PIE_MT_Snap_CursorMenu, - PIE_OT_Snap_CursSelToCenter1, - ) - -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 = "SNAP_MT_cursormenu" - 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: - 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 deleted file mode 100644 index 10b4cf57..00000000 --- a/space_view3d_pie_menus/pie_proportional_menu.py +++ /dev/null @@ -1,427 +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 ##### - -# - -bl_info = { - "name": "Hotkey: 'Shift O'", - "description": "Proportional Object/Edit Tools", - "author": "pitiwazou, meta-androcto", - "version": (0, 1, 1), - "blender": (2, 80, 0), - "location": "3D View Object & Edit modes", - "warning": "", - "wiki_url": "", - "category": "Proportional Edit Pie" - } - -import bpy -from bpy.types import ( - Menu, - Operator, - ) - - -# Proportional Edit Object -class PIE_OT_ProportionalEditObj(Operator): - bl_idname = "proportional_obj.active" - bl_label = "Proportional Edit Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - - if ts.use_proportional_edit_objects is True: - ts.use_proportional_edit_objects = False - - elif ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - - return {'FINISHED'} - - -class PIE_OT_ProportionalSmoothObj(Operator): - bl_idname = "proportional_obj.smooth" - bl_label = "Proportional Smooth Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'SMOOTH' - - if ts.proportional_edit_falloff != 'SMOOTH': - ts.proportional_edit_falloff = 'SMOOTH' - return {'FINISHED'} - - -class PIE_OT_ProportionalSphereObj(Operator): - bl_idname = "proportional_obj.sphere" - bl_label = "Proportional Sphere Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'SPHERE' - - if ts.proportional_edit_falloff != 'SPHERE': - ts.proportional_edit_falloff = 'SPHERE' - return {'FINISHED'} - - -class PIE_OT_ProportionalRootObj(Operator): - bl_idname = "proportional_obj.root" - bl_label = "Proportional Root Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'ROOT' - - if ts.proportional_edit_falloff != 'ROOT': - ts.proportional_edit_falloff = 'ROOT' - return {'FINISHED'} - - -class PIE_OT_ProportionalSharpObj(Operator): - bl_idname = "proportional_obj.sharp" - bl_label = "Proportional Sharp Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'SHARP' - - if ts.proportional_edit_falloff != 'SHARP': - ts.proportional_edit_falloff = 'SHARP' - return {'FINISHED'} - - -class PIE_OT_ProportionalLinearObj(Operator): - bl_idname = "proportional_obj.linear" - bl_label = "Proportional Linear Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'LINEAR' - - if ts.proportional_edit_falloff != 'LINEAR': - ts.proportional_edit_falloff = 'LINEAR' - return {'FINISHED'} - - -class PIE_OT_ProportionalConstantObj(Operator): - bl_idname = "proportional_obj.constant" - bl_label = "Proportional Constant Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'CONSTANT' - - if ts.proportional_edit_falloff != 'CONSTANT': - ts.proportional_edit_falloff = 'CONSTANT' - return {'FINISHED'} - - -class PIE_OT_ProportionalRandomObj(Operator): - bl_idname = "proportional_obj.random" - bl_label = "Proportional Random Object" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - if ts.use_proportional_edit_objects is False: - ts.use_proportional_edit_objects = True - ts.proportional_edit_falloff = 'RANDOM' - - if ts.proportional_edit_falloff != 'RANDOM': - ts.proportional_edit_falloff = 'RANDOM' - return {'FINISHED'} - - -# Proportional Edit Edit Mode -class PIE_OT_ProportionalEditEdt(Operator): - bl_idname = "proportional_edt.active" - bl_label = "Proportional Edit EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit ^= 1 - return {'FINISHED'} - - -class PIE_OT_ProportionalConnectedEdt(Operator): - bl_idname = "proportional_edt.connected" - bl_label = "Proportional Connected EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_connected = True - return {'FINISHED'} - - -class PIE_OT_ProportionalProjectedEdt(Operator): - bl_idname = "proportional_edt.projected" - bl_label = "Proportional projected EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - - ts = context.tool_settings - ts.use_proportional_projected = True - return {'FINISHED'} - - -class PIE_OT_ProportionalSmoothEdt(Operator): - bl_idname = "proportional_edt.smooth" - bl_label = "Proportional Smooth EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'SMOOTH' - return {'FINISHED'} - - -class PIE_OT_ProportionalSphereEdt(Operator): - bl_idname = "proportional_edt.sphere" - bl_label = "Proportional Sphere EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'SPHERE' - return {'FINISHED'} - - -class PIE_OT_ProportionalRootEdt(Operator): - bl_idname = "proportional_edt.root" - bl_label = "Proportional Root EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'ROOT' - return {'FINISHED'} - - -class PIE_OT_ProportionalSharpEdt(Operator): - bl_idname = "proportional_edt.sharp" - bl_label = "Proportional Sharp EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'SHARP' - return {'FINISHED'} - - -class PIE_OT_ProportionalLinearEdt(Operator): - bl_idname = "proportional_edt.linear" - bl_label = "Proportional Linear EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'LINEAR' - return {'FINISHED'} - - -class PIE_OT_ProportionalConstantEdt(Operator): - bl_idname = "proportional_edt.constant" - bl_label = "Proportional Constant EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'CONSTANT' - return {'FINISHED'} - - -class PIE_OT_ProportionalRandomEdt(Operator): - bl_idname = "proportional_edt.random" - bl_label = "Proportional Random EditMode" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'RANDOM' - return {'FINISHED'} - -class PIE_OT_ProportionalInverseS(Operator): - bl_idname = "proportional_edt.inverse" - bl_label = "Proportional Inverse Square" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - ts = context.tool_settings - ts.use_proportional_edit = True - ts.proportional_edit_falloff = 'INVERSE_SQUARE' - return {'FINISHED'} - -# Pie ProportionalEditObj - O -class PIE_MT_ProportionalObj(Menu): - bl_idname = "PIE_MT_proportional_obj" - bl_label = "Pie Proportional Obj" - - def draw(self, context): - layout = self.layout - pie = layout.menu_pie() - # 4 - LEFT - pie.operator("proportional_obj.sphere", text="Sphere", icon='SPHERECURVE') - # 6 - RIGHT - pie.operator("proportional_obj.root", text="Root", icon='ROOTCURVE') - # 2 - BOTTOM - pie.operator("proportional_obj.smooth", text="Smooth", icon='SMOOTHCURVE') - # 8 - TOP - pie.prop(context.tool_settings, "use_proportional_edit_objects", text="Proportional On/Off") - # 7 - TOP - LEFT - pie.operator("proportional_obj.linear", text="Linear", icon='LINCURVE') - # 9 - TOP - RIGHT - pie.operator("proportional_obj.sharp", text="Sharp", icon='SHARPCURVE') - # 1 - BOTTOM - LEFT - pie.operator("proportional_obj.constant", text="Constant", icon='NOCURVE') - # 3 - BOTTOM - RIGHT - pie.operator("proportional_obj.random", text="Random", icon='RNDCURVE') - - -# Pie ProportionalEditEdt - O -class PIE_MT_ProportionalEdt(Menu): - bl_idname = "PIE_MT_proportional_edt" - bl_label = "Pie Proportional Edit" - - def draw(self, context): - layout = self.layout - pie = layout.menu_pie() - # 4 - LEFT - pie.operator("proportional_edt.connected", text="Connected", icon='PROP_CON') - # 6 - RIGHT - pie.operator("proportional_edt.projected", text="Projected", icon='PROP_ON') - # 2 - BOTTOM - pie.operator("proportional_edt.root", text="Root", icon='ROOTCURVE') - # 8 - TOP - pie.operator("proportional_edt.active", text="Proportional On/Off", icon='PROP_ON') - # 7 - TOP - LEFT - pie.operator("proportional_edt.smooth", text="Smooth", icon='SMOOTHCURVE') - # 9 - TOP - RIGHT - pie.operator("proportional_edt.sphere", text="Sphere", icon='SPHERECURVE') - # 1 - BOTTOM - LEFT - pie.operator("proportional_edt.constant", text="Constant", icon='NOCURVE') - # 3 - BOTTOM - RIGHT - pie.menu("PIE_MT_proportional_more", text="More", icon='LINCURVE') - - -# Pie ProportionalEditEdt - O -class PIE_MT_ProportionalMore(Menu): - bl_idname = "PIE_MT_proportional_more" - bl_label = "Pie Proportional More" - - def draw(self, context): - layout = self.layout - pie = layout.menu_pie() - box = pie.split().column() - 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') - box.operator("proportional_edt.inverse", text="INVERSE", icon='INVERSESQUARECURVE') - - -classes = ( - PIE_OT_ProportionalEditObj, - PIE_OT_ProportionalSmoothObj, - PIE_OT_ProportionalSphereObj, - PIE_OT_ProportionalRootObj, - PIE_OT_ProportionalSharpObj, - PIE_OT_ProportionalLinearObj, - PIE_OT_ProportionalConstantObj, - PIE_OT_ProportionalRandomObj, - PIE_OT_ProportionalEditEdt, - PIE_OT_ProportionalConnectedEdt, - PIE_OT_ProportionalProjectedEdt, - PIE_OT_ProportionalSmoothEdt, - PIE_OT_ProportionalSphereEdt, - PIE_OT_ProportionalRootEdt, - PIE_OT_ProportionalSharpEdt, - PIE_OT_ProportionalLinearEdt, - PIE_OT_ProportionalConstantEdt, - PIE_OT_ProportionalRandomEdt, - PIE_MT_ProportionalObj, - PIE_MT_ProportionalEdt, - PIE_MT_ProportionalMore, - PIE_OT_ProportionalInverseS, - ) - -addon_keymaps = [] - - -def register(): - for cls in classes: - bpy.utils.register_class(cls) - - 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', shift=True) - kmi.properties.name = "PIE_MT_proportional_obj" - 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', shift=True) - kmi.properties.name = "PIE_MT_proportional_edt" - 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: - 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_select_menu.py b/space_view3d_pie_menus/pie_select_menu.py index 48819c13..2ec6a039 100644 --- a/space_view3d_pie_menus/pie_select_menu.py +++ b/space_view3d_pie_menus/pie_select_menu.py @@ -47,9 +47,8 @@ class PIE_MT_SelectionsMore(Menu): layout = self.layout pie = layout.menu_pie() box = pie.split().column() - box.operator("object.select_by_type", text="Select By Type", icon='SNAP_VOLUME') - box.operator("object.select_grouped", text="Select Grouped", icon='NONE') - box.operator("object.select_linked", text="Select Linked", icon='CONSTRAINT_BONE') + box.operator("object.select_random", text="Select Random") + box.operator("object.select_linked", text="Select Linked") box.menu("VIEW3D_MT_select_object_more_less", text="More/Less") @@ -62,9 +61,9 @@ class PIE_MT_SelectionsOM(Menu): layout = self.layout pie = layout.menu_pie() # 4 - LEFT - pie.row().label(text="") + pie.operator("object.select_grouped", text="Select Grouped") # 6 - RIGHT - pie.operator("object.select_random", text="Select Random", icon='GROUP_VERTEX') + pie.operator("object.select_by_type", text="Select By Type") # 2 - BOTTOM pie.operator("object.select_all", text="Invert Selection", icon='ZOOM_PREVIOUS').action = 'INVERT' @@ -72,13 +71,13 @@ class PIE_MT_SelectionsOM(Menu): pie.operator("object.select_all", text="Select All Toggle", icon='NONE').action = 'TOGGLE' # 7 - TOP - LEFT - pie.operator("view3d.select_circle", text="Circle Select", icon='NONE') + pie.operator("view3d.select_circle", text="Circle Select") # 9 - TOP - RIGHT - pie.operator("view3d.select_box", text="Box Select", icon='NONE') + pie.operator("view3d.select_box", text="Box Select") # 1 - BOTTOM - LEFT - pie.operator("object.select_camera", text="Select Camera", icon='CAMERA_DATA') + pie.operator("object.select_camera", text="Select Camera") # 3 - BOTTOM - RIGHT - pie.menu("PIE_MT_selectionsmore", text="Select Menu", icon='RESTRICT_SELECT_OFF') + pie.menu("PIE_MT_selectionsmore", text="Select Menu") # Pie Selection Edit Mode @@ -90,25 +89,21 @@ class PIE_MT_SelectionsEM(Menu): layout = self.layout pie = layout.menu_pie() # 4 - LEFT - pie.operator("view3d.select_box", text="Box Select", - icon='NONE') + pie.operator("mesh.select_all", text="Select All", + icon='RESTRICT_SELECT_OFF').action = 'SELECT' # 6 - RIGHT - pie.menu("OBJECT_MT_selectloopselection", text="Select Loop Menu", icon='NONE') + pie.menu("OBJECT_MT_selectloopselection", text="Select Loop Menu") # 2 - BOTTOM - pie.operator("mesh.select_all", text="Select None", - icon='RESTRICT_SELECT_ON').action = 'DESELECT' + pie.operator("mesh.select_all", text="Invert Selection").action = 'INVERT' # 8 - TOP - pie.operator("mesh.select_all", text="Select All", - icon='RESTRICT_SELECT_OFF').action = 'SELECT' + pie.operator("mesh.select_all", text="Select All Toggle").action = 'TOGGLE' # 7 - TOP - LEFT - pie.operator("mesh.select_all", text="Select All Toggle", - icon='ARROW_LEFTRIGHT').action = 'TOGGLE' + pie.operator("view3d.select_circle", text="Circle Select") # 9 - TOP - RIGHT - pie.operator("mesh.select_all", text="Invert Selection", - icon='FULLSCREEN_EXIT').action = 'INVERT' + pie.operator("view3d.select_box", text="Box Select") # 1 - BOTTOM - LEFT - pie.operator("view3d.select_circle", text="Circle Select", - icon='NONE') + pie.operator("mesh.select_all", text="Select None", + icon='RESTRICT_SELECT_ON').action = 'DESELECT' # 3 - BOTTOM - RIGHT pie.menu("PIE_MT_selectallbyselection", text="Edit Modes", icon='VERTEXSEL') -- cgit v1.2.3