[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57053] trunk/blender/release/scripts/ modules/addon_utils.py: now an addons preference are available when it start,
Campbell Barton
ideasman42 at gmail.com
Mon May 27 18:12:06 CEST 2013
Revision: 57053
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57053
Author: campbellbarton
Date: 2013-05-27 16:12:06 +0000 (Mon, 27 May 2013)
Log Message:
-----------
now an addons preference are available when it start,
this change is made so addons may initialize their own settings.
Modified Paths:
--------------
trunk/blender/release/scripts/modules/addon_utils.py
Modified: trunk/blender/release/scripts/modules/addon_utils.py
===================================================================
--- trunk/blender/release/scripts/modules/addon_utils.py 2013-05-27 15:13:14 UTC (rev 57052)
+++ trunk/blender/release/scripts/modules/addon_utils.py 2013-05-27 16:12:06 UTC (rev 57053)
@@ -219,7 +219,26 @@
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):
"""
Enables an addon by name.
@@ -257,6 +276,11 @@
return None
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
# if it fails par way through.
@@ -271,6 +295,7 @@
mod.__addon_enabled__ = False
except:
handle_error()
+ _addon_remove(module_name)
return None
# 2) try register collected modules
@@ -284,16 +309,10 @@
getattr(mod, "__file__", module_name))
handle_error()
del sys.modules[module_name]
+ _addon_remove(module_name)
return None
# * 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_persistent__ = persistent
@@ -332,13 +351,8 @@
(module_name, "disabled" if mod is None else "loaded"))
# could be in more than once, unlikely but better do this just in case.
- addons = _user_preferences.addons
-
if default_set:
- while module_name in addons:
- addon = addons.get(module_name)
- if addon:
- addons.remove(addon)
+ _addon_remove(module_name)
if _bpy.app.debug_python:
print("\taddon_utils.disable", module_name)
More information about the Bf-blender-cvs
mailing list