dabo Commit
Revision 5630
Date: 2010-02-03 11:05:00 -0800 (Wed, 03 Feb 2010)
Author: Paul
Trac: http://trac.dabodev.com/changeset/5630

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

Log:
Fixed problem with copy/paste introduced yesterday: parent doesn't always
apply.

Enhanced copy/paste to resize the pasted-into band if possible to 
show the newly-pasted object.

Added reportWriter.Drawable.getTopPt() method to support this enhancement. 
 


Diff:
Modified: trunk/dabo/lib/reportWriter.py
===================================================================
--- trunk/dabo/lib/reportWriter.py      2010-02-03 17:03:02 UTC (rev 5629)
+++ trunk/dabo/lib/reportWriter.py      2010-02-03 19:05:00 UTC (rev 5630)
@@ -397,6 +397,19 @@
                self.MajorProperty = "x"
 
 
+       def getTopPt(self):
+               """Return the top pt of the object. Convenient as y can 
designate the
+               top, bottom, or middle of the object, depending on the vAnchor 
setting."""
+               ret = self.getPt(self.getProp("y"))
+               vAnchor = self.getProp("vAnchor").lower()
+               height = self.getPt(self.getProp("height"))
+               if vAnchor == "bottom":
+                       ret += height
+               if vAnchor == "middle":
+                       ret += (height / Decimal("2"))
+               return ret
+
+
 class Report(ReportObject):
        """Represents the report."""
 

Modified: trunk/ide/ReportDesigner.py
===================================================================
--- trunk/ide/ReportDesigner.py 2010-02-03 17:03:02 UTC (rev 5629)
+++ trunk/ide/ReportDesigner.py 2010-02-03 19:05:00 UTC (rev 5630)
@@ -437,11 +437,16 @@
                                        return objs
 
                                def getReportObjectFromMemento(self, memento, 
parent=None):
-                                       parentInfo = 
memento.pop("_parentBandInfo_")
-                                       if "Group" in parentInfo[0]:
-                                               parent = 
rdc.getGroupBandByExpr(parentInfo[1])[parentInfo[0]]
-                                       else:
-                                               parent = 
rdc.ReportForm[parentInfo[0]]
+                                       try:
+                                               parentInfo = 
memento.pop("_parentBandInfo_")
+                                       except KeyError:
+                                               parentInfo = None
+
+                                       if parentInfo:
+                                               if "Group" in parentInfo[0]:
+                                                       parent = 
rdc.getGroupBandByExpr(parentInfo[1])[parentInfo[0]]
+                                               else:
+                                                       parent = 
rdc.ReportForm[parentInfo[0]]
                                        obj = 
rw._getReportObject(memento["type"], parent)
                                        del(memento["type"])
                                        for k, v in memento.items():
@@ -560,6 +565,7 @@
 
                        reInit = False
                        selectedObjects = []
+                       max_y_needed = 0  # resize band if needed to show any 
objects
                        for obj in objs:
                                if isinstance(obj, Variable):
                                        # paste into Variables whether or not 
Variables selected
@@ -572,6 +578,7 @@
                                        reInit = True
                                else:
                                        if selBand is not None:
+                                               max_y_needed = 
max(max_y_needed, obj.getTopPt())
                                                pfObjects = 
selBand.setdefault("Objects", [])
                                                obj.parent = selBand
                                        else:
@@ -579,6 +586,10 @@
                                pfObjects.append(obj)
                                selectedObjects.append(obj)
 
+                       if selBand and selBand.getProp("Height") is not None:
+                               # Resize the pasted-into band to accomodate the 
new object, if necessary:
+                               selBand.setProp("Height", 
str(max(selBand.getProp("Height"), max_y_needed)))
+                       
                        self.ActiveEditor.propsChanged(reinit=reInit)
                        self.SelectedObjects = selectedObjects
 



_______________________________________________
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