[Bf-blender-cvs] [507156d68d] app-templates: Move AppOverrideState into a helpers submodule
Campbell Barton
noreply at git.blender.org
Wed Mar 22 01:46:19 CET 2017
Commit: 507156d68d0fbb26170e679daf6236a587dea281
Author: Campbell Barton
Date: Wed Mar 22 11:46:07 2017 +1100
Branches: app-templates
https://developer.blender.org/rB507156d68d0fbb26170e679daf6236a587dea281
Move AppOverrideState into a helpers submodule
===================================================================
M release/datafiles/app_templates/101/template/__init__.py
R063 release/scripts/modules/bl_app_override.py release/scripts/modules/bl_app_override/__init__.py
===================================================================
diff --git a/release/datafiles/app_templates/101/template/__init__.py b/release/datafiles/app_templates/101/template/__init__.py
index 8d511809ed..489255aded 100644
--- a/release/datafiles/app_templates/101/template/__init__.py
+++ b/release/datafiles/app_templates/101/template/__init__.py
@@ -21,8 +21,10 @@
import bpy
import bl_app_override
+from bl_app_override.helpers import AppOverrideState
-class AppStateStore(bl_app_override.AppOverrideState):
+
+class AppStateStore(AppOverrideState):
# Just provides data & callbacks for AppOverrideState
__slots__ = ()
diff --git a/release/scripts/modules/bl_app_override.py b/release/scripts/modules/bl_app_override/__init__.py
similarity index 63%
rename from release/scripts/modules/bl_app_override.py
rename to release/scripts/modules/bl_app_override/__init__.py
index 8c274478f6..50c3bfbd79 100644
--- a/release/scripts/modules/bl_app_override.py
+++ b/release/scripts/modules/bl_app_override/__init__.py
@@ -200,146 +200,3 @@ def ui_draw_filter_register(
def ui_draw_filter_unregister(ui_ignore_store):
for (obj, attr, value) in ui_ignore_store:
setattr(obj, attr, value)
-
-
-# -----------------------------------------------------------------------------
-# AppOverrideState
-
-class AppOverrideState:
- """
- Base class for creating a state which can be removed, for overriding.
-
- To instate the overrides call ``setup``, to reverse this call ``teardown``.
-
- - ``class_ignore()`` a function that returns classes from ``bpy.types`` that are to be unregistered.
-
- Return True to ignore.
-
- - ``ui_ignore_operator(id)``
- - ``ui_ignore_property(class_id, prop_id)``
- - ``ui_ignore_menu(id)``
- - ``ui_ignore_label(text)``
-
- - ``addon_paths()`` return a sequence of paths which contain addons.
- - ``addons()`` return a sequence of addon id's to enable.
- """
- # Utility class to encapsulate application state, backup and restore.
- __slots__ = (
- # setup_classes
- "_class_store",
- # setup_ui_ignore
- "_ui_ignore_store",
- # setup_addons
- "_addon_store",
- )
-
- # setup/teardown classes
- class_ignore = None
-
- # setup/teardown ui_ignore
- ui_ignore_operator = None
- ui_ignore_property = None
- ui_ignore_menu = None
- ui_ignore_label = None
-
- addon_paths = None
- addons = None
-
- def __init__(self):
- self._class_store = None
- self._addon_store = None
- self._ui_ignore_store = None
-
- def _setup_classes(self):
- import bpy
- assert(self._class_store is None)
- self._class_store = self.class_ignore()
- from bpy.utils import unregister_class
- for cls in self._class_store:
- unregister_class(cls)
-
- def _teardown_classes(self):
- assert(len(self._class_store) != 0)
-
- from bpy.utils import register_class
- for cls in self._class_store:
- register_class(cls)
- self._class_store = None
-
- def _setup_ui_ignore(self):
- import bl_app_override
-
- self._ui_ignore_store = bl_app_override.ui_draw_filter_register(
- ui_ignore_operator=self.ui_ignore_operator,
- ui_ignore_property=self.ui_ignore_property,
- ui_ignore_menu=self.ui_ignore_menu,
- ui_ignore_label=self.ui_ignore_label,
- )
-
- def _teardown_ui_ignore(self):
- import bl_app_override
- bl_app_override.ui_draw_filter_unregister(
- self._ui_ignore_store
- )
- self._ui_ignore_store = None
-
-
- def _setup_addons(self):
- import sys
- import os
-
- sys_path = []
- if self.addon_paths is not None:
- for path in self.addon_paths():
- if path not in sys.path:
- sys.path.append(path)
-
- import addon_utils
- addons = []
- if self.addons is not None:
- addons.extend(self.addons())
- for addon in addons:
- addon_utils.enable(addon)
-
- self._addon_store = {
- "sys_path": sys_path,
- "addons": addons,
- }
-
- def _teardown_addons(self):
- import sys
-
- sys_path = self._addon_store["sys_path"]
- for path in sys_path:
- # should always succeed, but if not its no problem
- try:
- sys.path.remove(path)
- except:
- pass
-
- addons = self._addon_store["addons"]
- import addon_utils
- for addon in addons:
- addon_utils.disable(addon)
-
- self._addon_store.clear()
- self._addon_store = None
-
- def setup(self):
- if self.class_ignore is not None:
- self._setup_classes()
-
- self._setup_addons()
-
- if any((self.ui_ignore_operator, self.ui_ignore_property, self.ui_ignore_menu, self.ui_ignore_label)):
- self._setup_ui_ignore()
-
- def teardown(self):
- if self._class_store is not None:
- self._teardown_classes()
-
- if self._addon_store is not None:
- self._teardown_addons()
-
- if self._ui_ignore_store is not None:
- self._teardown_ui_ignore()
More information about the Bf-blender-cvs
mailing list