1 # ##### BEGIN GPL LICENSE BLOCK #####
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # ##### END GPL LICENSE BLOCK #####
25 def _km_expand_from_toolsystem(space_type, context_mode):
27 from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
28 for cls in ToolSelectPanelHelper.__subclasses__():
29 if cls.bl_space_type == space_type:
30 return cls.keymap_ui_hierarchy(context_mode)
31 raise Exception("keymap not found")
35 def _km_hierarchy_iter_recursive(items):
40 yield (*sub[:3], list(_km_hierarchy_iter_recursive(sub[3])))
44 return list(_km_hierarchy_iter_recursive(_km_hierarchy))
47 # bpy.type.KeyMap: (km.name, km.space_type, km.region_type, [...])
49 # ('Script', 'EMPTY', 'WINDOW', []),
52 # Access via 'km_hierarchy'.
54 ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit
55 ('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot
56 ('Screen Editing', 'EMPTY', 'WINDOW', []), # re-sizing, action corners
57 ('Header', 'EMPTY', 'WINDOW', []), # header stuff (per region)
60 ('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region)
61 ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation
63 ('User Interface', 'EMPTY', 'WINDOW', []),
65 ('3D View', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform)
66 ('Object Mode', 'EMPTY', 'WINDOW', [
67 _km_expand_from_toolsystem('VIEW_3D', 'OBJECT'),
69 ('Mesh', 'EMPTY', 'WINDOW', [
70 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_MESH'),
72 ('Curve', 'EMPTY', 'WINDOW', [
73 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_CURVE'),
75 ('Armature', 'EMPTY', 'WINDOW', [
76 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_ARMATURE'),
78 ('Metaball', 'EMPTY', 'WINDOW', [
79 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_METABALL'),
81 ('Lattice', 'EMPTY', 'WINDOW', [
82 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_LATTICE'),
84 ('Font', 'EMPTY', 'WINDOW', [
85 _km_expand_from_toolsystem('VIEW_3D', 'EDIT_TEXT'),
88 ('Pose', 'EMPTY', 'WINDOW', [
89 _km_expand_from_toolsystem('VIEW_3D', 'POSE'),
92 ('Vertex Paint', 'EMPTY', 'WINDOW', [
93 _km_expand_from_toolsystem('VIEW_3D', 'PAINT_VERTEX'),
95 ('Weight Paint', 'EMPTY', 'WINDOW', [
96 _km_expand_from_toolsystem('VIEW_3D', 'PAINT_WEIGHT'),
98 ('Weight Paint Vertex Selection', 'EMPTY', 'WINDOW', []),
99 ('Face Mask', 'EMPTY', 'WINDOW', []),
101 ('Image Paint', 'EMPTY', 'WINDOW', [
102 _km_expand_from_toolsystem('VIEW_3D', 'PAINT_TEXTURE'),
104 ('Sculpt', 'EMPTY', 'WINDOW', [
105 _km_expand_from_toolsystem('VIEW_3D', 'SCULPT'),
108 ('Particle', 'EMPTY', 'WINDOW', [
109 _km_expand_from_toolsystem('VIEW_3D', 'PARTICLE'),
112 ('Knife Tool Modal Map', 'EMPTY', 'WINDOW', []),
113 ('Custom Normals Modal Map', 'EMPTY', 'WINDOW', []),
114 ('Bevel Modal Map', 'EMPTY', 'WINDOW', []),
115 ('Paint Stroke Modal', 'EMPTY', 'WINDOW', []),
116 ('Paint Curve', 'EMPTY', 'WINDOW', []),
118 ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change
120 ('View3D Walk Modal', 'EMPTY', 'WINDOW', []),
121 ('View3D Fly Modal', 'EMPTY', 'WINDOW', []),
122 ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []),
123 ('View3D Move Modal', 'EMPTY', 'WINDOW', []),
124 ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []),
125 ('View3D Dolly Modal', 'EMPTY', 'WINDOW', []),
127 # toolbar and properties
128 ('3D View Generic', 'VIEW_3D', 'WINDOW', [
129 _km_expand_from_toolsystem('VIEW_3D', None),
133 ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [
134 ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []),
136 ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', [
137 ('Dopesheet Generic', 'DOPESHEET_EDITOR', 'WINDOW', []),
139 ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [
140 ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []),
141 ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []),
143 ('Timeline', 'TIMELINE', 'WINDOW', []),
145 ('Image', 'IMAGE_EDITOR', 'WINDOW', [
146 ('UV Editor', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image)
147 ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d
148 ('UV Sculpt', 'EMPTY', 'WINDOW', []),
149 ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', [
150 _km_expand_from_toolsystem('IMAGE_EDITOR', None),
154 ('Outliner', 'OUTLINER', 'WINDOW', []),
156 ('Node Editor', 'NODE_EDITOR', 'WINDOW', [
157 ('Node Generic', 'NODE_EDITOR', 'WINDOW', []),
159 ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', [
160 ('SequencerCommon', 'SEQUENCE_EDITOR', 'WINDOW', []),
161 ('SequencerPreview', 'SEQUENCE_EDITOR', 'WINDOW', []),
164 ('File Browser', 'FILE_BROWSER', 'WINDOW', [
165 ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []),
166 ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []),
169 ('Info', 'INFO', 'WINDOW', []),
171 ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu
173 ('Text', 'TEXT_EDITOR', 'WINDOW', [
174 ('Text Generic', 'TEXT_EDITOR', 'WINDOW', []),
176 ('Console', 'CONSOLE', 'WINDOW', []),
177 ('Clip', 'CLIP_EDITOR', 'WINDOW', [
178 ('Clip Editor', 'CLIP_EDITOR', 'WINDOW', []),
179 ('Clip Graph Editor', 'CLIP_EDITOR', 'WINDOW', []),
180 ('Clip Dopesheet Editor', 'CLIP_EDITOR', 'WINDOW', []),
183 ('Grease Pencil', 'EMPTY', 'WINDOW', [ # grease pencil stuff (per region)
184 ('Grease Pencil Stroke Edit Mode', 'EMPTY', 'WINDOW', []),
185 ('Grease Pencil Stroke Paint (Draw brush)', 'EMPTY', 'WINDOW', []),
186 ('Grease Pencil Stroke Paint (Fill)', 'EMPTY', 'WINDOW', []),
187 ('Grease Pencil Stroke Paint (Erase)', 'EMPTY', 'WINDOW', []),
188 ('Grease Pencil Stroke Paint Mode', 'EMPTY', 'WINDOW', []),
189 ('Grease Pencil Stroke Sculpt Mode', 'EMPTY', 'WINDOW', []),
190 ('Grease Pencil Stroke Weight Mode', 'EMPTY', 'WINDOW', []),
192 ('Mask Editing', 'EMPTY', 'WINDOW', []),
193 ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region)
194 ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region)
195 ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region)
196 ('Animation Channels', 'EMPTY', 'WINDOW', []),
198 ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []),
199 ('Gesture Straight Line', 'EMPTY', 'WINDOW', []),
200 ('Gesture Zoom Border', 'EMPTY', 'WINDOW', []),
201 ('Gesture Box', 'EMPTY', 'WINDOW', []),
203 ('Standard Modal Map', 'EMPTY', 'WINDOW', []),
204 ('Transform Modal Map', 'EMPTY', 'WINDOW', []),
205 ('Eyedropper Modal Map', 'EMPTY', 'WINDOW', []),
206 ('Eyedropper ColorBand PointSampling Map', 'EMPTY', 'WINDOW', []),