daboide Commit
Revision 322
Date: 2006-01-11 10:51:06 -0800 (Wed, 11 Jan 2006)
Author: paul
Changed:
U trunk/ReportDesigner.py
Log:
This follows the changes in report writer.
Diff:
Modified: trunk/ReportDesigner.py
===================================================================
--- trunk/ReportDesigner.py 2006-01-11 16:23:00 UTC (rev 321)
+++ trunk/ReportDesigner.py 2006-01-11 18:51:06 UTC (rev 322)
@@ -26,22 +26,22 @@
def _getDesProps(self):
strType = {"type" : str, "readonly" : False}
- props = self.AvailableProps
+ props = self.Props.PropDefaults.keys()
desProps = {}
for prop in props:
desProps[prop] = strType
return desProps
- def _getAvailableProps(self):
- if hasattr(self, "_availableProps"):
- val = self._availableProps
- else:
- val = self._availableProps = {}
- return val
- AvailableProps = property(_getAvailableProps, None, None,
- _("""Returns a list of properties available for this
object."""))
+ def _getProps(self):
+ return self._props
+ def _setProps(self, val):
+ self._props = val
+
+
+ Props = property(_getProps, _setProps)
+
DesignerProps = property(_getDesProps, None, None,
_("""Returns a dict of editable properties for the control,
with the
prop names as the keys, and the value for each another dict,
@@ -267,7 +267,7 @@
for name in elements:
item = frm[name]
- if type(item) == dict:
+ if isinstance(item, dict):
node = parentNode.appendChild(name)
node._obj = rd.findBandByName(name)
if item.has_key("objects"):
@@ -342,8 +342,6 @@
self._mousePosition = (0,0)
self._mouseDragMode = ""
- self._availableProps = ["x", "y", "width", "height", "hAnchor",
"vAnchor", "rotation", "name"]
-
self._dragging = False
self._dragStart = (0,0)
self._dragImage = None
@@ -379,17 +377,16 @@
def getProp(self, prop, evaluate=True, fillDefault=True):
+ if evaluate and fillDefault:
+ # The report object can do it all:
+ return self.Props.getProp(prop)
+
try:
val = self.Props[prop]
except KeyError:
- val = None
+ if fillDefault:
+ val = self.Props.PropDefaults[prop]
- if val is None and fillDefault:
- try:
- val =
repr(self._rw.__getattribute__("default_%s" % prop))
- except AttributeError:
- pass
-
if val is not None and evaluate and prop not in ("type",):
try:
vale = eval(val)
@@ -793,13 +790,6 @@
break
self.Refresh()
- def _getProps(self):
- return self._props
-
- def _setProps(self, val):
- self._props = val
-
- Props = property(_getProps, _setProps)
Selected = property(_getSelected)
# End of ObjectPanel Class
@@ -807,12 +797,7 @@
#------------------------------------------------------------------------------
-class StringObject(ObjectPanel):
- def afterInit(self):
- self.doDefault()
- self._availableProps.append("expr")
- self._availableProps.append("fontName")
- self._availableProps.append("fontSize")
+class StringObject(ObjectPanel): pass
class RectObject(ObjectPanel):
def afterInit(self):
@@ -825,7 +810,6 @@
class ImageObject(ObjectPanel):
def afterInit(self):
self.doDefault()
- self._availableProps.append("expr")
#------------------------------------------------------------------------------
# BandLabel Class
@@ -997,9 +981,7 @@
BackColor=(215,215,215),
ForeColor=(128,128,128),
Height=self._bandLabelHeight)
- self._availableProps = ["height", "name", "designerLock"]
-
def initEvents(self):
self.bindEvent(dEvents.MouseLeftClick, self.onLeftClick)
@@ -1072,41 +1054,20 @@
rw = self.Parent._rw
z = self.Parent.ZoomFactor
- if obj.has_key("x"):
- x = rw.getPt(eval(obj["x"]))
- else:
- x = rw.default_x
-
- if obj.has_key("y"):
- y = rw.getPt(eval(obj["y"]))
- else:
- y = rw.default_y
+ x = rw.getPt(obj.getProp("x"))
+ y = rw.getPt(obj.getProp("y"))
y = ((self.Height - self._bandLabelHeight)/z) - y
- if obj.has_key("width"):
- width = rw.getPt(eval(obj["width"]))
- else:
- width = rw.default_width
+ width = rw.getPt(obj.getProp("width"))
+ height = obj.getProp("height")
+ if height is None:
+ # dynamic height. Fake it here for now:
+ height = 23
+ height = rw.getPt(height)
- if obj.has_key("height"):
- height = eval(obj["height"])
- if height is None:
- # dynamic height. Fake it here for now:
- height = 23
- height = rw.getPt(height)
- else:
- height = rw.default_height
+ hAnchor = obj.getProp("hAnchor")
+ vAnchor = obj.getProp("vAnchor")
- if obj.has_key("hAnchor"):
- hAnchor = eval(obj["hAnchor"])
- else:
- hAnchor = rw.default_hAnchor
-
- if obj.has_key("vAnchor"):
- vAnchor = eval(obj["vAnchor"])
- else:
- vAnchor = rw.default_vAnchor
-
if hAnchor == "right":
x = x - width
elif hAnchor == "center":
@@ -1122,17 +1083,16 @@
return o
def getProp(self, prop, evaluate=True, fillDefault=True):
+ if evaluate and fillDefault:
+ # The report object can do it all:
+ return self.Props.getProp(prop)
+
try:
val = self.Props[prop]
except KeyError:
- val = None
+ if fillDefault:
+ val = self.Props.PropDefaults.get(prop)
- if val is None and fillDefault:
- try:
- val =
repr(self._rw.__getattribute__("default_%s" % prop))
- except AttributeError:
- pass
-
if val is not None and evaluate and prop not in ("type",):
try:
vale = eval(val)
@@ -1311,8 +1271,6 @@
for o in self.SelectedObjects:
val = o.getProp(propName)
- if val is None:
- val =
eval("self._rw.default_%s" % propName)
val = self._rw.getPt(val)
newval = val+adj
if propName in ("width",
"height") and newval < 0:
@@ -1542,10 +1500,10 @@
return
pageWidth = rw.getPageSize()[0] * z
- ml = rw.getPt(eval(rf["page"]["marginLeft"])) * z
- mr = rw.getPt(eval(rf["page"]["marginRight"])) * z
- mt = rw.getPt(eval(rf["page"]["marginTop"])) * z
- mb = rw.getPt(eval(rf["page"]["marginBottom"])) * z
+ ml = rw.getPt(rf["page"].getProp("marginLeft")) * z
+ mr = rw.getPt(rf["page"].getProp("marginRight")) * z
+ mt = rw.getPt(rf["page"].getProp("marginTop")) * z
+ mb = rw.getPt(rf["page"].getProp("marginBottom")) * z
bandWidth = pageWidth - ml - mr
tr = self._rulers["top"]
@@ -1557,7 +1515,7 @@
b = band.bandLabel
b.Width = band.Width
- bandHeight = eval(band.Props["height"])
+ bandHeight = band.Props.getProp("height")
if bandHeight is None:
# dynamic band height: size of band determined
at runtime. For now, fake it.
bandHeight = 75
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev