diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-06-11 19:11:55 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-06-11 19:11:55 +0400 |
commit | c8f30bc7f09ae0b2df947c18972601f8e3c821e7 (patch) | |
tree | 3ba2d6eb1d5129abecbd59d5b70f6a3300b2dbb6 /release/scripts/modules | |
parent | e895e2e0d125d393ca81850d551e139a7070429f (diff) |
fix [#35574] Export Key Map issue
problem was the keymap failed to import but didnt give any feedback, now it displays error message.
Diffstat (limited to 'release/scripts/modules')
-rw-r--r-- | release/scripts/modules/bpy/utils.py | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index b78105dedb5..ec3891e8d76 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -482,8 +482,9 @@ def preset_find(name, preset_path, display_name=False, ext=".py"): return filepath -def keyconfig_set(filepath): +def keyconfig_set(filepath, report=None): from os.path import basename, splitext + from itertools import chain if _bpy.app.debug_python: print("loading preset:", filepath) @@ -496,25 +497,36 @@ def keyconfig_set(filepath): keyfile = open(filepath) exec(compile(keyfile.read(), filepath, "exec"), {"__file__": filepath}) keyfile.close() + error_msg = "" except: import traceback - traceback.print_exc() - - kc_new = [kc for kc in keyconfigs if kc not in keyconfigs_old][0] - - kc_new.name = "" - - # remove duplicates - name = splitext(basename(filepath))[0] - while True: - kc_dupe = keyconfigs.get(name) - if kc_dupe: - keyconfigs.remove(kc_dupe) - else: - break - - kc_new.name = name - keyconfigs.active = kc_new + error_msg = traceback.format_exc() + + if error_msg: + if report is not None: + report({'ERROR'}, error_msg) + print(error_msg) + + kc_new = next(chain(iter(kc for kc in keyconfigs if kc not in keyconfigs_old), (None,))) + if kc_new is None: + if report is not None: + report({'ERROR'}, "Failed to load keymap %r" % filepath) + return False + else: + kc_new.name = "" + + # remove duplicates + name = splitext(basename(filepath))[0] + while True: + kc_dupe = keyconfigs.get(name) + if kc_dupe: + keyconfigs.remove(kc_dupe) + else: + break + + kc_new.name = name + keyconfigs.active = kc_new + return True def user_resource(resource_type, path="", create=False): |