Skip to content
Snippets Groups Projects
  • Joshua Leung's avatar
    f173979b
    Port the "View 3D Pie Menus" Addon's "Manipulator" Pie over to activate tools,... · f173979b
    Joshua Leung authored
    Port the "View 3D Pie Menus" Addon's "Manipulator" Pie over to activate tools, as manipulators are no more
    
    * Spring team animator request
    
    * It's no longer possible to combinations of manipulators. Hence the reason they don't exist here
    * I've kept the basic/original layout to avoid muscle memory problems. However, as a result,
      the new pie doesn't make good use of space, and is unbalanced.
    f173979b
    History
    Port the "View 3D Pie Menus" Addon's "Manipulator" Pie over to activate tools,...
    Joshua Leung authored
    Port the "View 3D Pie Menus" Addon's "Manipulator" Pie over to activate tools, as manipulators are no more
    
    * Spring team animator request
    
    * It's no longer possible to combinations of manipulators. Hence the reason they don't exist here
    * I've kept the basic/original layout to avoid muscle memory problems. However, as a result,
      the new pie doesn't make good use of space, and is unbalanced.
pie_manipulator_menu.py 3.38 KiB
# ##### 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: 'Ctrl Space'",
    "description": "Extended Manipulator Menu",
    "author": "pitiwazou, meta-androcto",
    "version": (0, 1, 1),
    "blender": (2, 77, 0),
    "location": "3D View",
    "warning": "",
    "wiki_url": "",
    "category": "Manipulator Pie"
    }

import bpy
from bpy.types import (
        Menu,
        Operator,
        )


class WManupulators(Operator):
    bl_idname = "w.manupulators"
    bl_label = "W Manupulators"
    bl_options = {'REGISTER', 'UNDO'}
    bl_description = " Show/Hide Manipulator"

    def execute(self, context):

        if context.space_data.show_manipulator is True:
            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
class PieManipulator(Menu):
    bl_idname = "pie.manipulator"
    bl_label = "Pie Manipulator"

    def draw(self, context):
        layout = self.layout
        pie = layout.menu_pie()
        # 4 - LEFT
        pie.separator()  # Rotate/Scale
        # 6 - RIGHT
        pie.operator("wm.tool_set_by_name", text="Rotate", icon='MAN_ROT').name = "Rotate"
        # 2 - BOTTOM
        pie.operator("wm.tool_set_by_name", text="Translate/Rotate/Scale").name = "Transform"
        # 8 - TOP
        pie.operator("w.manupulators", text="Show/Hide Toggle", icon='MANIPUL')
        # 7 - TOP - LEFT
        pie.separator()  # Translate/Rotate
        # 9 - TOP - RIGHT
        pie.operator("wm.tool_set_by_name", text="Translate", icon='MAN_TRANS').name = "Move"
        # 1 - BOTTOM - LEFT
        pie.separator()  # Translate/Scale
        # 3 - BOTTOM - RIGHT
        pie.operator("wm.tool_set_by_name", text="Scale", icon='MAN_SCALE').name = "Scale"


classes = (
    PieManipulator,
    WManupulators,
    )

addon_keymaps = []


def register():
    for cls in classes:
        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', ctrl=True)
        kmi.properties.name = "pie.manipulator"
        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()