diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-06-14 15:19:26 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-06-14 15:26:42 +0300 |
commit | eb0310950c9e6dec9ea1da294430ae8fcf98021e (patch) | |
tree | fe8b394e3730a020227afba01fa39d406cfd8e08 /release/scripts/modules/addon_utils.py | |
parent | 18629918622c1acfb4cc69176c98df2e13589c00 (diff) |
Fix error enabling an already enabled addon
Would run register() twice causing warning with `register_module()`
which expects new classes to be defined.
Now run unregister() before re-registering.
Diffstat (limited to 'release/scripts/modules/addon_utils.py')
-rw-r--r-- | release/scripts/modules/addon_utils.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index 4168f0a1f92..e14b25b1e65 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -278,6 +278,20 @@ def enable(module_name, default_set=False, persistent=False, handle_error=None): mod = sys.modules.get(module_name) # chances of the file _not_ existing are low, but it could be removed if mod and os.path.exists(mod.__file__): + + if getattr(mod, "__addon_enabled__", False): + # This is an unlikely situation, + # re-register if the module is enabled. + # Note: the UI doesn't allow this to happen, + # in most cases the caller should 'check()' first. + try: + mod.unregister() + except: + print("Exception in module unregister(): %r" % + getattr(mod, "__file__", module_name)) + handle_error() + return None + mod.__addon_enabled__ = False mtime_orig = getattr(mod, "__time__", 0) mtime_new = os.path.getmtime(mod.__file__) |