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 Aroz 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]