- dCursorMixin: Refactored CursorRecord out of dabo.db.dCursorMixin into dabo.db. Now both dCursorMixin and dBizobj can use the class to instantiate their own Record instances. This effectively means that assigning to biz.Record.field no longer calls cur.setFieldVal() directly but instead calls biz.setFieldVal(), allowing easy interference to be run by appdev code.
- dBizobj, dCursorMixin: improved handling of compound primary keys.
- New: Wrapped the wx.media.MediaCtrl to create the Dabo dMediaControl, which allows you to add video and audio to your app.
- dPref: Added 'prefDb' parameter that allows to specify an explicit preferences database.
- dBizobj, dCursorMixin: Added the ability to specify which record to setFieldVal() on, by sending the pk of the row to set.
- dGrid: Added the VerticalHeaders property. When True, the header captions are written vertically; i.e., at a 90 degree angle, which is useful if you have narrow columns and need to display a label for the column. Thanks to Bronwyn Woods for the idea.
- dGrid: Added the AutoAdjustHeaderHeight property. When True, the HeaderHeight of the grid will change to fit the Captions, whether they are written vertically or not.
- dGrid: Added dColumn.CellFontBold and DynamicCellFontBold. However, it isn't displaying on Linux. Left comments in place to tackle later.
- dPemMixin: Changed the draw object routines to accept an optional dc for drawing.
- dGrid: Changed the grid header drawing to use the same dc as the rest of the header.
- Added the Object Inspector, which allows you to "inspect" objects in a running Dabo application. It can be activated by pressing Ctrl-Shift-I.
- dPemMixin: Added code to account for platform differences in the way that forms report their absolute position on the screen. Under Windows, instead of the position of the entire form, the position of the interior (minus title bar, menus, borders) is returned.
- dDockForm: Added import of agw version of the AUI classes, if available. Noted that several properties no longer seem to have any effect when changed; will need to look at this in more depth.
- dPemMixin: Improved the calculation for absoluteCoordinates(). It was failing to take into account that for forms, we should always use (0, 0) as the Position from which we calculate.
- dBizobj: Improved the DataStructure changes detection.
- dSizerMixin: Added the 'Form' property to sizers. It will return the form with which the sizer is associated, or None.
- dSizerMixin: Added the getContainingWindow() method that will return the window that contains the sizer, even if the sizer is nested within other sizers.
- Added the ability to embed the _Shell class of dShell in non-dShell forms.
- dToolBar: Added the ToolbarItemClass property, allowing you to define your own subclasses for a toolbar's items. The default remains dToolBarItem.
- dbPostgreSQL: Made a change to the way the rollback was being called, based on a suggestion from Jacek KaĆucki who experienced issues with losing a transaction.
- dDateTextBox: Fixed problem with the calendar ignoring the setting for FirstDayOfWeek
- Added some saner minimum sizes in dPemMixin.
- Change in getEncoding() behaviour to use getdefaultlocale() instead of getlocale() function, which returns values usable in the rest of the framework.
- Changed how the UI module is imported into the main dabo namespace.
- Changed the default for self._fontSize from None to 10, as some routines were expecting it to be an int and throwing errors on receiving a NoneType value.
- dabo module: Now initialize localization services *after* the logging system is in place, or dLocalize will cause a traceback when trying to log problems.
- dApp: Refactored dApp.default_form and dApp.formsToOpen into properly-named properties.
- dbFirebird: changed rdb$field_length to rdb$character_lenth on request of Werner F. Bruhin.
- dbFirebird: Improved handling of non-ASCII values in connection parameters.
- dBizobj: Added suppoort for the scanRequeryChildren parameter in the scanRows method to override ScanRequeryChildren property.
- dBizobj: Added the _CurrentCursorKey property.
- dBizobj: Clear the bizobj's cursorRecord when DataStructure and VirtualFields are set, as well as in requery().
- dBizobj: Fix for ticket #1351, where the scan method doesn't update grandchildren bizobjs.
- dBizobj: Limited child bizobj FK updates to the new rows only.
- dBizobj: Moved the setCurrentParent() call outside the check for RequeryWithParent, as the setting of the parent should happen unconditionally. However, this will result in the side-effect of an implicit requery() if the cursor for that key doesn't exist yet, *and* RequeryOnLoad is True.
- dBizobj: Refactored cacheExpired() a bit, with a check for lastRequeryTime being None.
- dBizobj: Removed the recently-added force argument from requeryAllChildren, in favor of adding a note to the docstring that developers should explicitly call self.expireCache() before requerying, which ensures all cursors (not just the current one) in a bizobj will get requeried next time the record becomes active.
- dBizobj: setFieldVals() now calls setFieldVal() for each field, so that the afterSetFieldVal() hook will be fired when the field changes.
- dCursorMixin: Added some verbosity to the class exceptions.
- dCursorMixin: Fixed issue with updating field that is part of compound PK. Now _newRecords reflects such changes.
- dEditBox: Improved the handling of the WordWrap property. Fixed some punctuation in the Love Boat lyrics in the test code that had been annoying me for some time. NOTE: the horizontal scrollbar doesn't seem to be drawn in OS X.
- dEditor: Implemented the select() method for dEditor.
- dEvents: Event logging was displaying '?' when getAboluteName() couldn't find a name for the object. Better to use the default __str__().
- dGrid: Added DrawObject.draw() positioning condition to fix header captions display out of the visible area issue.
- dGrid: Added the SortIndicatorSize and SortIndicatorColor properties, which allow you some control over the appearance of the little sort triangle displayed in the header when that column is sorted.
- dGrid: Fixed _paintHeader() issue if it's called from outside of the OnPaint event.
- dGrid: When using dynamic properties, if you need to call grid.getValue() to determine what dynamic value to return, you would hit an infinite loop. I added a parameter to the overridden GetValue() method to control this.
- dLabel: Fixed an issue where resizing could cause an infinite loop.
- dLabel: Made some changes to how WordWrap works; it was behaving incorrectly on some platforms.
- dLabel: Reduced the flickering in the dLabel demo.
- dLed: control wasn't always resizing properly because of the underlying panel's minimum sizer settings. Fixed.
- dMediaControl: Added the ability to clear the control by setting Source = None.
- dMediaControl: Added the ability to drop Source files on the control and have them loaded.
- dPemMixin: Removed manual Ctrl+A support code for Windows platform, since it works properly since wxPython 2.8.10 version at last.
- dPref: Added the __contains__() method so that pref objects support the "x in y" syntax for determining if a key exists in a given preference object.
- Fixed a problem that was due to the way we were calling the super() of __init__(): we were taking the keyword params 'properties' and 'attProperties' and passing them as non-keyword params. This was causing some subtle errors that mostly manifested in the Class Designer.
- Fixed test.py to set the width of the frame, and not the object themselves. Previously, the MinSize for the object was being set via an explicit Width setting, making resizing problematic. Now the form is sized, allowing the sizer to handle the sizing of the object.
- Grabbed the latest translations from launchpad and added them to the locale directory.
- Modified the getItemIndex() of dMenu method to take either a caption (existing behavior), or an actual menu item.
- Moved the methods that gather system information out of the About dialogs and into the uiwx module.
- On Windows, scriptDir was 'C:\\ss\\ui' while appDir was 'c:\\ss', causing isSubDir() to fail. Fixed but will cause problems if someone has meaningful case-sensitive directory names, but that would seem to be stupid so I'm not worrying about it.
- reportWriter: Added CurrentBandName and CurrentBandObj reportWriter properties, inspired by Nate's ticket #1380.
- reportWriter: Raise an exception if invalid rfxml passed, instead of printing the message and then having an exception thrown because form isn't defined.
- ui module: Added the sendIdle() method to help with thread message processing.
- ui module: the latest wxPython changed the return value of HitTest() to sometimes return a single value instead of a 2-tuple, so code was added to handle this properly.
- Updated dLocalize to not prevent the program from running if the translation for the language is not found. Added support for additional aliases for languages.
- ClassDesigner: Added an option to the dialog that appears when you first run the Class Designer to re-open the last class that you worked on.
- ClassDesigner: added the dMediaControl to the Class Designer
- ClassDesigner: Fixed an issue reported by Sibylle Koczian in which running the wizard for adding controls from the data environment would throw a "String must be present in the choices" error.
- ClassDesigner: Fixed an issue with the restoration of lists and tuples as values in cdxml files. Trac issue #1406.
- CxnEditor: Added provisions for handling application CryptoKey values. Note that when the file is saved, the encrypted password is saved, but not the encryption key, for obvious reasons. In order to re-edit the file, you will have to enter the CryptoKey when opening up a saved file. If the PyCrypto package is not installed, none of the CryptoKey changes will be visible.
- PrefEditor: Removed the custom PrefDialog class, as it is no longer needed.
posted at: 08:20 |
path: /Announcements |
permalink