dabo Commit
Revision 7255
Date: 2012-09-24 12:25:35 -0700 (Mon, 24 Sep 2012)
Author: Paul
Trac: http://trac.dabodev.com/changeset/7255

Changed:
U   trunk/dabo/lib/reportWriter.py

Log:
Spanning lines and rectangles weren't printing correctly on any but the 
first column. Fixed.


Diff:
Modified: trunk/dabo/lib/reportWriter.py
===================================================================
--- trunk/dabo/lib/reportWriter.py      2012-09-22 21:01:03 UTC (rev 7254)
+++ trunk/dabo/lib/reportWriter.py      2012-09-24 19:25:35 UTC (rev 7255)
@@ -2099,10 +2099,17 @@
 
                pageSize = self.getPageSize()
                pageWidth, pageHeight = pageSize
+               self._pageWidth = pageWidth
                self._pageNumber = 0
                self._pageCount = 0
                self.page_count_objects = {}
 
+               _page = _form["Page"]
+               self._ml = self.getPt(_page.getProp("MarginLeft"))
+               self._mt = self.getPt(_page.getProp("MarginTop"))
+               self._mr = self.getPt(_page.getProp("MarginRight"))
+               self._mb = self.getPt(_page.getProp("MarginBottom"))
+
                c = self.Canvas
                if not c:
                        # Create the reportlab canvas:
@@ -2114,8 +2121,10 @@
                c.setTitle(_form.getProp("Title"))
 
                # Get the number of columns:
-               columnCount = _form.getProp("columnCount")
-               columnPadding = self.getPt(_form.getProp("columnPadding")) * 
(columnCount - 1)
+               columnCount = self._columnCount = _form.getProp("columnCount")
+               columnPadding = self._columnPadding = 
self.getPt(_form.getProp("columnPadding")) * (columnCount - 1)
+               columnWidth = self._columnWidth = \
+                               ((self._pageWidth - self._ml - self._mr) / 
self._columnCount) - (.5 * self._columnPadding)
 
                # Initialize the groups list:
                groups = _form.get("groups", ())
@@ -2182,11 +2191,10 @@
                        _form = self.ReportForm
                        page = _form["Page"]
 
-                       # Get the page margins into variables:
-                       ml = self.getPt(page.getProp("MarginLeft"))
-                       mt = self.getPt(page.getProp("MarginTop"))
-                       mr = self.getPt(page.getProp("MarginRight"))
-                       mb = self.getPt(page.getProp("MarginBottom"))
+                       ml = self._ml
+                       mt = self._mt
+                       mr = self._mr
+                       mb = self._mb
 
                        # Page header/footer origins are needed in various 
places:
                        if band.lower() != "pageheader" and 
_form["PageHeader"].getProp("ColumnBreakAfter"):
@@ -2196,9 +2204,6 @@
                                                - 
self.getPt(_form["PageHeader"].getProp("Height")))
                        pageFooterOrigin = (ml, mb)
 
-                       workingPageWidth = pageWidth - ml - mr
-                       columnWidth = (workingPageWidth / columnCount) - (.5 * 
columnPadding)
-
                        if y is None:
                                y = pageHeaderOrigin[1]
 
@@ -2301,8 +2306,9 @@
                                if y < check or maxBandHeight is None:
                                        # Move to the next page or column
                                        headers_reprinted = False
-                                       if self._currentColumn >= columnCount-1:
-                                               if self.RecordNumber <= 
len(self.Cursor):
+                                       if self.RecordNumber <= 
len(self.Cursor):
+                                               headers_reprinted = False
+                                               if self._currentColumn >= 
columnCount-1:
                                                        # Move to next page
                                                        self.being_deferred = 
True
                                                        endPage()
@@ -2310,12 +2316,13 @@
                                                        beginPage()
                                                        y = pageHeaderOrigin[1]
                                                        y = 
reprintGroupHeaders(group, bandDict, y)
-                                               headers_reprinted = True
-                                       else:
-                                               # Move to next column
-                                               
self.drawSpanningObjects((pageFooterOrigin[0],y))
-                                               self._currentColumn += 1
-                                               y = pageHeaderOrigin[1]
+                                               else:
+                                                       # Move to next column
+                                                       
self.drawSpanningObjects((pageFooterOrigin[0],y))
+                                                       
self.clearSpanningObjects(group)
+                                                       self._currentColumn += 1
+                                                       y = pageHeaderOrigin[1]
+                                                       y = 
reprintGroupHeaders(group, bandDict, y)
 
                                        # We must call again, because it 
recomputes available height:
                                        maxBandHeight = getTotalBandHeight()
@@ -2349,7 +2356,7 @@
                                x,y = 0,1
                                width, height = pageWidth-1, pageHeight-1
 
-                       x = ml + (self._currentColumn * (columnWidth + 
columnPadding))
+                       x = ml + (self._currentColumn * (self._columnWidth + 
self._columnPadding))
 
                        self.ReportForm.Bands[band]["x"] = x
                        self.ReportForm.Bands[band]["y"] = y
@@ -2516,10 +2523,10 @@
                        bandDict = group[band]
                        x = 
bandDict.getPt(bandDict.ReportForm["Page"].getProp("MarginLeft"))
                        objects = bandDict.get("Objects", [])
-                       for object in objects:
-                               if object.__class__.__name__ in 
("SpanningLine", "SpanningRectangle"):
-                                       x1 = object.getPt(object.getProp("x")) 
+ x
-                                       self.storeSpanningObject(object, (x1, 
y), group)
+                       for obj in objects:
+                               if obj.__class__.__name__ in ("SpanningLine", 
"SpanningRectangle"):
+                                       x1 = obj.getPt(obj.getProp("x")) + x
+                                       self.storeSpanningObject(obj, (x1, y), 
group)
                        return y
 
 



_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to