[Bf-blender-cvs] [266e7a9] ui-preview-buttons: Hide app and BPyPreviews classes from utils namespace.
Bastien Montagne
noreply at git.blender.org
Tue Apr 28 12:33:16 CEST 2015
Commit: 266e7a97ba88b967c01b85ef8da24adcbaf77ec6
Author: Bastien Montagne
Date: Tue Apr 28 12:31:24 2015 +0200
Branches: ui-preview-buttons
https://developer.blender.org/rB266e7a97ba88b967c01b85ef8da24adcbaf77ec6
Hide app and BPyPreviews classes from utils namespace.
__all__ is rather useless in the end... Chose a bit of a convoluted way to do it,
maybe using hidden '_'-prefixed names would be better/simpler?
===================================================================
M release/scripts/modules/bpy/utils.py
===================================================================
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py
index ff854ed..c8f94f1 100644
--- a/release/scripts/modules/bpy/utils.py
+++ b/release/scripts/modules/bpy/utils.py
@@ -52,7 +52,6 @@ __all__ = (
)
from _bpy import (
- app,
escape_identifier,
register_class,
unregister_class,
@@ -702,54 +701,11 @@ def make_rna_paths(struct_name, prop_name, enum_name):
# High-level previews manager.
-class BPyPreviewsManager:
- """
- High-level 'cached' previews manager.
-
- This allows addons to generate their own previews, and use them as icons in UI widgets
- ('icon_value' of UILayout functions).
- """
- __slots__ = ('_previews_collections',)
-
- def __init__(self):
- self._previews_collections = {}
-
- def __del__(self):
- self.clear()
-
- def new(self, name):
- """
- Return a new preview collection, or existing one if 'name' already exists.
- """
- return self._previews_collections.setdefault(name, BPyPreviewsCollection(name))
-
- def _remove(self, name):
- return self._previews_collections.pop(name, None)
-
- def delete(self, name):
- """
- Delete specified previews collection.
- """
- pcoll = self._remove(name)
- if pcoll is not None:
- del pcoll
-
- def clear(self):
- """
- Delete all previews collections.
- """
- for pcoll in self._previews_collections.values():
- del pcoll
- self._previews_collections.clear()
-
- def __repr__(self):
- return "<module like class 'bpy.utils.previews'>"
-
-
class BPyPreviewsCollection:
"""
Fake dict-like class of previews.
"""
+ from _bpy import app
__slots__ = ('_previews', '_coll_name')
def __init__(self, name):
@@ -763,10 +719,12 @@ class BPyPreviewsCollection:
return self._coll_name + name
def new(self, name):
+ from _bpy import app
return self._previews.setdefault(name, app._previews.new(self._gen_key(name)))
new.__doc__ = app._previews.new.__doc__
def load(self, name, path, path_type, force_reload=False):
+ from _bpy import app
pkey = self._gen_key(name)
if force_reload:
self._previews[name] = p = app._previews.load(pkey, path, path_type, True)
@@ -776,6 +734,7 @@ class BPyPreviewsCollection:
load.__doc__ = app._previews.load.__doc__
def release(self, name):
+ from _bpy import app
p = self._previews.pop(name, None)
if p is not None:
del p
@@ -813,6 +772,7 @@ class BPyPreviewsCollection:
return self._previews.get(key, default)
def clear(self):
+ from _bpy import app
for name in self._previews.keys():
app._previews.release(self._gen_key(name))
self._previews.clear()
@@ -820,4 +780,53 @@ class BPyPreviewsCollection:
# No setdefault(), pop(), popitem(), copy(), nor update()
+class BPyPreviewsManager:
+ """
+ High-level 'cached' previews manager.
+
+ This allows addons to generate their own previews, and use them as icons in UI widgets
+ ('icon_value' of UILayout functions).
+ """
+ __slots__ = ('_previews_collections',)
+
+ _preview_coll_type = BPyPreviewsCollection
+
+ def __init__(self):
+ self._previews_collections = {}
+
+ def __del__(self):
+ self.clear()
+
+ def new(self, name):
+ """
+ Return a new preview collection, or existing one if 'name' already exists.
+ """
+ return self._previews_collections.setdefault(name, self.__class__._preview_coll_type(name))
+
+ def _remove(self, name):
+ return self._previews_collections.pop(name, None)
+
+ def delete(self, name):
+ """
+ Delete specified previews collection.
+ """
+ pcoll = self._remove(name)
+ if pcoll is not None:
+ del pcoll
+
+ def clear(self):
+ """
+ Delete all previews collections.
+ """
+ for pcoll in self._previews_collections.values():
+ del pcoll
+ self._previews_collections.clear()
+
+ def __repr__(self):
+ return "<module like class 'bpy.utils.previews'>"
+
+
previews = BPyPreviewsManager()
+
+# __all__ is not much useful actually :/
+del BPyPreviewsManager, BPyPreviewsCollection
More information about the Bf-blender-cvs
mailing list