[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