We are pleased to announce the 0.4.2 release of Dabo, the 3-tier application framework for Python.
The primary focus of our work for this release has been a tightening up of the various properties of many of the UI controls to create a more consistent interface. Since these controls were developed one at a time as needed, they had some subtle but significant differences in the way they worked. This release addresses a lot of those concerns.
We've also added auto-binding of methods to events. For example, if you want to have your code react to MouseEnter event, all you need to do is add a method named onMouseEnter(), and Dabo will bind it to that event. Thanks to the PythonCard folks for this idea!
Work on the Report Writer continues to proceed; it now supports groups and report variables. These improvements have been integrated it into the wizard-generated apps, too.
Needless to say, there have also been a few bug fixes. A list of all the changes follows my sig. You can grab the latest, as always, from http://dabodev.com/download.
-- Ed Leafe
-- http://leafe.com
-- http://dabodev.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dabo-0.4.2 (2005-10-07) (Revision 1418):
Added PrimaryBizobj property to dForm, which can replace calls to getPrimaryBizobj().
Added Accepted property to dOkCancelDialog, which gets set automatically if the
user pressed "OK".
Added AutoSQL, UserSQL, CurrentSQL, LastSQL properties to dCursor and dBizobj.
When time to requery, the SQL will come from UserSQL if set, or AutoSQL will
be regenerated.
Fixed a bug that kept changes to a new record from getting committed.
Added DefaultValues property to bizobj.
Added ListSelection and ListDeselection events to dListControl. Added properties
MultipleSelect, HitIndex, LastSelectedIndex, HeaderVisible, HorizontalRules,
and VerticalRules. Changed the behavior of both dListControl and dListBox so that merely selecting an item doesn't raise the Hit event; instead, it raises a ListSelection event, and if another item had been previously selected, it raises a ListDeselection event. Hit is only raised from double-clicking on an item, or by pressing Enter.
Added new property to dTextBox: StrictDateEntry. Changed the code for
interpreting dates entered by the user to allow for some less explicit
formats (YYYYMMDD, YYMMDD, and MMDD). If StrictDateEntry is False (the
default), these other formats will be used when interpreting dates
entered by the user.
Added field-level validation to the framework.
Improved support for decimal.Decimal, both at the database level and in
dTextBox.
Added new auto event binding, which automatically binds events based on any
defined callback functions. For example, if you have a method onMouseEnter()
defined, the dEvents.MouseEnter will automatically be bound to that method.
Inspired by PythonCard.
Added RegID property to forms, that allows for object registration
with the form. Not all objects require RegIDs, but if they have one,
they must be unique among all objects in a form. A reference to that
object can then be gotten from any other object by calling
'self.Form.getObjectByRegID(<regid>)'.
Linked RegID to the auto event binding, so that if a form has a method
of onHit_cmdOK(), and has a button with a RegID of 'cmdOK', the
cmdOk's Hit will get bound to the form's callback, automatically.
Improved dGrid and dColumn. Many properties added, and you are now in much
finer control over the display of grid column headers, grid cell attributes,
grid cell editors and renderers, and the grid itself.
Began work of allowing case-insensitive property values for properties that
take string values, and for properties that take a limited number of values
where the first letter is unique, you can set the property by just using the
first letter. dTextBox.Alignment = "c" sets the property to "Center", for
example.
Modified dBizobj, dCursorMixin, and dBackend so that the user can specify
the Unicode Encoding to use. Changed the default encoding from latin-1 to
utf-8.
Added feature to optionally draw sizer outlines on any form that uses dSizers.
This is currently accessible via an option in the View menu when the base
menu bar is in use, or you can turn it on/off programatically.
Grids now remember the column that is sorted, and resort when next instantiated.
Added support in dReportWriter for report groups and report variables, and
dynamic band heights (based on the height of contained objects). Added showExpr,
which is an expression that evaluates at runtime and if true, shows the object
in the report, and not if false.
Improved the automatic print preview report format in datanav. It now:
+ prints column headers
+ mirrors the font size, column width, cell vertical and horizontal
alignment, and column height of the grid
+ mirrors the font size, header height, vertical and horizontal
alignment of the grid headers
+ automatically reorients to landscape if the detail flows beyond the width
of portrait
+ stops printing more columns if doing so would result in overflowing the
right margin
Key bindings are now case-insensitive.
Improved docstrings and API documentation.