Author: jmorliaguet
Date: Mon Nov  7 20:20:48 2005
New Revision: 29217

Modified:
   z3lab/cpsskins/branches/jmo-perspectives/browser/manager/__init__.py
   z3lab/cpsskins/branches/jmo-perspectives/configure.zcml
   
z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/configure.zcml
   z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/layout.py
   z3lab/cpsskins/branches/jmo-perspectives/thememanager.py
Log:

- intids and the image cache in theme folders are registered as utilities



Modified: z3lab/cpsskins/branches/jmo-perspectives/browser/manager/__init__.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/browser/manager/__init__.py        
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/browser/manager/__init__.py        
Mon Nov  7 20:20:48 2005
@@ -71,9 +71,8 @@
         container[name] = theme
 
         # register the theme as a local utility
-        reg_manager = container.registrationManager
         theme_reg = UtilityRegistration(name, ITheme, theme)
-        reg_manager.addRegistration(theme_reg)
+        container.registrationManager.addRegistration(theme_reg)
         theme_reg.status = ActiveStatus
 
         # Add a page

Modified: z3lab/cpsskins/branches/jmo-perspectives/configure.zcml
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/configure.zcml     (original)
+++ z3lab/cpsskins/branches/jmo-perspectives/configure.zcml     Mon Nov  7 
20:20:48 2005
@@ -24,6 +24,11 @@
 
   </localUtility>
 
+  <subscriber
+      for=".interfaces.IThemeManagement
+           zope.app.container.interfaces.IObjectAddedEvent"
+      handler=".thememanager.added"
+      />
 
   <!-- Image cache -->
 

Modified: 
z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/configure.zcml
==============================================================================
--- 
z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/configure.zcml 
    (original)
+++ 
z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/configure.zcml 
    Mon Nov  7 20:20:48 2005
@@ -12,6 +12,11 @@
       template="../filters/layout/layout_editor.pt"
   />
 
+  <subscriber
+      for=".layout.ILayout zope.app.container.interfaces.IObjectAddedEvent"
+      handler=".layout.added"
+      />
+
   <!-- Style -->
 
   <cpsskins:format

Modified: 
z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/layout.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/layout.py  
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/engines/default/formats/layout.py  
Mon Nov  7 20:20:48 2005
@@ -17,6 +17,8 @@
 """
 __docformat__ = "reStructuredText"
 
+from BTrees.OOBTree import OOBTree
+
 from zope.app.container.btree import BTreeContainer
 from zope.app.container.interfaces import IContainer
 from zope.app.traversing.interfaces import ITraversable
@@ -38,7 +40,10 @@
 class ILayoutType(IInterface):
     """The layout type categorizes layout elements."""
 
-class Layout(Format, BTreeContainer):
+def added(object, event):
+    object._resetFields()
+
+class Layout(BTreeContainer, Format):
     """A layout is used to format layout elements (cells, blocks, etc)
 
     >>> layout = Layout('container')
@@ -69,12 +74,9 @@
 
     __super_setitem = BTreeContainer.__setitem__
 
-    _fields = [] # to be overridden in subclasses
-
     def __init__(self, id=''):
-        BTreeContainer.__init__(self)
-        Format.__init__(self, id=id)
-        self._resetFields()
+        super(Layout, self).__init__()
+        self.id = id
 
     def __repr__(self):
         return "Layout('%s')" % self.id
@@ -100,8 +102,7 @@
             self[k] = ''
 
     def _getAllowedKeys(self):
-        layout_id = self.id
-        return layouts[layout_id].keys()
+        return layouts[self.id].keys()
 
     def factory(self, type='', id=''):
         """Display factory. Return a display element.
@@ -110,6 +111,7 @@
         factory = format_factories[type]
         return apply(factory, (), {'id': id})
 
+# TODO this should not be hardcoded
 layouts = {
     'page': {
         'margin': [],

Modified: z3lab/cpsskins/branches/jmo-perspectives/thememanager.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/thememanager.py    (original)
+++ z3lab/cpsskins/branches/jmo-perspectives/thememanager.py    Mon Nov  7 
20:20:48 2005
@@ -18,14 +18,16 @@
 __docformat__ = "reStructuredText"
 
 from zope.app import zapi
-from zope.app.component.site import SiteManagementFolder
+from zope.app.component.interfaces.registration import ActiveStatus
+from zope.app.component.site import SiteManagementFolder, UtilityRegistration
 from zope.app.intid import IntIds
+from zope.app.intid.interfaces import IIntIds
 from zope.app.traversing.api import getParent
 from zope.component import queryUtility, getUtilitiesFor
 from zope.interface import implements
 
 from caching import ImageCache
-from interfaces import IThemeManagement
+from interfaces import IThemeManagement, IImageCache
 from elements.interfaces import ITheme, IThemeContainer, IThemePage
 from elements.interfaces import IFormattable
 from ontology import isDefault, hasFormat
@@ -39,6 +41,9 @@
 UIDS_NAME = 'uids'
 IMAGE_CACHE_NAME = 'imagecache'
 
+def added(object, event):
+    object.registerUtilities()
+
 class ThemeManagement(SiteManagementFolder):
     """A theme management utility that can contain multiple .
     themes
@@ -58,10 +63,18 @@
 
     def __init__(self):
         super(ThemeManagement, self).__init__()
-        # TODO register as utilities
         self[UIDS_NAME] = IntIds()
         self[IMAGE_CACHE_NAME] = ImageCache()
 
+    def registerUtilities(self):
+        self.registerUtility(IIntIds, UIDS_NAME)
+        self.registerUtility(IImageCache, IMAGE_CACHE_NAME)
+
+    def registerUtility(self, interface, name):
+        reg = UtilityRegistration(name, interface, self[name])
+        self.registrationManager.addRegistration(reg)
+        reg.status = ActiveStatus
+
     def getIdRegistry(self):
         return self[UIDS_NAME]
 
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to