dabo Commit
Revision 6018
Date: 2010-09-12 14:49:12 -0700 (Sun, 12 Sep 2010)
Author: Ed
Trac: http://trac.dabodev.com/changeset/6018

Changed:
U   trunk/ChangeLog
U   trunk/dabo/__version__.py

Log:
Updated the ChangeLog with the 0.9.3 changes. Set the version number for the 
0.9.3 release

Diff:
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2010-09-12 21:42:35 UTC (rev 6017)
+++ trunk/ChangeLog     2010-09-12 21:49:12 UTC (rev 6018)
@@ -1,5 +1,260 @@
 See the Subversion log for all the details.
 
+Dabo 0.9.3 (2010-09-12) Revision 6018):
+===============================================================================
+We dragged our feet in making this release, because both of us were very busy, 
and frankly, between Subversion and Web Update, most Dabo developers had the 
latest changes already. But there have been several big changes in the last 15 
months, including, but not limited to:
+       - integration of the native Python logging module for all Dabo logging
+       - support for DES3 cryptography in Dabo encryption
+       - changed all pathing to be relative to the app's HomeDirectory
+       - full parameterization of SQL calls
+       - addition of the dRichTextBox control
+       - improvement of unicode support with the dabo.lib.ustr() method
+
+
+Here is a summary of all the changes since the 0.9.2 release:
+
++ Cleaned up the code base by removing all trailing whitespace.
+
++ Removed the ref to md5 and replaced with hashlib.  haslib is currently 
already being used in dDataSet.py and md5 has been deprecated (those users of 
python 2.4 or less need to install the hashlib.py)
+
++ Added dabo.lib.reportUtils.printPDF(), and added a print button to 
FrmReportBase in the AppWizard generated code.
+
++ On Windows, where the status text can go to the main frame, hidden forms 
were writing their current record text to the status bar on update. This fixes 
that awkwardness.
+
++ Eliminated (or at least greatly reduced) the grid header flickering on 
Windows.
+
++ Fixed a bug reported by Mark Rajcok in which the WordWrap property grid 
columns was only affecting those with str DataType, and was ignoring unicode 
DataType.
+
++ Switched all of Dabo's logging to use standard Python logging.
+
++ Switched from os.system() and os.popen2() to subprocess.call() in 
previewPDF() and printPDF(). Removes DeprecationWarnings in Python 2.6 and 
above.
+
++ Added some logic to prevent infinite loops when using field-level validation.
+
++ Added a fix so that previewing and printing should be modeless by default.
+
++ Updated the internal cache code to handle permissions better when running 
under mod_wsgi.
+
++ Added the 'SelectedText' and 'Text' read-only properties to dHtmlBox.
+
++ Added the reports folder to the resolvePathAndUpdate method in the utils 
module.  Added a conditional check in the reportWriter to call the 
resolvePathAndUpdate method if the path is a valid absolute path.  So, now you 
can specify the ReportFormFile property of the ReportWriter object is a 
relative path.
+
++ Reverts a behavioral change introduced accidentally in r5846. Now scan() 
will requery child bizobjs by default.
+
++ Created the 'ustr()' method in dabo.lib.utils. This is designed to replace 
all of our calls to str() in order to eliminate the unicode encoding errors 
that pop up frequently when non-American developers use Dabo.
+To use, include the line:
+   from dabo.lib.utils
+    import ustr
+in your import statements, and then replace all instances of str(val) with 
ustr(val).
+
++ Added some sizer outline code to dFormMixin that was inadvertantly left out 
of the last Web Update.
+
++ dRichTextBox: Changed the 'InsertionPoint' property to 'InsertionPosition' 
to be consistent with other editing controls.
+
++ dRichTextBox: Renamed the 'loadFromFile()' and 'saveToFile()' methods to 
'load()' and 'save()', respectively, as they can use any file-like object.
+
++ Added the dRichTextBox class, which allows for basic rich text editing and 
display.
+
++ Fixed a bug in Web Update that prevented apps from recognizing that Web 
Update had not yet been run for that Dabo installation.
+
++ Changed the PreferenceDialog to use a basic dPageFrame instead of dPageList, 
due to wx warnings.
+
++ Fixed a potential problem in list controls where the control could try to 
access its value before the correct DataSource had been set.
+
++ Added code to reduce dGrid flickering under Windows.
+
++ Added the ImageRenderer class to display images in grid cells.
+
++ The code that handles dropped text/files now preserves the x,y location of 
the drop so that you can tell where on the control the user dropped.
+
++ Added a textbox-level NoneDisplay property so that individual text box 
controls can determine how they display None values instead of all controls 
using dApp.NoneDisplay.
+
++ Fixed an incompatibility with a recent wxPython change to the foldpanelbar 
class.
+
++ Several visual improvements to the dPageStyled class.
+
++ Fixed a bug in dSlider that prevented reversed display.
+
++ Fixed some inheritance issues with sizers.
+
++ Improved sizer outlining to be more flexible. This is mostly for app design 
uses.
+
++ Added support for the dPageStyled class to the Class Designer.
+
++ Added visual indication of sizers in the Class Designer when a sizer is the 
selected object.
+
++ Added the HomeDirectoryStatusBar to the visual tools to display your current 
app's HomeDirectory.
+
++ Updated the standard directory structure for Dabo apps to include 'cache' 
and 'lib' directories.
+
++ Fixed some import errors in reportWriter.py
+
++ Added an optimization to dDataSet that improves performance when doing 
multiple queries against the same data.
+
++ Added an optional optimization to dBizobj that avoids having to requery 
child bizobjs during a scan().
+
++ Fixed a bug in the JsonConverter imports.
+
++ Corrected the bizobj isChanged() function to reflect new records as well as 
modified records.
+
++ Added dApp.AutoImportConnections property. When False, dApp will skip the 
process of finding and loading dConnectInfo objects from found cnxml files. My 
app is being enhanced to use cnxml files, but I use my own logic on which cnxml 
file to use.
+
++ Augmented biz.getTempCursor() with some optional arguments, allowing the 
appdev to set sql, params, and have automatic requerying before returning the 
cursor reference.
+
++ dSlider: added the Reversed and TickPosition properties, as requested by 
Mike Mabey.
+
++ Finally fixed a dMenuItem bug that's been bothering me for (I think) years 
now. On Windows, sometimes there would be double captions, and the "Close 
Window" item in the File menu would be corrupted. Apparently, the timing of 
calling SetBitmap() is crucial: it must happen before SetText().
+
++ Fixed the language problems withthe code to find menus in AppWizard 
applications.
+
++ dDateTextBox: allows the user to clear the date (set to None) by adding a 
shortcut ('N')
+
++ dReportWriter: Fixed bug with spanning objects: if the group didn't print 
for whatever reason, the spanning never started. Therefore, we can't try to 
draw the object.
+
++ Fixed a bug in dGrid's incremental search on Windows.
+
++ Refactored the 'resolvePathAndUpdate()' method into dabo.lib.utils instead 
of dabo.ui.uiwx
+
++ Added window scrolling events to dGrid and dScrollPanel, so that your code 
can now handle them if needed.
+
++ Added optional argument to cur.execute() to convert any ?'s to the backend's 
paramPlaceholder.
+
++ Made the localization installation process a little more sane, as it seems 
that it is especially prone to errors. Now, instead of abending when the dabo 
localization file isn't found, it prints an error and continues. The app will 
continue to work fine, but no translations will be done.
+
++ Fixed a bug that prevented boolean values in grid columns from being 
properly restored. Trac issue #1247.
+
++ Added a flag to avoid an unnecessary pointer movement caused by setting the 
DataSource of the grid to a bizobj after the bizobj had already been created 
and had its record pointer set. Trac issue #1314.
+
++ The logic for constructing the filtering WHERE clause in child bizobjs has 
been corrected to by fully paramterized, instead of 'injecting' the value 
directly into the SQL.
+
++ Fixed a problem when re-opening designs for custom classes. Reported by 
Martinecz Miklós.
+
++ Added the 'GridCellEditEnd' event, which is raised when a grid cell editor 
is hidden, whether the value has been changed or not.
+
++ Fixed a potential issue in the Class Designer Property Sheet in which you 
could be editing the value of a property of one control, and then navigate to a 
different control and have your change accidentally be applied to the second 
control.
+
++ Fixed the Crypto property so that setting it to a crypto object will result 
in the encrypt() and decrypt() methods using that object.
+
++ Fixed a bug in the filterByExpression() method that only replace the first 
occurrence of a field name in the expression. Reported by Ricardo Aráoz.
+
++ Changed the Face setter to ignore attempts to set it to 'MS Shell Dlg*' font 
face names, which can happen when a cdxml file created on Windows is opened on 
Mac or Linux.
+
++ Changed the HomeDirectory setter to write an errorLog entry instead of 
throwing an exception when an invalid path is passed. Again, this is an issue 
with moving a cdxml from one system to another.
+
++ Changed the behavior when attempting to set the Face to a non-existent 
fontface. Instead of throwing an error, an entry is written to the Dabo error 
log describing the issue.
+
++ Updated dLed to make it data-aware. It can now be bound to a DataSource and 
DataField, and have its Color reflect the underlying boolean value.
+
++ Revamped the handling of pathing. If you have file path references in your 
cdxml or cnxml files, this could break your old files. Pathing is now relative 
to the HomeDirectory of your app, instead of the location of the tool that 
created the file.
+
++ Updated the internal encryption code to support the use of DES3 cryptography 
if you have the PyCrypto package installed. There is also a write-only property 
of dApp called 'CryptoKey': when you set that property, if you have PyCrypto 
installed, it will create a new SimpleCrypt instance that uses DES3 encryption, 
with that value as the encryption key. And to avoid having to pass a plain-text 
value to the app creation, you can set this property at any time, passing 
either a string or any callable. By passing a callable, you can more 
effectively hide the way your key is stored; the actual key never has to appear 
in your code at all. If you have cnxml files created with the old code, they 
may no longer work. Simple re-run the CxnEditor to re-save them with the new 
encryption.
+
++ Added the UIAppClass property to dApp. It can be set to a custom subclass of 
dabo.ui.uiApp, to enable developers to add ui toolkit-specific behaviors.
+
++ Fixed an issue with the cursor's _mementos attribute getting inadvertantly 
altered by record cloning. Trac #1316
+
++ Overrode the removeAll() method of this control to work properly with the 
underlying wx control. Trac #1308
+
++ Added some code to ensure a minimal wx version.
+
++ Fixed the problem where the cursor won't save a new unchanged record even if 
the bizobj is set to SaveNewUnchanged.
+
++ Fixed a problem in the seek() method when called from the bizobj when the 
table has a compound pk. Also improved the algorithm for matching and 
near-matching. Trac issue #1330.
+
++ Major fix to how resizing is handled for panels. Previously, there were 
cases where panels would get "stuck" at a large size and were not able to be 
resized smaller. This should fix that problem. Also added the 'Square' 
property. When set to True, the panel will confine itself to a square shape.
+
++ If a dBizobj.filter() call filters out all records, a NoRecordsException was 
being raised. This is generally not necessary, so this is now caught. Trac #1331
+
++ Added code to handle the case in dGrid where a case-insensitive search is 
being done on a string type column with null values.
+
++ Corrects a problem identified by Jacek Kałucki in which some columns that 
don't have defined data types only get their type corrected the first time a 
query is run.
+
++ Fixed a bug that only happened if you called the layout() method of the 
StatusBar. The attribute '_platformIsWindows' had been previously defined in 
dPanel, but dStatusBar no longer inherits from that.
+
++ Fixed getCaptureBitmap() to use a WindowDC for panels and dialogs instead of 
the parent's ClientDC.
+
++ Added the StatusBarClass property, which will allow a form to create any 
status bar subclass that is needed. Defaults to the standard dStatusBar.
+
++ Fixed a problem when using direct object references as the DataSource, 
discovered by Jacek Kałucki.
+
++ Added biz.hasPK() method. It answers the question "is this PK value present 
in the dataset?" It doesn't move the pointer or have any side-effects, and is 
optimized to return the answer to this question as fast as possible.
+
++ Fixed a bug in cdxml rendering: if it contained a boolean value False, it 
was stored as the word 'False'. But when the attProperties were being read back 
in, we were doing bool(val) to convert it back, and bool("False") is True.
+
++ Added a bit of verbosity to quickStart(). Also changed it so that it 
requires an app name.
+
++ Deprecated ShowColumnLabels; added ShowHeaders. Fixed ShowHeaders and 
HeaderHeight to not have side-effects on each other.
+
++ Fixed some display issues when the grid has at least one column with 
Expand=True.
+
++ Made history searches in the Command Window case-insensitive.
+
++ Fixed an issue when opening up the preferences dialog for the first time: 
since no update frequency preference had been set, an error was raised when the 
frequency radio list was bound to that pref.
+
++ Changed the order in which we import the app subdirectory modules. This is 
necessary when using a customized uiApp subclass, which would typically be 
added as a class in the ui module, and then used by overriding the app creation 
line: app = App(SourceURL=remotehost, UIAppClass=ui.MyCustomUIClass)
+
++ Fixed a typo that caused an exception when pressing when a report object was 
selected. Now it brings up the default property in the property sheet like was 
intended.
+
++ Corrected an error when saving/running a non-sizer-based form.
+
++ Enhanced copy/paste in the report designer: if objects from multiple bands 
are selected when copied, paste them into the same bands instead of the 
currently selected band. Allows for copy/pasting a header and a detail item, 
for example.
+
++ The recent change to make dImage a data-aware control had an unintended 
effect in the Class Designer: saving an image resulted in not only saving the 
path, but also the complete byte stream of that image in the Value property. 
This fixes that oversight.
+
++ Added build scripts for Linux to AppWizard. Now you can 'buildwin', 
'buildmac' *and* 'buildlin'.
+
++ Added support for the pudb debugger if it is installed.
+
++ Improved the flow when controls have their value changed from an update() 
call. Now the flushValue() is no longer called, which avoids unnecessary data 
validation calls.
+
++ Fixed some issues with establishing HomeDirectory when running from the 
runtime engine.
+
++ Restored the call to flushValue() that was removed in the recent changes to 
dSpinner. It was breaking anything that used a data-bound spinner, especially 
the Class Designer.
+
++ Corrected the issues raised by Jacek Kałucki regarding the navigation 
problems of dComboBox under Windows.
+
++ Made some changes designed to better support images as data-bound controls. 
Also allowed for the image's Picture property to accept a wx.Bitmap as the 
image source, as that's what is returned from the clipboard methods.
+
++ Added the convenience methods dabo.ui.copyToClipboard() and 
dabo.ui.getFromClipboard(). They work with both text and bitmap types.
+
++ Added a menu option to the Dabo Editor for toggling whitespace visibility.
+
++ Fixed the download_url in setup.py to match the current download location. I 
guess easy_install has been broken for a while. Thanks Carl Karsten for finding 
and reporting the problem, along with a solution!
+
++ Fixed setup.py to work with pip, per Carl Karsten.
+
++ Fixed a problem in the SQL generation of AppWizard-generated apps when using 
full text searches.
+
++ Fixed the issues with custom classes in the Class Designer not being 
properly inherited when running inside other class designs. The problem came 
down to pathing, as have most similar issues, so I approached it by adding some 
smarter pathing code.
+
++ Consolidated the logic for app standard directories. Recent changes had not 
kept the different locations where they were referenced in sync, so now there 
is an attribute of dApp called '_standardDirs' that is a tuple of the 
subdirectory names. There is also now a method of dApp called 
'getStandardDirectories()' that will return a tuple containing the 
HomeDirectory and the full paths to all these subdirectories.
+
++ Enhanced the Editor app by adding an option for setting the number of 
characters before AutoAutoComplete fires, and another option for toggling 
whether line numbers are visible.
+
++ Added some events to dReportWriter: ReportCancel, ReportBegin, ReportEnd, 
and ReportIteration. Your code can bind to them like any other Dabo event.
+
++ Fixed an issue when setting the DataSource to a dPref object.
+
++ Wrapped the creation of the status bar to hopefully not give artifacts when 
created too close to form creation/resize time.
+
++ Updated dSecurityManager and added dApp.LoginDialogClass.
+
++ Fixed color settings in dLed.
+
++ Added the EditorStyleNeeded event to support custom styling in dEditor.
+
++ Fixed an occasional problem with dObject.__repr__() calls.
+
++ Removed code that was slowing searches on virtual fields.
+
++ Implemented full parameter passing to backend SQL instead of using string 
substitution.
+
++ Added a lib directory into the standard Dabo structure.
+
++ Fixed datanav Form to not keep the edit page active after a delete or cancel 
if that action resulted in the RowCount going to 0.
+
+
+
 Dabo 0.9.2 (2009-05-27) Revision 5238):
 ===============================================================================
 There were two unfortunate bugs that made it into the 0.9.1 release that 
prevented new installs of that release from working. I'm embarrassed that it 
took us over 4 months to fix this, but since most active developers are using 
subversion, it didn't seem like much of a problem. But newcomers who downloaded 
the release version were turned off, so this finally addresses the problem.
@@ -86,7 +341,7 @@
 
 + dSpinner was firing ValueChanged and InteractiveChange with each keypress in 
the textbox (IOW, these events fired as often as Hit). For text controls, 
ValueChanged should fire if the value was changed from _oldVal, when the focus 
is lost.
 
-+ This should fix some of the problems noticed by Ricardo Ar‡oz concerning the 
placement of the calendar when editing the dDateTextBox control.
++ This should fix some of the problems noticed by Ricardo Aráoz concerning 
the placement of the calendar when editing the dDateTextBox control.
 
 + Added the 'cloneRecord()' method to dBizobj. This will make a copy of the 
current record and append it as a new record in the dataset. The copy will 
contain all of the columns of the current record except for PK columns.
 
@@ -129,7 +384,7 @@
 
 + Fixed a problem in which a newline was added to code, which didn't affect 
execution, but dirtied the buffer when nothing had actually changed.
 
-+ Updated the QuickLayoutWizard to recognize web-based connections and notify 
the user that they cannot use that wizard with remote connections. 
++ Updated the QuickLayoutWizard to recognize web-based connections and notify 
the user that they cannot use that wizard with remote connections.
 
 
 
@@ -159,7 +414,7 @@
 
 + Changed the default for output to not print all the infoLog messages to 
stdout. Instead, infoLog messages are ignored unless the dabo.verboseLogging 
setting is set to False. The errorLog still prints to stderr, of course.
 
-+ Added the FloatingPanel property. This references a borderless dialog that 
can be used similarly to a context menu, but which can contain any controls you 
want. Additionally, it will guarantee that it is displayed completely within 
the available screen real estate. 
++ Added the FloatingPanel property. This references a borderless dialog that 
can be used similarly to a context menu, but which can contain any controls you 
want. Additionally, it will guarantee that it is displayed completely within 
the available screen real estate.
 It has two properties itself:
        Above: by default the dialog is positioned below its owning control. 
This changes the behavior so that it is positioned above the control.
        Owner: this is the control used to position the dialog.
@@ -174,7 +429,7 @@
        fp.show()
 The controls in the FloatingPanel should hide or release it, depending on 
whether you expect to re-use it. See the update to dDateTextBox for an 
implementation of it.
 
-+ Re-write the way that the calendar is displayed. It now is contained by the 
FloatingPanel of the form, and thus is not bound by panels or other container. 
++ Re-write the way that the calendar is displayed. It now is contained by the 
FloatingPanel of the form, and thus is not bound by panels or other container.
 
 + Also added the ExtendedCalendar property. When True, the larger version of 
the calendar control is used. This version has additional controls for quickly 
moving to any date.
 
@@ -200,9 +455,9 @@
 
 + Added pageUp, pageDown, pageLeft and pageRight methods to dScrollPanel.
 
-+ Changed the 'LineNumber' property in dEditor to be one-based, to match the 
displayed line numbers in the editor. Added the '_ZeroBasedLineNumber' property 
that does the actual communication with the wx layer. 
++ Changed the 'LineNumber' property in dEditor to be one-based, to match the 
displayed line numbers in the editor. Added the '_ZeroBasedLineNumber' property 
that does the actual communication with the wx layer.
 
-+ Added the TransparencyDelay property. It is simply eye candy; it smooths out 
changes in transparency over the time specified in this property (default=0.25 
sec.). 
++ Added the TransparencyDelay property. It is simply eye candy; it smooths out 
changes in transparency over the time specified in this property (default=0.25 
sec.).
 
 + Changed strToBmp() to use app.HomeDirectory as the cwd, if there's an app 
defined, as app.HomeDirectory always refers to the app's root directory, even 
if the cwd is somewhere else, even if the app is frozen with py2exe.
 
@@ -364,7 +619,7 @@
 
 + Fixed the bug that failed to discern that a new record with a 
manually-populated PK was in fact new. Thanks to Dr. Sibylle Koczian for 
reporting this and working with me to help track it down.
 
-+ Tracked down and fixed the problem that caused all those 'GTK-Critical' 
messages. 
++ Tracked down and fixed the problem that caused all those 'GTK-Critical' 
messages.
 
 + Added an 'OK' button to make it clear how to dismiss the dialog when running 
under a window manager that does not have a title bar present.
 
@@ -394,17 +649,17 @@
 
 + Changed the order that the update() steps are carried out. I had noticed a 
bug in some of my Dynamic* properties that depended on the control's Value. The 
cause was that the dynamic props are evaluated *before* the Value gets updated.
 
-+ Moved the sizer default logic into the DesignerUtils script. 
++ Moved the sizer default logic into the DesignerUtils script.
 
 + Enhanced the getDefaultSizerProps() method to handle the mangled names that 
the Class Designer sometimes creates.
 
-+ Changed the way that the import statement block is handled in the .cdxml. 
This *should* be backwards-compatible, but may require re-creating your import 
statements in your design. 
++ Changed the way that the import statement block is handled in the .cdxml. 
This *should* be backwards-compatible, but may require re-creating your import 
statements in your design.
 
 + The change was required because the previous code sometimes resulted in 
import statements not being run before code that depended on those names was 
called.
 
 + Added the dabo.ui.spawnProcess() method. This allows to to run another 
application in a completely independent process.
 
-+ Added the method 'appendDataSet()'. 
++ Added the method 'appendDataSet()'.
 
 + This fixes the issue with the Font property and dMaskedTextBox. We were only 
checking for the existence of a '_font' attribute, and apparently the masked 
classes defined that att themselves.
 
@@ -422,7 +677,7 @@
 
 + Added the improvement provided by 'cowo' for proper importing of project 
subdirectory modules. Added the method 'getStandardAppDirectory()'. This takes 
one of the following standard Dabo directory names and returns the path to that 
directory. It takes an optional path location to start looking from; it will 
also search the app's HomeDirectory. The standard directory names are:
 "biz", "cache", "db", "main.py", "reports", "resources", "test", "ui"
-If the user requests a non-standard directory, a message is printed to the 
errorLog and None is returned. 
+If the user requests a non-standard directory, a message is printed to the 
errorLog and None is returned.
 If the specified standard directory cannot be found, None is returned.
 
 + Removing the deprecated first datanav classes.
@@ -443,7 +698,7 @@
 
 + Changed the way that the Visible property works with columns. Now the column 
is not removed from the grid's Columns collection; instead, its Visible status 
is taken into account when drawing the grid.
 
-+ Added the 'addSizerDefaults()' method. This is to be used by external tools 
to set defaults for controls that are not part of dabo.ui. 
++ Added the 'addSizerDefaults()' method. This is to be used by external tools 
to set defaults for controls that are not part of dabo.ui.
 
 + Found a case where a Designer tool (the view palette) had controls that were 
bound to properties that not all the controls they were modifying had. This may 
be related to some of the abends encountered when using the View Palette on 
Windows and Linux.
 
@@ -473,7 +728,7 @@
 
 + Fixed WordWrap in dGrid.
 
-+ Fixed Windows dTextBox problem, which would change ReadOnly back to False 
when changing 
++ Fixed Windows dTextBox problem, which would change ReadOnly back to False 
when changing
   the Alignment.
 
 + Added StrictNumericEntry property to dTextBox and dSpinner.
@@ -491,7 +746,7 @@
 + Fixed the getLastInsertID() for dbPostgreSQL, to work with non-serial PK's 
as well. Thanks
   to John Fabiani, Adrian Klaver, and Lorenzo Alberton.
 
-+ Added dabo.settings.dateFormat, dateTimeFormat, and timeFormat. If None (the 
default) the 
++ Added dabo.settings.dateFormat, dateTimeFormat, and timeFormat. If None (the 
default) the
   formatting of these date types will be dependent on the user's settings in 
the operating
   system. This lets the appdev specify the format desired for display and 
editing in text
   controls and the grid. Prior to this, the only format was YYYY-MM-DD, which 
was satisfying
@@ -508,8 +763,8 @@
 
 + Nate Lowrie added some niceties to dEditor, including better code folding.
 
-+ Added code to allow biz.DefaultValues being set to None. If the field values 
are 
-  still null when saving, the insert statement won't include them, allowing 
++ Added code to allow biz.DefaultValues being set to None. If the field values 
are
+  still null when saving, the insert statement won't include them, allowing
   database defaults to be used.
 
 + dCursorMixin no longer raises NoRecordsException from sort().. it merely 
returns.
@@ -519,7 +774,7 @@
 Field types in the data layer are now covered better (previously only non-
 joined fields were massaged).
 
-Transaction tokens are now per-connection, not per-bizobj. Thanks Uwe Grauer 
+Transaction tokens are now per-connection, not per-bizobj. Thanks Uwe Grauer
 for the nudge.
 
 dGrid performs better when changing rows.
@@ -530,12 +785,12 @@
 
 Fixed some report writer xml conversion problems.
 
-Enabled setting report writer's OutputFile property to a file-like object, and 
+Enabled setting report writer's OutputFile property to a file-like object, and
 not strictly a file object.
 
 Fixed unicode-xml saving/loading in ReportDesigner.
 
-Added default size and position for forms (they tended to be much too small 
+Added default size and position for forms (they tended to be much too small
 before).
 
 Web update fit and finish.
@@ -596,20 +851,20 @@
 + We no longer maintain separate stable branch; point releases are snapshots of
   the development branch instead of merely backported bugfixes.
 
-+ Web Update is available; after downloading and installing this version of 
++ Web Update is available; after downloading and installing this version of
   Dabo, you can turn Web Update on in the new Edit|Preferences window and
   be notified when updates are available. Dabo will then update itself if you 
wish.
 
 
 UI:
-+ Added masking ability to dTextBox and dEditBox, via the Mask and 
++ Added masking ability to dTextBox and dEditBox, via the Mask and
   MaskedValue properties.
 
 + Added dRadioMenuItem
 
 + dEditor now formats lots of languages, not just python. Thanks Nate!
 
-+ Improved the code completion logic of dEditor to not just blindly execute 
code, 
++ Improved the code completion logic of dEditor to not just blindly execute 
code,
   which is slow and dangerous.
 
 + Added dEvents.InteractiveChange,
@@ -625,7 +880,7 @@
 + Fixed problem in dGrid where a column sizing operation would sometimes start
   a sort operation. Thanks Larry!
 
-+ Put in Kevin Edward's solution for replacing deprecated calls in 
dGridSizer.py. 
++ Put in Kevin Edward's solution for replacing deprecated calls in 
dGridSizer.py.
   Thanks Kevin!
 
 + Grid selection wasn't updating correctly when navigating with the keyboard. 
Thanks
@@ -653,7 +908,7 @@
 
 + Fixed dHtmlBox to find inline images on Windows.
 
-+ Corrected a problem with text controls losing their selection information 
when they 
++ Corrected a problem with text controls losing their selection information 
when they
   lose focus. (#1104).
 
 
@@ -668,18 +923,18 @@
 biz:
 + Found and fixed bugs related to parent/child relationships
 
-+ Major improvements to transaction handling. 
++ Major improvements to transaction handling.
 
 
 General Framework:
 + dLocalize now converts strings into the given language. Set your language
   using dApp.setLanguage(). The locales have been added to Launchpad, and we'll
-  regularly sync up with LP for our translations. 
+  regularly sync up with LP for our translations.
 
 + Fixed case mismatch in dLocalize (#1086).
 
 + Added dApp.makeDaboDirectories() and quickStart(), which set up a structure 
for
-  dabo-based applications. 
+  dabo-based applications.
 
 
 Reporting:
@@ -699,15 +954,15 @@
   attributes.
 
 + Refactored/fixed the case of an exception happening during scan: previously,
-  another exception would happen because we tried to restore the row number 
+  another exception would happen because we tried to restore the row number
   even if we saved the PK value instead. (Ticket #1064)
 
-+ The "Preferences" menu item in dBaseMenuBar's Edit menu used a hotkey of 
"P", 
++ The "Preferences" menu item in dBaseMenuBar's Edit menu used a hotkey of "P",
   which conflicted with Paste. Checked around and other apps use the "e" for
   the hotkey instead. Fixed in trunk and stable.
 
-+ Fixed a problem where textboxes would lose their selection when moving 
-  focus. 
++ Fixed a problem where textboxes would lose their selection when moving
+  focus.
 
 + Fixed a KeyError in dTreeView's makeDirTree() function, thanks to a fix
   by hraban in ticket #1076.
@@ -724,8 +979,8 @@
 Enhancements:
 
        ===== General Stuff =====
-+ Improved a lot of the handling of paths. It is now possible to correctly 
-  resolve a relative path when the source file and the contained file are in 
++ Improved a lot of the handling of paths. It is now possible to correctly
+  resolve a relative path when the source file and the contained file are in
   different directories, while the app is running from a third directory.
 
 + Added datanav2; deprecated datanav. datanav2 no longer supports fieldSpecs,
@@ -737,10 +992,10 @@
 
 + Added/enhanced unit tests for dCursor, dBizobj, dTextBox, and dForm.
 
-+ Big fixes and enhancements, as always, to runtime cdxml instantiation, 
++ Big fixes and enhancements, as always, to runtime cdxml instantiation,
   including much better inheritance of properties.
 
-+ General move away from accepting specific keyword arguments to class 
++ General move away from accepting specific keyword arguments to class
   constructors, in favor of accepting property values instead.
 
        ===== UI Tier =====
@@ -749,22 +1004,22 @@
   dynamic cell properties. Currently, it works, but the only property
   I've added yet is CellForeColor and DynamicCellForeColor.
 
-+ Removed the requirement that objects used as DataSources have to inherit 
++ Removed the requirement that objects used as DataSources have to inherit
   from dObject. Thanks Carl for pointing out the limitation.
 
-+ Added dDockForm to the main trunk, which is Dabo's wrapper for wxAUI. 
++ Added dDockForm to the main trunk, which is Dabo's wrapper for wxAUI.
 
-+ Added the option of passing complex filter expressions to setAll(). This 
-  function now accepts a tuple of filter expressions of the format 
-  'att comp val', which will be eval'd with the child objects inn order to 
-  determine if the filter applies. Each expression in the tuple is ANDed 
-  with the others; all the tuple elements must evaluate to True for the 
++ Added the option of passing complex filter expressions to setAll(). This
+  function now accepts a tuple of filter expressions of the format
+  'att comp val', which will be eval'd with the child objects inn order to
+  determine if the filter applies. Each expression in the tuple is ANDed
+  with the others; all the tuple elements must evaluate to True for the
   value to be set.
 
 + Added the dHtmlBox.HtmlLinkClicked event.
 
-+ Added the HatchStyle property to draw objects. This gives you the option 
-  of specifying that the fill for drawn objects can be one of the following 
++ Added the HatchStyle property to draw objects. This gives you the option
+  of specifying that the fill for drawn objects can be one of the following
   hatch patterns:
 
     Solid (default)
@@ -789,7 +1044,7 @@
 + Coerce dMessageBox messages into strings, which is convenient.
 
 + dGrid's navigation now traps and responds to business rule violations, with
-  mediation by the form if possible. 
+  mediation by the form if possible.
 
 + dTreeView supported in ClassDesigner-designed files.
 
@@ -808,7 +1063,7 @@
   platforms (Mac), so that you have cross-platform consistency. Thanks to
   Dj Gilcrease for help in working this out.
 
-+ Added Continuous property to dSlider, which determines whether Hit is 
++ Added Continuous property to dSlider, which determines whether Hit is
   raised while the slider is being changed, or only after the user has
   finished sliding.
 
@@ -816,7 +1071,7 @@
 
 + Added AutoAutoCompletion option to dEditor.
 
-+ Added methods to dabo.ui: isMouseLeftDown(), isMouseRightDown(), 
++ Added methods to dabo.ui: isMouseLeftDown(), isMouseRightDown(),
   and isMouseMiddleDown().
 
 + Added tango icon theme and changed our toolbars/menus to reference the new
@@ -858,9 +1113,9 @@
 + Added the concept of VirtualFields to dBizobj, which provides a simple,
   flexible interface to reference calculated fields on the fly.
 
-+ Added the 'SaveNewUnchanged' property to dBizobj. When this is True, new 
-  records that have not been modified from their defaults are saved; the 
-  default remains to not insert such records. 
++ Added the 'SaveNewUnchanged' property to dBizobj. When this is True, new
+  records that have not been modified from their defaults are saved; the
+  default remains to not insert such records.
 
 + Improved data binding to bizobjs on a parent form.
 
@@ -893,11 +1148,11 @@
 + Controls were flushing their value, and raising ValueChanged events, too
   many times. Fixed.
 
-+ Dialogs and forms weren't able to set things like whether they have a 
++ Dialogs and forms weren't able to set things like whether they have a
   close box, from within initProperties. Fixed.
 
 + Message dialogs invoked like dabo.ui.areYouSure() weren't getting attached
-  to the appropriate parent form, so that the message displayed wouldn't 
+  to the appropriate parent form, so that the message displayed wouldn't
   activate the form that it applied to first. Fixed.
 
 + Fixed rapid flashing in a sorted dGrid when an editable column was selected.
@@ -914,14 +1169,14 @@
 + Fixed the dBizobj.save() process to not scan all child bizobj's repeatedly.
   This fixes some problems, and speeds up save() considerably.
 
-+ Fixed a problem where canceling a bizobj that had no records caused an 
-  exception that was being displayed with notifyUser(). Normally, a bizobj 
-  with no records does not need canceling, so raising such an error is not 
-  appropriate. You can still have the old behavior by calling cancel() with 
++ Fixed a problem where canceling a bizobj that had no records caused an
+  exception that was being displayed with notifyUser(). Normally, a bizobj
+  with no records does not need canceling, so raising such an error is not
+  appropriate. You can still have the old behavior by calling cancel() with
   'ignoreNoRecords = False'.
 
 + Fixed a bug reported by Larry Long and John Fabiani that involved requerying
-  one bizobj resulted in checking for pending changes in other bizobjs that 
+  one bizobj resulted in checking for pending changes in other bizobjs that
   were not involved in the requery.
 
 + Descending sorts created infinite loop with duplicate values. Fixed.
@@ -930,27 +1185,27 @@
 + Fixed status text to clear the old field validation failed message when the
   user fixes the value and the field now passes validation.
 
-+ Fixed the geometry persistence to only restore the size of the form from 
-  user settings if BorderResizable is set to True. 
++ Fixed the geometry persistence to only restore the size of the form from
+  user settings if BorderResizable is set to True.
 
 + Fixed dGrid's AlternateRowColoring to be settable from the constructor
   or initProperties (previously, it was only settable in afterInit() or
-  later). 
+  later).
 
 + Dynamic props on dColumn were not working: fixed.
 
-+ Fixed a bug that confused the string 'None' with the null value None when 
++ Fixed a bug that confused the string 'None' with the null value None when
   setting BorderStyle from a cdxml. Thanks to Miguel for catching this one.
 
-+ Fixed a couple of bugs related to the dSizer.BorderSides property. 
-  Previously it was not retrieving that property correctly from the internal 
++ Fixed a couple of bugs related to the dSizer.BorderSides property.
+  Previously it was not retrieving that property correctly from the internal
   wx flag.
 
 
 ===============================================================================
 Dabo 0.7.2 (2007-01-18) (Revision 2716):
 
-Additions, all minor, backported to stable only to keep compatibility with the 
+Additions, all minor, backported to stable only to keep compatibility with the
 stable versions of daboide and/or dabodemo:
 + Enhanced the getImagePath() function to work better with Windows pathing.
 + Refactored dPanel into a common mixin class.
@@ -959,7 +1214,7 @@
 Bug Fixes:
 + Fixed the stable branch

 (29305 bytes were truncated as it was too long for the email (max 40000 bytes.)

_______________________________________________
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