diff options
author | Thomas Dinges <blender@dingto.org> | 2013-06-13 12:06:09 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-06-13 12:06:09 +0400 |
commit | 182914873a13485a7b8d7b85884c655fccdefa48 (patch) | |
tree | 078082897c6219e4355de67c1b9b0c84cb08ac05 /release | |
parent | c14a4d9ed9d597043fead48fd43adb22b65bce4e (diff) | |
parent | 8b4bca6cf056e81b0ae0e4854d2bd93d08d3a932 (diff) |
Merged revision(s) 57369-57422 from trunk/blender into soc-2013-dingto.
Skipped r57368 (Wavelength node).
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/modules/bpy/utils.py | 48 | ||||
-rw-r--r-- | release/scripts/startup/bl_operators/wm.py | 14 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_info.py | 5 |
3 files changed, 40 insertions, 27 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): diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index a2a8c991259..9cd9131ec4b 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1199,9 +1199,10 @@ class WM_OT_keyconfig_activate(Operator): ) def execute(self, context): - bpy.utils.keyconfig_set(self.filepath) - return {'FINISHED'} - + if bpy.utils.keyconfig_set(self.filepath, report=self.report): + return {'FINISHED'} + else: + return {'CANCELLED'} class WM_OT_appconfig_default(Operator): bl_idname = "wm.appconfig_default" @@ -1386,9 +1387,10 @@ class WM_OT_keyconfig_import(Operator): return {'CANCELLED'} # sneaky way to check we're actually running the code. - bpy.utils.keyconfig_set(path) - - return {'FINISHED'} + if bpy.utils.keyconfig_set(path, report=self.report): + return {'FINISHED'} + else: + return {'CANCELLED'} def invoke(self, context, event): wm = context.window_manager diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index 7487aaf420d..5d476c01b08 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -67,14 +67,13 @@ class INFO_HT_header(Header): if bpy.app.autoexec_fail is True and bpy.app.autoexec_fail_quiet is False: layout.operator_context = 'EXEC_DEFAULT' - row.label("Script failed to auto-run", icon='ERROR') + row.label("Auto-run disabled: %s" % bpy.app.autoexec_fail_message, icon='ERROR') if bpy.data.is_saved: props = row.operator("wm.open_mainfile", icon='SCREEN_BACK', text="Reload Trusted") props.filepath = bpy.data.filepath props.use_scripts = True - row.operator("script.autoexec_warn_clear", icon='CANCEL') - row.label("Skipping: (%s)" % bpy.app.autoexec_fail_message) + row.operator("script.autoexec_warn_clear", text="Ignore") return row.operator("wm.splash", text="", icon='BLENDER', emboss=False) |