From eb0310950c9e6dec9ea1da294430ae8fcf98021e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 14 Jun 2015 22:19:26 +1000 Subject: 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. --- release/scripts/modules/addon_utils.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'release/scripts') 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__) -- cgit v1.2.3