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