[Bf-blender-cvs] [c3634afe47] app-templates: Add support for a template addons directory
Campbell Barton
noreply at git.blender.org
Mon Mar 20 04:19:25 CET 2017
Commit: c3634afe4777a02febc1a6f2c1b4fcf4e71e4ea7
Author: Campbell Barton
Date: Mon Mar 20 14:24:57 2017 +1100
Branches: app-templates
https://developer.blender.org/rBc3634afe4777a02febc1a6f2c1b4fcf4e71e4ea7
Add support for a template addons directory
===================================================================
M release/datafiles/app_templates/101/template/__init__.py
===================================================================
diff --git a/release/datafiles/app_templates/101/template/__init__.py b/release/datafiles/app_templates/101/template/__init__.py
index 901d21cfc8..1a697d840f 100644
--- a/release/datafiles/app_templates/101/template/__init__.py
+++ b/release/datafiles/app_templates/101/template/__init__.py
@@ -26,14 +26,21 @@ class AppStateStore:
# Utility class to encapsulate application state, backup and restore.
__slots__ = (
"class_store",
+ "sys_path",
+ )
+
+ _template_addons = (
)
def __init__(self):
self.class_store = []
+ self.sys_path = []
- def backup(self):
+ def setup_classes(self):
assert(len(self.class_store) == 0)
+ # Classes
+
self.class_store.extend(
bl_app_override.class_filter(
bpy.types.Panel,
@@ -53,7 +60,7 @@ class AppStateStore:
for cls in self.class_store:
unregister(cls)
- def restore(self):
+ def teardown_classes(self):
assert(len(self.class_store) != 0)
register = bpy.utils.register_class
@@ -61,6 +68,32 @@ class AppStateStore:
register(cls)
self.class_store.clear()
+ def setup_addons(self):
+ import sys
+ import os
+ template_addons = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "addons"))
+ if template_addons not in sys.path:
+ sys.path.append(template_addons)
+ self.sys_path.append(template_addons)
+
+ import addon_utils
+ for addon in self._template_addons:
+ addon_utils.enable(addon)
+
+ def teardown_addons(self):
+ import sys
+ for path in self.sys_path:
+ # should always succeed, but if not its no problem
+ try:
+ sys.path.remove(path)
+ except:
+ pass
+ self.sys_path.clear()
+
+ import addon_utils
+ for addon in self._template_addons:
+ addon_utils.disable(addon)
+
app_state = AppStateStore()
@@ -68,7 +101,8 @@ from . import ui
def register():
print("Template Register", __file__)
- app_state.backup()
+ app_state.setup_classes()
+ app_state.setup_addons()
ui.register()
@@ -77,4 +111,5 @@ def unregister():
ui.unregister()
- app_state.restore()
+ app_state.teardown_classes()
+ app_state.teardown_addons()
More information about the Bf-blender-cvs
mailing list