root/tags/dabo-0.5.1/ChangeLog

Revision 1860, 36.3 kB (checked in by ed, 3 years ago)

Cleaned up some wierd wrapping, and made some minor changes.

Line 
1 See the Subversion log for all the details.
2
3 Dabo 0.5.1 (2006-01-25) (Revision 1860):
4 Additional MDI/SDI improvements and fixes. By default, dForm on Windows will be a MDI child.
5
6 Fixed PageFrame background color to take the background color from the form, not unconditional white. Only on Windows - Gtk and Mac do the right thing by default.
7
8 Fixed various issues with getting icon files and converting them to bitmaps.
9
10 Set the default grid font to Arial,9 on Windows, as the wx-default was just plain ugly.
11
12 Added getPositionInSizer() method to sizers, since they may also be contained within sizers.
13
14 Reworked dShell. Now it appears as a split window, with the standard command area on the top, and the output in the lower pane.
15
16 Changed dGridSizer to raise an exception if the insert method is called instead of just returning False.
17
18 Added SashPositionChanged event. Updated dSplitter to raise this event when the sash position changes.
19
20 Added scrollToBeginning() and scrollToEnd() methods to dEditBox.
21
22 Added pass-through properties for dSplitForm's splitter's panels.
23
24 Added the property 'SplitState' to the dShell class. By right-clicking on the shell, you can toggle between the new split behavior and the "traditional" single pane behavior.
25
26 Added a right-click menu to the output pane. Right now all it can do is clear itself, but we could add other stuff such as font selection, etc.
27
28 Fixed a bug in uiApp that prevented Cut(), Copy() and Paste() from working in the shell (and other non-Daboized controls that only have wx versions of these methods).
29
30 Added a menu command to the shell to clear the output window using Ctrl-Backspace.
31
32 Added the MenuOpen event to dEvents. This allows us to create dynamic menus by intercepting this event and updating the prompts of the menu items as needed. Added the event data code to save the prompt and menu object that triggered the event.
33
34 Added 'deadObjectException' as an alias to wx._core.PyDeadObjectError to the dabo.ui.uiwx module. This will enable Dabo code to handle this condition without having to use wx code.
35
36 Added a bunch on internationalization to the dShell script.
37
38 Made the dMessageBox titles come from Application.getAppInfo(appName) by default.
39
40 Added handling for situations where a bizobj is used with a data connection.
41
42 Added a sizeToColumns() method. This will set the width of the grid equal to that of its component Columns.
43
44 Fixed copy to clipboard in about.py to use CRLF on Windows.
45
46 Added new properties to grid:
47     HorizontalScrolling
48     VerticalScrolling
49     ShowColumnLables
50     ShowCellBorders
51
52 The scrolling properties are booleans, and will hide/show the scrollbars.
53
54 Fixed some problems with setting the column's Width. For a number of reasons, when you created a grid from scratch and then added columns using addColumn, the columns widths you'd specify weren't being respected. Fixed.
55
56 Moved the code for the dEditor class from ide/dEditor.py into its own uiwx-level class. This will allow other apps (I'm thinking Designer here!) to instantiate code editors where they need.
57
58 Revamped the layout of the dOkCancelDialog class to create the panel and sizer that is needed in addControls().
59
60 Cleaned up some of the default spacing so that with AutoSize=True, the form still looks OK.
61
62 Removed the split sash code from the dEditor. That stuff belongs in the form the editor is located, not in the editor itself.
63
64 Fixed a bug in dGrid that only seemed to pop up when the grid was located on a form with a bizobj but that wasn't a dForm. The presets dialog in minesweeper fit that description, and it was throwing errors when you navigated through the grid.
65
66 Added methods for getting/setting the back color of individual items.
67
68 Added property CellHighlightWidth to dGrid, and used that property in the about dialog.
69
70 Made dPanel.addControls() better behaved.
71
72 Reworked/improved the Quick Report dialog in datanav.
73
74 Updated dPageFrameNoTabs to raise the same events as the 'tabbed' versions do. Added a 'getPageNumber()' method.
75
76 Added PNG files for rotating images clockwise and counter-clockwise.
77
78 Improved dImage to support 90 degree rotation in either direction. Added rotation to the the demo.
79
80 Fixed a bug in dListControl's StringValue prop, and any other place where the framework was trying to call the control's GetString() method, since it doesn't have one.
81
82 Added SearchDelay property to dApp, which becomes the default SearchDelay for dGrid. The dGrid SearchDelay can get set to any int but that won't override the dApp setting. If dGrid.SearchDelay is set to None (the default), that is when the dApp setting gets used. Set the default SearchDelay to 300 - better than the previous 600 IMO but still not too fast. Eventually, when we provide a default system preference screen, we should expose this property for the user to tweak how they like.
83
84 Cleaned up and consolidated lots of stuff in dGrid, which shouldn't have any effect on runtime performance. Made SameSizeRows into an actual property.
85
86 Using the standard button sizer in the okay/cancel dialog is good, because it lets wx handle the platform-convention rules. However, even though it handles rearranging the order of the buttons as needed, it doesn't rearrange tab order. So I added code to do that.
87
88 Reworked the login dialog to subclass from dOkCancelDialog.
89
90 Reworked dGrid to sync the rowcount in refresh() calls. Fixed bug in syncing of column counts.
91
92 The entire populate() cycle was happening every time you entered the browse page in datanav apps, when in reality the only thing you need to do in current dGrids when the dataset has been requeried is a simple refresh().
93
94 Added an initial call to _clearDocument(), which is where all the defaults are set for the editor. The DesignerEditor would not indent properly without this.
95
96 Added moveToBeginning() and moveToEnd() methods to position the pointer at the beginning and end of the document, respectively.
97
98 Added functions to dBizobj, dCursor, and dBackend to get the data structure from the cursor description, instead of querying the backend based on a table name. This is more likely to contain correct information, but will need work for other backends besides MySQL. Also, getting the pkid is still problematic - but IMO it isn't a big deal to just have the user tell us which field to use as the PK.
99
100 Fixed dGrid's buildFromDataSet() to use the new function so it will work even if the bizobj has no records at the time of creation.
101
102 Fixed dGrid.sort() to not care if sort is done on an empty bizobj. Added the logic to restore code saved in the Designer so that it functions properly in the re-created form.
103
104 This is big - really big. For the first time, you can create a form in the Designer, add code to be bound to events, or create custom methods, and that code will work in the form created from the .cdxml file exactly the same as if you had written those methods in a regular .py script.
105
106 Improved the card deck pictures.
107
108 Fixed some problems in the Icon setter that would cause errors if None was passed, or if the icon path didn't exist, as would be the case if you were running with py2exe and didn't include the icon files as resources.
109
110 Added a significant change to eventMixin.py's auto event binding logic. The code now first looks at the object itself before looking up its family tree. This is critical for the event binding when running a cdxml file, where methods are added to the object at runtime, and are not present in the class definition.
111
112 Cleaned up some spacing in dEvents; also fixed some "appliesToClass" logic that had events 'applying' to incorrect classses. There are still some anomalies, I'm sure; the event listing in the Designer will reveal these.
113
114 Modified the dynamic code binding to fix the problem with modifying the object's class definition in the current namespace. Also fixed a problem where code for dPage objects was not getting assigned.
115
116 Fixed a bug in the dListControl's _getValue() method when there were no items in the list.
117
118 Added alias 'dragging' for 'mouseDown' in the EventData for mouse events.
119
120 Added method 'getMousePosition()' to dPemMixin. This returns the mouse position in relative coordinates to the object that called it.
121
122 Added 'drawBitmap()' method to dPemMixin. Like the other wx.DC drawing methods, this wraps the wx.DC.DrawBitmap() method into an object interface that Dabo objects can use.
123
124 Changed getSQL() so that if no FROM clause has been specified, it defaults to a FROM clause using the cursor's Table.
125
126 Addedproperties SettingsFileName and SettingsDirectoryName to the app's UserSettingProvider. The defaults for both come from app.getAppInfo("appShortName"), and determine the name of the directory and file name of the user settings file. The directory name will be lower()'d and have a '.' prepended automatically.
127
128 Created the dFoldPanel and dFoldPanelBar classes, which wrap the built-in wx.lib.FoldPanel classes. Modified __init__.py to include these, and added some hacks to dPemMixin to enable them to work with the event structure.
129
130 Added the dCalendar control. This wraps the wx.calendar.CalendarCtrl, making it simpler and more Pythonic to work with.
131
132 Added a setting 'firstDayOfWeek' to dabo.settings
133
134 Moved the method _getWxColour() from dFoldPanelBar into dPemMixin, as it is needed in both dFoldPanelBar as well as dCalendar, and possibly other wx controls that expect a wx.Colour object instead of a color tuple.
135
136 Added the calendar events and their processing.
137
138 Added a form subclass named 'dBorderlessForm'. This creates a form with no visible border or title bar. Renamed the base form class in dForm.py from 'dFormBase' to 'BaseForm'. I felt that the 'd' prefix was misleading, as it isn't meant to be a Dabo base class at all.
139
140 Updated dDateTextBox to use regular datetime values internally instead of wx.DateTime. Updated the calendar to use the new Dabo dCalendar instead of the raw wx version.
141
142 Added row and column highlighting to the dGrid class. Default is to only show the selected cell, but that can be changed by setting the SelectionMode property to either "rows" or "columns". The color used to highlight the selected row/col is controlled by the new SelectionBackColor and SelectionForeColor properties; defaults are yellow background and black text.
143
144 Added a GridRangeSelected event to dEvents, and added the code to raise it to dGrid.
145
146 Changed the default SelectionMode for the datanav grid to 'row'.
147
148 Added some additional properties and functionality to the dFoldPanelBar class. First is the 'Singleton' property, which controls a behavior in which one and only one panel is open at any time. Expanding a different panel collapses the currently open one, and attempting to collapse the expanded panel does nothing.
149
150 Second, there is a 'SingleClick' property that controls whether you need to double-click on a panel's caption bar (default behavior) to toggle it, or whether a single click will suffice.
151
152 Finally, the 'CollapseToBottom' property determines whether any collapsed panels are positioned at the bottom of the control, or whether they remain in their natural position.
153
154 I added the FoldPanelCaptionClick and FoldPanelChange events to dEvents in order to implement these features. They are available to instances of the dFoldPanelBar class for hooking additional behaviors to these events.
155
156 I updated the test form for dFoldPanelBar to enable you to play with these settings.
157
158 Fixed a bug in dGrid's new SelectionMode property. I had previously checked for only 'r' or 'c' at the beginning of the setting, forgetting that 'cells' is a valid setting, so I fixed that to check the first two letters.
159
160 Added the property 'AlternateRowColoring' to dGrid. When True, rows in the grid will be colored depending on the RowColorOdd and RowColorEven properties.
161
162 Changed the datanav grid to use alternate row coloring.
163
164 Added some changes to the column Width setting that were necessary for working correctly in the Designer.
165
166 Fixed a bug with MultipleSelect in the dTreeView class. Added some navigation methods for returning adjacent nodes. Fixed a selection bug when working with MultipleSelect=True.
167
168 Added code to properly escape characters that should not be in XML attributes. Also cleaned up some uneven spacing in the created XML.
169
170 Fixed a bug in dGrid that didn't allow the ColumnCount to be reduced.
171
172 Fixed a bug in dPage that happened when the page was instantiated separately from the pageframe, since it wasn't yet in the Pages collection.
173
174 Added 'dEditableList', which is a wrapping of the wx.gizmos.EditableListBox. This control takes a list and allows the user to add/edit/delete items from the list, as well as re-order them. There are properties to enable/disable any of the following: edit, add, delete, order. All are enabled by default.
175
176 Fixed a bug in dGridSizer. Apparently, calling 'AddGrowableRow/Col' multiple times increments an internal counter, and a subsequent 'RemoveGrowableRow/Col' will only decrement it, and will not set it to be not growable unless the counter has dropped to zero. Now setting a row as growable won't do anything if it already is.
177
178 Added the drawText() method, along with the text draw objects.
179
180 Added columns to reportWriter. Added smarter sorting of elements in the xml output, for instance putting the report title up top instead of on bottom, and putting the bands in order that they appear and not alpha order.
181
182 Changed all the sizer routines to return the SizerItem managing the object that was just added to the sizer.
183
184 Sizer.Children now modified the SizerItem objects to include a 'ControllingSizer' attribute that references the parent sizer.
185
186 Modified the dFoldPanelBar class to better time its refreshes. It's still a bit funky, but does seem to work better.
187
188 Modified dFormMixin to handle the new Spacer panels correctly.
189
190 Added a 'Children' property to dFoldPanelBar that returns the child panels, instead of the layout panel that it uses to manage the visible panels.
191
192 Added a return value to setItemProp() in the sizers so that we can tell if a value was successfully applied.
193
194 Fixed the problem with propertyHelperMixin.getPropertyList(): it was caching the list of properties across the class hierarchy, instead of caching just for this one class definition. Good catch, Ed!
195
196 Wrapped the wx.CheckListBox for Dabo.
197
198 Changed the parameter to sizer for setting the sides that the Border property applies to from 'borderFlags' to 'borderSides', as this seems much more appropriate. Updated the sizers to properly get/set this prop from a list of values.
199
200 Changed all hard-coded "\n" in dicttoxml to the more crossplatform idiom "%s" % os.linesep.
201
202 Fixed a problem whereby nested sizers did not get their Parent property set. Thanks to Casey McGuire for catching this bug.
203
204 Added the GridCellEditBegin event, which is raised when a grid cell editor is shown. This allows you to record the value of a cell before it is modified by the user.
205
206 Added StayOnTop property to dFormMixin.
207
208 Added ShowMenuBar property, so I can avoid showing the Dabo menubar on my property sheet and object tree forms.
209
210 Added groups and variables elements to a newly created report form.
211
212 Changed the default position to (-1, -1), since (0, 0) places the form under the menu bar when running on OS X.
213
214 Fixed a problem with dGrid on Windows where the propsheet was stealing the focus
215
216 Added ForegroundColor and BackgroundColor to dColumn. These props apply to all cells in a column that don't have custom renderers.
217
218 Fleshed out the 'nextNode()' and 'priorNode()' methods to provide true flat navigation through the tree. Also cleaned up several other methods that dealt with nodes and their objects.
219
220 Added font properties to treeview nodes.
221
222 Wrapped the wx.Font object into dFont. This breaks the font editing on the PropSheet, and possibly a few other places that use the font prop, but we'll have to find those afterwards. All previous references to Font have to be changed to GetFont() instead; likewise, all assignments to Font must be replaced with calls to SetFont().
223
224 Revamped the internals of dFont.
225
226 Added 'defaultFontSize' to settings.py
227
228 Updated the font handling in dGrid and dTreeView.
229
230 Cleaned up some spacing in dLabel.
231
232 Added the default wx IDs to the About and Quit menu items so that they appear in the proper place on OS X.
233
234 Updated the long-neglected BorderSizer class, which wraps the wx.StaticBoxSizer class. You can now pass either a pre-made dBox object to the constructor, or pass a parent object, and the constructor will create the box for you.
235
236 Added a Caption property to dBorderSizer. This will update the caption displayed on the sizer's box.
237
238 Refactored the getItemProp() method so that dBorderSizer will use the same functionality.
239
240 Added getAvailableFonts() method. Returns a list of all font faces installed on the current system.
241
242 Updated dFormMixin to handle dBorderSizer objects in .cdxml files
243
244 Changed the prompt and shortcut for the 'Quit' item in dBaseMenuBar to be 'Quit' and 'Ctrl-Q' on all platforms.
245
246 Added additional properties to dBorderSizer that are basically proxies to the box's caption.
247
248 Added a Dabo wrapper for wx._core._wxPyDeadObject.
249
250 Added a couple helper functions for converting between 0-255 rgb
251 format and 0-1 format.
252
253 Added basic MRU (Most Recently Used) capabilities to Dabo. I had looked at the wx.FileHistory class, but it seemed a bit too rigid to work with our design. To use MRU in a menu, the menu should be created by passing 'MRU=True' in the constructor.
254
255 Added Variables, Groups, and Objects as ReportObjectCollections.
256
257 Changed dEvents.ContextMenu to derive from Event instead of MenuEvent, since the contextmenu event is a request for a context menu to be displayed, and not generated from any existing menu.
258
259 Added an addObject() function to report objects. Changed the sorting of report elements so that Variables appears before Groups. Fixed a bug which sometimes kept variables and groups from getting their xml generated.
260
261 Modified xmltodict to properly escape any internal ampersands.
262
263 Modified the Quick Report (list format) to generate the report form not by crafting the XML by hand, but by using the object interface and then finally having the report writer return the XML. This results in quick reports getting the same XML format as if the Designer were used.
264
265 Added the dHyperLink control. This is a wrapped version of the wx.lib.hyperlink.HyperLinkCtrl.
266
267 Added a new function to dabo.ui, callAfterInterval(func, interval). It will call the passed function after the interval has elapsed. Additionally, if callAfterInterval() is called again with the same function before the original timer had elapsed, the old timer is destroyed and the new one instantiated, making the function only run once, after a timer finally reaches the interval.
268
269 Added 'removePage()' and 'cyclePages()' functions to the dPageFrameMixin class. The former allow for a specific page to be removed, while the latter accepts an integer value and cycles the selected page forward (positive) or backwards (negative).
270
271 Added a clear() function to dMenu() for removing all current items.
272
273 Thanks to Brandon Singer, I've fixed a problem where passing kwargs to the constructor of any dObject subclass would silently pass any unhandled kwargs. The fix to the base problem was easy, but it turns out lots of our code was relying on this. I fixed the obvious places (code that gets run from dabo/ui/uiwx/test.py) but I suspect I've missed a few. If you get the exception:
274         TypeError: __init__() got an unexpected keyword argument '<argument>'
275 then it is due to this fix.
276
277 The minesweeper demo uses dabo.fastNameSet when creating the squares, and it turns out that when fastNameSet is True, autoBindEvents() doesn't run. Fixed.
278
279 Fixed dApp to raise the Activate/Deactivate events properly. Fixed dApp to raise Key events. The app gets key events if no window has stopped the event along the way. So now we can dApp.bindEvent(dEvents.KeyChar, func). Fixed dApp to autoBindEvents().
280
281 the menutype keyword can now be used to specifiy about, exit and preferences menu item. Dabo will then automatically use the correct wxID, so the menu items are automatically moved to the MacOS application menu.
282
283 Modified colorTupleFromName() to also attempt to interpret strings as HTML-style hex values.
284
285
286 Dabo-0.5 (2005-11-30) (Revision 1610):
287
288 Added a new class, DataSet, which lets you issue sql queries against local
289 Dabo data, not just against the backend. You can query, sort, and update
290 individual DataSets, and even join multiple DataSets - all without making a
291 call to the backend database server.
292
293 Began the work of making an embedded, internal, database engine (SQLite).
294 Starting with future releases, SQLite will be an integral part of Dabo.
295
296 Improved the autoBindEvents() to bind to matching methods in all parent
297 containers, not just the form. Auto-binding of events now works so well that
298 it is the default; you no longer have to manually call it. This is now
299 *really cool*.
300
301 Added a basic framework for drawing shapes on any window. Once created, the
302 shapes are accessible with an object reference. This should make dealing with
303 DC's a thing of the past for most uses. Way cool!
304
305 Sorted out MDI/SDI issues. By default, dForm on Windows MDI children and
306 dFormMain on Windows will be MDI parents. On other platforms, both dForm and
307 dFormMain will be SDI by default. The above statement is true for datanav
308 applications (ones generated by the AppWizard). The pure-Dabo default is for
309 SDI forms. In any case, you may change this by setting dabo.MDI.
310
311 Improved the datanav Quick Report feature, which can print a list of the
312 current records, mimicing the browse page, or a whole page of information on
313 one record, mimicing the edit page. Added the ability for the user to save
314 the generated report form for editing with the Report Designer or editing the
315 rfxml directly.
316
317 Improved showContextMenu(), and sorted out the difference between
318 MouseRightClick and ContextMenu events.
319
320 Fixed bug in Find dialog which would segfault on Windows and Mac. Added
321 replace functionality.
322
323 dCheckBox now supports 3 state mode, (True, False and None).
324
325 Fixed bug in dbMySQL that would interpret longtext or longblob fields as
326 ints.
327
328 Fixed dBackend to properly send Python None values as NULLs.
329
330 dForms now know how to read in cdxml files, created by the upcoming UI
331 Designer.
332
333 Fixed a bug in colorTupleFromString() that failed to return the correct
334 value.
335
336 Fixed some encoding issues with dReportWriter.
337
338 Added some handling for broken database connections.
339
340 Added some useful properties to dTreeView that improve its display and
341 editability.
342
343 Fixed some problems with the Hit event and dSpinner.
344
345 Improved report writer's paragraph handling.
346
347 Further removed user code from direct wx access in a few places. User code
348 can still get at the wx structures though, just not quite as easily.
349
350 Fixed mixed indentation problems, made some code cleaner, and added/edited
351 lots of docstrings.
352
353 Added some useful functions to dMenu to remove items and get references to
354 menu items.
355
356 Added a DynamicEnabled property to dMenuItem. Set this to a function which
357 will get run when the parent menu is shown to determine whether the menu
358 item is enabled or not.
359
360 Menu.Children will now contain object references to Dabo menus and menu
361 items.
362
363 Improved dToolbar somewhat, in anticipation of fully objectifying the
364 individual toolbar items. The ultimate goal is for the interface to
365 a dToolbar to be similar to that of dMenu.
366
367 Fixed some problems in dBizobj that make working with multi-table select
368 statements more sane.
369
370 Fixed a bug in dGrid which resulted in very slow deletion of rows, for
371 instance
372 after requerying the recordset and getting fewer rows that were in the grid
373 before.
374
375 Added properties ShowInTaskBar and FloatOnParent to dForm, and actually
376 made the following properties work: ShowMinButton, ShowMaxButton,
377 ShowCloseButton, ShowSystemMenu, TinyTitleBar.
378
379 Added a picklist mode to datanav Forms, showing only the select and browse
380 pages for a user to pick a record. The form dismisses on escape, and returns
381 the selected row's pk on enter.
382
383 Handling of None values in many UI controls, the bizobj, and the database is
384 much improved.
385
386 Added middle button and scroll mouse events.
387
388 Added some hooks to datanav.Form that allow developers to control the
389 select options for given fields. This would allow you to put, for example,
390 a radiogroup with a few choices instead of the default textbox.
391
392 Added connection manager to dApp, which maintains a set of open database
393 connections that your forms can reference by name. Added Connection property
394 to dForm.
395
396 Fixed bugs in and improved dSplitter, dListControl, dControlItemMixin, and
397 dListBox.
398
399 Phwew! All that in 7 weeks.
400
401
402
403 Dabo-0.4.2 (2005-10-07) (Revision 1418):
404 Added PrimaryBizobj property to dForm, which can replace calls to getPrimaryBizobj().
405
406 Added Accepted property to dOkCancelDialog, which gets set automatically if the
407 user pressed "OK".
408
409 Added AutoSQL, UserSQL, CurrentSQL, LastSQL properties to dCursor and dBizobj.
410 When time to requery, the SQL will come from UserSQL if set, or AutoSQL will
411 be regenerated.
412
413 Fixed a bug that kept changes to a new record from getting committed.
414
415 Added DefaultValues property to bizobj.
416
417 Added ListSelection and ListDeselection events to dListControl. Added properties
418 MultipleSelect, HitIndex, LastSelectedIndex, HeaderVisible, HorizontalRules,
419 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.
420
421 Added new property to dTextBox: StrictDateEntry. Changed the code for
422 interpreting dates entered by the user to allow for some less explicit
423 formats (YYYYMMDD, YYMMDD, and MMDD). If StrictDateEntry is False (the
424 default), these other formats will be used when interpreting dates
425 entered by the user.
426
427 Added field-level validation to the framework.
428
429 Improved support for decimal.Decimal, both at the database level and in
430 dTextBox.
431
432 Added new auto event binding, which automatically binds events based on any
433 defined callback functions. For example, if you have a method onMouseEnter()
434 defined, the dEvents.MouseEnter will automatically be bound to that method.
435 Inspired by PythonCard.
436
437 Added RegID property to forms, that allows for object registration
438 with the form. Not all objects require RegIDs, but if they have one,
439 they must be unique among all objects in a form. A reference to that
440 object can then be gotten from any other object by calling
441 'self.Form.getObjectByRegID(<regid>)'.
442
443 Linked RegID to the auto event binding, so that if a form has a method
444 of onHit_cmdOK(), and has a button with a RegID of 'cmdOK', the
445 cmdOk's Hit will get bound to the form's callback, automatically.
446
447 Improved dGrid and dColumn. Many properties added, and you are now in much
448 finer control over the display of grid column headers, grid cell attributes,
449 grid cell editors and renderers, and the grid itself.
450
451 Began work of allowing case-insensitive property values for properties that
452 take string values, and for properties that take a limited number of values
453 where the first letter is unique, you can set the property by just using the
454 first letter. dTextBox.Alignment = "c" sets the property to "Center", for
455 example.
456
457 Modified dBizobj, dCursorMixin, and dBackend so that the user can specify
458 the Unicode Encoding to use. Changed the default encoding from latin-1 to
459 utf-8.
460
461 Added feature to optionally draw sizer outlines on any form that uses dSizers.
462 This is currently accessible via an option in the View menu when the base
463 menu bar is in use, or you can turn it on/off programatically.
464
465 Grids now remember the column that is sorted, and resort when next instantiated.
466
467 Added support in dReportWriter for report groups and report variables, and
468 dynamic band heights (based on the height of contained objects). Added showExpr,
469 which is an expression that evaluates at runtime and if true, shows the object
470 in the report, and not if false.
471
472 Improved the automatic print preview report format in datanav. It now:
473
474     + prints column headers
475
476     + mirrors the font size, column width, cell vertical and horizontal
477       alignment, and column height of the grid
478
479     + mirrors the font size, header height, vertical and horizontal
480       alignment of the grid headers
481
482     + automatically reorients to landscape if the detail flows beyond the width
483       of portrait
484
485     + stops printing more columns if doing so would result in overflowing the
486       right margin
487
488 Key bindings are now case-insensitive.
489
490 Improved docstrings and API documentation.
491
492
493 Dabo-0.4.1 (2005-08-30) (Revision 1226):
494
495 Improved test framework for uiwx. Now you can run ui/uiwx/test.py and get
496 almost all of the dabo controls in one form, and they are the same tests
497 that you get when you run an individual control directly.
498
499 Factored out the saving/restoring of user settings out of dApp into
500 the separate dUserSettingProvider class, which can be subclassed or
501 overridded by the developers. Added properties UserSettingProvider
502 and UserSettingProviderClass to dApp.
503
504 Dabo user settings are no longer saved to .userSettings.ini in the app
505 directory, but are saved to the user's home directory (in ~.dabo/) or
506 if on Windows, in <User Profile>/Application Data/Dabo/.
507
508 Support for SQLite added. As of this moment, Dabo supports several major
509 open-source database backends: MySQL, PostgreSQL, Firebird, and SQLite.
510 Next on the list should be Oracle, Sybase, and MS-SQL.
511
512 Started work implementing a Quick Report in the datanav library, which
513 replaces the old HTML Print Preview. This uses the fledgling Dabo Report
514 Writer to create a PDF rendition of the dataset.
515
516 Added new property for all controls: StatusText. When set, and when the
517 form has a status bar, that text will show in the form's status bar when
518 the mouse enters the control.
519
520 Expanded the dabo.ui.strToBmp() function to accept an optional scale factor
521 or width/height values. If they are passed, the returned bitmap image is
522 sized to those values.
523
524 Added an optional parameter to the bizobj and cursor's getDataSet() method.
525 If you send a list of field names, only those fields are returned.
526
527 Fixed some lingering bugs in the dabo.ui.uiwx package and the datanav
528 lib. dWizard works better now. Improved dGauge, dLine, dBox, dRadioBox,
529 dListBox, dToolBar, and dSizers.
530
531 Added simple decimal support to dTextBox.
532
533 Work continues on dGrid, specifically dColumn is now better worked
534 into the "Dabo Way".
535
536 Added dabo.trace() function, that will drop you into pdb.
537
538 dConnectInfo reworked to have better property names.
539
540 Removed dependency on PIL and reportlab from Dabo. These are dependencies
541 still, but only if you try to run a report.
542
543 Added dabo.lib.StopWatch.StopWatch class, which is a light Python
544 stopwatch with start(), stop(), reset() methods and Value property.
545
546 This is a partial list. Both Ed and Paul have been very busy with Dabo
547 since 0.4 a few weeks ago. Lots of bugfixes and enhancements were made,
548 and we encourage everyone to upgrade.
549
550
551 Dabo-0.4 (2005-08-08) (Revision 1132):
552
553 Cleaned up the initialization of properties. No more initStyleProperties();
554 user code just puts their props in initProperties() or sends them to the
555 constructor in the properties arg or as separate named arguments. The
556 framework sorts out when the properties need to be set in the object
557 construction cycle.
558
559 Improved sizers by separating out the Halign and Valign properties,
560 eliminating the need to use the 'alignment' flags parameter. Added the
561 'Parent' property, making it easy to reference the control that 'owns'
562 the sizer. Also added the convenience method 'append1x(item)', which is
563 shorthand for writing 'append(item, 1, "expand")', since it is used so
564 frequently. The grid sizers now have 'isRowGrowable()' and 'isColGrowable()'
565 methods for checking the status of any row/column.
566
567 New dGrid, with dColumn and Header objects available for reference.
568
569 Lots of convenience functions written, such as those designed for simplified
570 access to common dialogs, are now built into the dabo.ui module. Examples:
571 getFile(), getColor(), getBitmap(), and the getString() functions, which all
572 create, show and destroy the required dialog window, and then return the
573 result. So, to present the user with a font selection dialog, just call
574 dabo.ui.getFont(), and the selected font will be returned (or None if they
575 canceled). Similarly, to show a common messagebox and get the response,
576 just use dabo.ui.info(), dabo.ui.stop(), or dabo.ui.areYouSure().
577
578 doDefault() much faster now (thanks to Alex Martelli)
579
580 Support for decimal.Decimal.
581
582 New classes: dColorDialog, dToolBar.
583
584 Work on the report writer and report designer progresses. The report designer
585 is now in the daboide project, not here in dabo anymore.
586
587 We finally have distutils support. To install Dabo, do the standard
588 "python setup.py install". Thanks to limodou for submitting the patch.
589
590
591 Dabo-0.3.2 (2005-03-21) (Revision 959):
592
593 Work continued on the Dabo report writer and report designer. The
594 writer will now read and write the rfxml file format, and will do some
595 simple reports. The designer will edit the rfxml files, again, with simple
596 formats. This isn't ready to use yet but the foundation is in place.
597
598 cursorToXML() added.
599
600 Encoding property added to databases.
601
602 dBitmap introduced.
603 dWizard introduced.
604 dTreeView introduced.
605
606 dGrid is being refactored, and is almost done. For a short time, it can
607 be found as dGridX.
608
609 We worked hard trying to get window closing not to segfault on Windows,
610 to get icons to display correctly on Mac, and to optimize Dabo in some key
611 bottleneck areas. We've greatly improved Dabo's performance on all platforms,
612 and Dabo now behaves less differently on each platform.
613
614 Improved data binding: controls don't need to bind to a bizobj, but to any
615 object expression.
616
617 Improved Firebird and PostgreSQL support.
618
619 Lots of improvements and bug fixes, in all three tiers.
620
621
622 Dabo-0.3.1 (2005-02-16) (Revision 802):
623
624 Separated creation of dCursor from dBizobj.
625 Added option to automatically create a dPanel in dForm.
626 Further Daboized dListControl.
627 Fixed display of a few of our icons on Mac.
628 Added bindKey() method, which binds a keycombo like "Ctrl+D" to a function.
629 Daboized dMenu, dMenuItem, and dMenuBar.
630 Minimal Tkinter (dCheckbox) working again (testing only).
631 Added ActiveControl property to dForm.
632 Various dSizer improvements were made.
633 We moved various things to better places in the source tree.
634 Connection info now saved in XML format.
635 Localization framework added. Courtesy Vladimir Sekissov.
636 Added Children property, which contains a list of a container's children.
637 dCommandButton is now known as dButton.
638
639
640 Dabo-0.3 (2005-01-10):
641
642 New UI controls added:
643     dFileDialog.py
644     dListBox.py
645     dListControl.py
646     dSplitForm.py
647     dSplitter.py
648
649 GridSizer added. Method calls to all sizers greatly simplified.
650
651 Menus simplified, removing wx-specific calls.
652
653 My favorite UI debugging tool: getMouseObject()
654
655 Framework classes now consistently use the standard initialization
656 methods: initProperties, initEvents, etc.
657
658 Child requeries and transaction support added to bizobj
659
660 Bizobjs now support the relationSpecs.rsxml format for adding child
661 relations.
662
663 Support for fulltext-type searches by word added.
664
665 Auxiliary (one-shot) cursors added to main cursors for better support
666 of different backends.
667
668 Improved unicode support in cursors.
669
670 Added support for PostgreSQL. Added template to ease creation of new
671 backend support scripts.
672
673 appWizard: added support for parent/child/grandchild/... relationships;
674 improved FieldSpecEditor.
675
676 appWizard/dDataNav* classes:
677     changed all wx.Sizers to dSizers
678     added "-ignore-" to visually indicate search criteria that will not be used
679     added save/restore of values on search page.
680     added 'Matches Words' option for fulltext searches
681     fixed bugs with searches for boolean values
682
683 Controls:
684     Now auto-name themselves. Unique name enforcement added.
685     Added _IsContainer attribute to distinguish controls that can add other controls to themselves.
686     Added support for setting colors by name instead of RGB tuple.
687     Fixed resizing bug that would not allow a resized object to be made smaller.
688
689
690 Dabo-0.2 (2004-09-20):
691
692 Continued improving FireBird database support, improved MySQL support. Added
693 preliminary SQLite support.
694
695 Save passwords encrypted.
696
697 Added logger objects to send program output to, instead of directly to stdout.
698
699 Began abstraction of Tkinter at purely an experimental level.
700
701 Added some new controls, such as a better date control and a combo box.
702
703 Brought in some Foxpro string functions from the openfox project.
704
705 New event model, greatly simplifying the binding of events, the raising of events,
706 and the subclassing of events to define new events.
707
708 Added preliminary unicode support to the cursor level.
709    
710
711 Dabo-0.1.1 (2004-06-13):
712
713 Dabo-0.1 (2004-05-10):
Note: See TracBrowser for help on using the browser.