Author: jmorliaguet Date: Fri Jun 23 21:20:00 2006 New Revision: 3500 Modified: cpsskins/branches/paris-sprint-2006/setup/io/migration.py cpsskins/branches/paris-sprint-2006/standard/formats/layout.py
Log: - set pageblock and cell layout (width, height) Modified: cpsskins/branches/paris-sprint-2006/setup/io/migration.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/io/migration.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/io/migration.py Fri Jun 23 21:20:00 2006 @@ -21,6 +21,7 @@ from zope.app.container.interfaces import INameChooser from zope.component import getUtility, createObject +from cpsskins.elements.interfaces import IFormattable from cpsskins.setup.archives import TarArchive from cpsskins.setup.interfaces import IResourceManager from cpsskins.standard.fields.image import WebImage @@ -81,15 +82,42 @@ # first stage: import themes > pages > page blocks self.importObject(theme_node, theme, 'themes/%s' % theme_name) - # second stage: create cells in pageblocks + # second stage: create cells inside pageblocks for pageblock_info in self.objects['Page Block']: pageblock_node = pageblock_info['node'] - props = self.getProperties(pageblock_node, 'maxcols') + pageblock_path = pageblock_info['path'] + props = self.getProperties(pageblock_node, 'maxcols', 'width', + 'height') container = pageblock_info['object'] cells = {} + + # set pageblock width + pageblock = pageblock_info['object'] + IFormattable(pageblock).getFormat('layout').update({ + 'width': props['width'], + 'height': props['height'], + }) + + # add cells for c in range(int(props['maxcols'])): cells[c] = self.addObject('cpsskins.canvas.cell', container) + # set cell size + for sizer_name in self.getObjects(pageblock_node, (u'Cell Sizer',)): + sizer_path = '%s/%s.xml' % (pageblock_path, sizer_name) + sizer_doc = parseString(archive[sizer_path]) + sizer_node = sizer_doc.childNodes[0] + sizer_props = self.getProperties(sizer_node, 'cellwidth', + 'xpos') + xpos = int(sizer_props['xpos']) + # the sizer is outside the screen + if xpos >= len(cells): + continue + cell = cells[xpos] + IFormattable(cell).getFormat('layout').update({ + 'width': sizer_props['cellwidth'], + }) + # add slots into cells for slot_name in self.getObjects(pageblock_node, (u'Portal Box Group Templet',)): @@ -102,9 +130,9 @@ slot_props['name'] = slot_props['box_group'] del slot_props['xpos'] del slot_props['box_group'] - print slot_props self.addObject('cpsskins.canvas.slot', cells[xpos], slot_props) + def addObject(self, type, container, props=None, name=u''): if props is None: props = {} Modified: cpsskins/branches/paris-sprint-2006/standard/formats/layout.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/formats/layout.py (original) +++ cpsskins/branches/paris-sprint-2006/standard/formats/layout.py Fri Jun 23 21:20:00 2006 @@ -86,5 +86,9 @@ def items(self): return self.data.items() + def update(self, items): + for k in items: + self[k] = items[k] + has_key = __contains__ -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins