diff options
-rw-r--r-- | release/scripts/modules/bpy_extras/keyconfig_utils.py | 37 | ||||
-rw-r--r-- | source/tests/bl_keymap_completeness.py | 32 |
2 files changed, 53 insertions, 16 deletions
diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py index dbff90c2447..29a65965c3f 100644 --- a/release/scripts/modules/bpy_extras/keyconfig_utils.py +++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py @@ -18,6 +18,11 @@ # <pep8 compliant> +# bpy.type.KeyMap: (km.name, km.space_type, km.region_type, [...]) + +# ('Script', 'EMPTY', 'WINDOW', []), + + KM_HIERARCHY = [ ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit ('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot @@ -42,6 +47,7 @@ KM_HIERARCHY = [ ('Vertex Paint', 'EMPTY', 'WINDOW', []), ('Weight Paint', 'EMPTY', 'WINDOW', []), + ('Weight Paint Vertex Selection', 'EMPTY', 'WINDOW', []), ('Face Mask', 'EMPTY', 'WINDOW', []), ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d ('Sculpt', 'EMPTY', 'WINDOW', []), @@ -49,9 +55,12 @@ KM_HIERARCHY = [ ('Armature Sketch', 'EMPTY', 'WINDOW', []), ('Particle', 'EMPTY', 'WINDOW', []), + ('Knife Tool Modal Map', 'EMPTY', 'WINDOW', []), + ('Paint Stroke Modal', 'EMPTY', 'WINDOW', []), + ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change - ('3D View Generic', 'VIEW_3D', 'WINDOW', []) # toolbar and properties + ('3D View Generic', 'VIEW_3D', 'WINDOW', []), # toolbar and properties ]), ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region) @@ -59,53 +68,65 @@ KM_HIERARCHY = [ ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) ('Animation Channels', 'EMPTY', 'WINDOW', []), ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [ - ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []) + ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []), ]), ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', []), ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [ ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []), - ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []) + ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []), ]), ('Image', 'IMAGE_EDITOR', 'WINDOW', [ ('UV Editor', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d ('UV Sculpt', 'EMPTY', 'WINDOW', []), - ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []) + ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []), ]), ('Timeline', 'TIMELINE', 'WINDOW', []), ('Outliner', 'OUTLINER', 'WINDOW', []), ('Node Editor', 'NODE_EDITOR', 'WINDOW', [ - ('Node Generic', 'NODE_EDITOR', 'WINDOW', []) + ('Node Generic', 'NODE_EDITOR', 'WINDOW', []), + ]), + ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', [ + ('SequencerCommon', 'SEQUENCE_EDITOR', 'WINDOW', []), + ('SequencerPreview', 'SEQUENCE_EDITOR', 'WINDOW', []), ]), - ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), ('Logic Editor', 'LOGIC_EDITOR', 'WINDOW', []), ('File Browser', 'FILE_BROWSER', 'WINDOW', [ ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []), - ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []) + ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []), ]), + ('Info', 'INFO', 'WINDOW', []), + ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu - ('Text', 'TEXT_EDITOR', 'WINDOW', []), + ('Text', 'TEXT_EDITOR', 'WINDOW', [ + ('Text Generic', 'TEXT_EDITOR', 'WINDOW', []), + ]), ('Console', 'CONSOLE', 'WINDOW', []), ('Clip', 'CLIP_EDITOR', 'WINDOW', [ ('Clip Editor', 'CLIP_EDITOR', 'WINDOW', []), ('Clip Graph Editor', 'CLIP_EDITOR', 'WINDOW', []), + ('Clip Dopesheet Editor', 'CLIP_EDITOR', 'WINDOW', []), ('Mask Editing', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image ]), ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []), + ('Gesture Straight Line', 'EMPTY', 'WINDOW', []), + ('Gesture Zoom Border', 'EMPTY', 'WINDOW', []), ('Gesture Border', 'EMPTY', 'WINDOW', []), + ('Standard Modal Map', 'EMPTY', 'WINDOW', []), ('Transform Modal Map', 'EMPTY', 'WINDOW', []), ('View3D Fly Modal', 'EMPTY', 'WINDOW', []), ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []), ('View3D Move Modal', 'EMPTY', 'WINDOW', []), ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []), + ('View3D Dolly Modal', 'EMPTY', 'WINDOW', []), ] diff --git a/source/tests/bl_keymap_completeness.py b/source/tests/bl_keymap_completeness.py index d36f2d8e9ae..00322907f69 100644 --- a/source/tests/bl_keymap_completeness.py +++ b/source/tests/bl_keymap_completeness.py @@ -25,40 +25,56 @@ from bpy_extras import keyconfig_utils def check_maps(): - maps = set() + maps = {} def fill_maps(ls): - for entry in ls: - maps.add(entry[0]) - fill_maps(entry[3]) + for km_name, km_space_type, km_region_type, km_sub in ls: + maps[km_name] = (km_space_type, km_region_type) + fill_maps(km_sub) fill_maps(keyconfig_utils.KM_HIERARCHY) import bpy - maps_bl = set(bpy.context.window_manager.keyconfigs.active.keymaps.keys()) + keyconf = bpy.context.window_manager.keyconfigs.active + maps_bl = set(keyconf.keymaps.keys()) + maps_py = set(maps.keys()) err = False # Check keyconfig contains only maps that exist in blender - test = maps - maps_bl + test = maps_py - maps_bl if test: print("Keymaps that are in 'keyconfig_utils' but not blender") for km_id in sorted(test): print("\t%s" % km_id) err = True - test = maps_bl - maps + test = maps_bl - maps_py if test: print("Keymaps that are in blender but not in 'keyconfig_utils'") for km_id in sorted(test): - print("\t%s" % km_id) + km = keyconf.keymaps[km_id] + print(" ('%s', '%s', '%s', [])," % (km_id, km.space_type, km.region_type)) err = True + # Check space/region's are OK + print("Comparing keymap space/region types...") + for km_id, km in keyconf.keymaps.items(): + km_py = maps.get(km_id) + if km_py is not None: + km_space_type, km_region_type = km_py + if km_space_type != km.space_type or km_region_type != km.region_type: + print(" Error:") + print(" expected -- ('%s', '%s', '%s', [])," % (km_id, km.space_type, km.region_type)) + print(" got -- ('%s', '%s', '%s', [])," % (km_id, km_space_type, km_region_type)) + print("done!") + return err def main(): err = check_maps() + import bpy if err and bpy.app.background: # alert CTest we failed import sys |