now an addons preference are available when it start,
this change is made so addons may initialize their own settings.
This commit is contained in:
@@ -219,6 +219,25 @@ def check(module_name):
|
|||||||
|
|
||||||
return loaded_default, loaded_state
|
return loaded_default, loaded_state
|
||||||
|
|
||||||
|
# utility functions
|
||||||
|
|
||||||
|
|
||||||
|
def _addon_ensure(module_name):
|
||||||
|
addons = _user_preferences.addons
|
||||||
|
addon = _user_preferences.addons.get(module_name)
|
||||||
|
if not addon:
|
||||||
|
addon = _user_preferences.addons.new()
|
||||||
|
addon.module = module_name
|
||||||
|
|
||||||
|
|
||||||
|
def _addon_remove(module_name):
|
||||||
|
addons = _user_preferences.addons
|
||||||
|
|
||||||
|
while module_name in addons:
|
||||||
|
addon = addons.get(module_name)
|
||||||
|
if addon:
|
||||||
|
addons.remove(addon)
|
||||||
|
|
||||||
|
|
||||||
def enable(module_name, default_set=True, persistent=False):
|
def enable(module_name, default_set=True, persistent=False):
|
||||||
"""
|
"""
|
||||||
@@ -257,6 +276,11 @@ def enable(module_name, default_set=True, persistent=False):
|
|||||||
return None
|
return None
|
||||||
mod.__addon_enabled__ = False
|
mod.__addon_enabled__ = False
|
||||||
|
|
||||||
|
# add the addon first it may want to initialize its own preferences.
|
||||||
|
# must remove on fail through.
|
||||||
|
if default_set:
|
||||||
|
_addon_ensure(module_name)
|
||||||
|
|
||||||
# Split registering up into 3 steps so we can undo
|
# Split registering up into 3 steps so we can undo
|
||||||
# if it fails par way through.
|
# if it fails par way through.
|
||||||
|
|
||||||
@@ -271,6 +295,7 @@ def enable(module_name, default_set=True, persistent=False):
|
|||||||
mod.__addon_enabled__ = False
|
mod.__addon_enabled__ = False
|
||||||
except:
|
except:
|
||||||
handle_error()
|
handle_error()
|
||||||
|
_addon_remove(module_name)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# 2) try register collected modules
|
# 2) try register collected modules
|
||||||
@@ -284,16 +309,10 @@ def enable(module_name, default_set=True, persistent=False):
|
|||||||
getattr(mod, "__file__", module_name))
|
getattr(mod, "__file__", module_name))
|
||||||
handle_error()
|
handle_error()
|
||||||
del sys.modules[module_name]
|
del sys.modules[module_name]
|
||||||
|
_addon_remove(module_name)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# * OK loaded successfully! *
|
# * OK loaded successfully! *
|
||||||
if default_set:
|
|
||||||
# just in case its enabled already
|
|
||||||
ext = _user_preferences.addons.get(module_name)
|
|
||||||
if not ext:
|
|
||||||
ext = _user_preferences.addons.new()
|
|
||||||
ext.module = module_name
|
|
||||||
|
|
||||||
mod.__addon_enabled__ = True
|
mod.__addon_enabled__ = True
|
||||||
mod.__addon_persistent__ = persistent
|
mod.__addon_persistent__ = persistent
|
||||||
|
|
||||||
@@ -332,13 +351,8 @@ def disable(module_name, default_set=True):
|
|||||||
(module_name, "disabled" if mod is None else "loaded"))
|
(module_name, "disabled" if mod is None else "loaded"))
|
||||||
|
|
||||||
# could be in more than once, unlikely but better do this just in case.
|
# could be in more than once, unlikely but better do this just in case.
|
||||||
addons = _user_preferences.addons
|
|
||||||
|
|
||||||
if default_set:
|
if default_set:
|
||||||
while module_name in addons:
|
_addon_remove(module_name)
|
||||||
addon = addons.get(module_name)
|
|
||||||
if addon:
|
|
||||||
addons.remove(addon)
|
|
||||||
|
|
||||||
if _bpy.app.debug_python:
|
if _bpy.app.debug_python:
|
||||||
print("\taddon_utils.disable", module_name)
|
print("\taddon_utils.disable", module_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user