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

Reply via email to