clean up & rename menu's for consistency.
[blender-addons-contrib.git] / space_view3d_manipulator_Menu.py
1 #re creating the functionality of the manipulator menu from 2.49
2 #
3 #ported by Michael Williamson
4 #
5 # ##### BEGIN GPL LICENSE BLOCK #####
6 #
7 #  This program is free software; you can redistribute it and/or
8 #  modify it under the terms of the GNU General Public License
9 #  as published by the Free Software Foundation; either version 2
10 #  of the License, or (at your option) any later version.
11 #
12 #  This program is distributed in the hope that it will be useful,
13 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #  GNU General Public License for more details.
16 #
17 #  You should have received a copy of the GNU General Public License
18 #  along with this program; if not, write to the Free Software Foundation,
19 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 #
21 # ##### END GPL LICENSE BLOCK #####
22
23 bl_addon_info = {
24     'name': '3D View: Manipulator Menu',
25     'author': 'MichaelW',
26     'version': '1',
27     'blender': (2, 5, 3),
28     'location': 'View3D > Ctrl Space ',
29     'description': 'Menu to change the manipulator type and/or disable it',
30     'category': '3D View'}
31 "Add manipulator menu  (Ctrl-space in 3d view)"
32
33 """
34 Name: '3D Dynamic Menu'
35 Blender: 253
36 """
37
38 __author__ = ["MichaelW"]
39 __version__ = '1.0'
40 __url__ = [""]
41 __bpydoc__= """
42 Dynamic Menu
43 This adds a the Dynamic Menu in the 3DView.
44
45 Usage:
46 * Ctrl Space in the 3d view
47
48 * Choose your function from the menu.
49
50 Version history:
51 V1(MichaelW) initial port form 2.49
52     
53
54 """
55
56
57 import bpy
58
59 def main(context):
60     bpy.context.space_data.manipulator = False
61
62 class VIEW3D_OT_disable_manipulator(bpy.types.Operator):
63     ''''''
64     bl_idname = "VIEW3D_OT_disable_manipulator"
65     bl_label = "disable manipulator"
66
67     def poll(self, context):
68         return context.active_object != None
69
70     def execute(self, context):
71         main(context)
72         return {'FINISHED'}
73
74
75
76 class VIEW3D_MT_ManipulatorMenu(bpy.types.Menu):
77     ''''''
78     bl_label = "ManipulatorType"
79     def draw(self, context):
80         layout = self.layout
81         layout.operator_context = 'INVOKE_REGION_WIN'
82
83
84
85         prop = layout.operator("view3d.enable_manipulator",text ='Translate', icon='MAN_TRANS')
86         prop.translate = True
87
88         prop = layout.operator("view3d.enable_manipulator",text ='Rotate', icon='MAN_ROT')
89         prop.rotate = True
90
91         prop = layout.operator("view3d.enable_manipulator",text ='Scale', icon='MAN_SCALE')
92         prop.scale = True
93         layout.separator()
94
95         prop = layout.operator("view3d.enable_manipulator",text ='Combo', icon='MAN_SCALE')
96         prop.scale = True
97         prop.rotate = True
98         prop.translate = True
99
100         layout.separator()
101         if not bpy.context.space_data.manipulator:
102             bpy.context.space_data.manipulator = True
103         layout.operator("view3d.disable_manipulator",text ='Disable', icon='MANIPUL')
104         layout.separator()
105
106
107             
108 def register():
109     bpy.types.register(VIEW3D_OT_disable_manipulator)
110     bpy.types.register(VIEW3D_MT_ManipulatorMenu)
111     km = bpy.context.manager.active_keyconfig.keymaps['3D View']
112     for kmi in km.items:
113         if kmi.idname == 'wm.context_toggle':
114             if kmi.ctrl and not kmi.shift and not kmi.alt and kmi.value =="PRESS":
115                 if kmi.type =="SPACE":
116                     km.remove_item(kmi)
117                     break
118     kmi = km.items.add('wm.call_menu', 'SPACE', 'PRESS' , ctrl=True)
119     kmi.properties.name = "VIEW3D_MT_ManipulatorMenu"
120
121
122 def unregister():
123     bpy.types.unregister(VIEW3D_OT_disable_manipulator)
124     bpy.types.unregister(VIEW3D_MT_ManipulatorMenu)
125     for kmi in km.items:
126         if kmi.idname == 'wm.call_menu':
127             if kmi.properties.name == "VIEW3D_MT_ManipulatorMenu":
128                 km.remove_item(kmi)
129                 break
130
131 if __name__ == "__main__":
132     register()