Squashed commit of the following:

commit 6c710da85e26422dfe82350bc84b4e9a2058e96d
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed May 8 15:21:37 2013 -0700

    Commit c4cfbb0 (2012-03-12) introduced a test failure; fixed.

    Before the referenced commit, adding a new child record and then
    calling cancel() on the parent would remove the newly-added child
    record; after the referenced commit, it wouldn't find the newly-
    added child record to cancel.

commit f7d6d0acae83bf0d7d2e79e317ca9dfb666e7ba1
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed May 1 16:35:37 2013 -0700

    Added float/decimal conversion cases to db tests.

    Fixed some tests on dConnectInfo and dConnection to test on
    more generic Exceptions rather than TypeError specifically.

    Refactored the schema creation for the tests to keep it
    generic if possible (MySQL, SQLite, and Oracle were all using
    the exact same code, copied.)

commit e20f2a49ba5a50be1790f23081a0e7bd7b1348e3
Merge: fa077b4 b52baf5
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed May 1 15:28:55 2013 -0700

    Merge branch 'master' of github.com:dabodev/dabo into working

commit fa077b479db6b5ca566164673f1de2266a590b32
Author: EdLeafe <ed@leafe.com>
Date:   Sat Apr 20 11:53:55 2013 -0500

    Added better unicode handling in the operations that write out files.

    Also updated all file interaction to use file() instead of the deprecated open().
    Replaced the file operations with context managers.

commit 5f8e87dfadfadff75bb43e5f76b62c7610c5d7b7
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Mar 16 12:52:33 2013 -0700

    TypeError check needed sometimes.

commit d1949bb4c50a48a290f2f46f161bd84d4e3f832a
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Mar 15 19:13:07 2013 -0700

    Fix typo in dBizobj added recently.

commit 97f2ee45f9a9a7144ba3d363cf3d7001ae47858a
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Mar 13 06:03:14 2013 -0700

    Fixed SyntaxError introduced in the localization set of commits.

commit f55f2b4cc7d274a4cb6c515ba4a2638456ed5b68
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Mar 13 05:46:21 2013 -0700

    Add default value to dApp.getAppInfo().

    Previously, if an appInfo value wasn't registered, None would be
    returned. This allows the caller to determine the default value.

commit 61d3e298119a839399b56f1a2ba672965f204229
Author: EdLeafe <ed@leafe.com>
Date:   Mon Mar 11 17:18:10 2013 -0500

    Found another file with mixed indentation.

commit e2a4cb8ebe230eaaa2f14dc6a4e6479243bdf0fe
Author: EdLeafe <ed@leafe.com>
Date:   Mon Mar 11 10:43:51 2013 -0500

    Updated the translation extraction script.

commit b1373753af770fd5da845a487aa998a7801fe878
Author: EdLeafe <ed@leafe.com>
Date:   Mon Mar 11 08:59:08 2013 -0500

    Fixed some mixed indentation introduced in a recent commit to fix localization.

commit 2af4399dd250db537ccc09f49109f1ac07f57e27
Author: EdLeafe <ed@leafe.com>
Date:   Mon Mar 11 08:51:50 2013 -0500

    Re-generated the .pot file and re-extracted the translations.

commit 546de04e3025f7f5f50dd875ad148b6d8c41bc3f
Author: EdLeafe <ed@leafe.com>
Date:   Thu Mar 7 17:13:51 2013 -0600

    More localization changes.

commit 6c8b3102789c56b5df770d6dbf98c78d77efb2b0
Author: EdLeafe <ed@leafe.com>
Date:   Thu Mar 7 10:03:43 2013 -0600

    Pulled the most recent translation files from Launchpad.

commit 542be67765085460ef63676417b1730123955a36
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Mar 1 16:53:16 2013 -0800

    Follow through with GridHeaderPaint event removal.

    I neglected to catch the reference to this in ClassDesigner when
    removing the GridHeaderPaint event last month. Thanks Sibylle for
    catching this.

commit 590cc6a1f39e17c3473738b67e7d38a62737cf31
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 25 20:38:24 2013 -0800

    Added better buffer (blob) support.

commit 9f7e7e0ab1035ec7c5e74e6e4c4bbe608becd3b5
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 25 20:37:23 2013 -0800

    Removed .svn cruft from setup.py

commit 6a48f0a77add11618b5b941bfba71ffb6acb78e5
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Feb 22 19:52:42 2013 -0800

    Add args and kwargs to VirtualFields.

    Now you can specify args and kwargs as well as the function to
    call in VirtualFields. Do this like:

    biz.VirtualFields["field"] = \
      {"func": self.myFunc, "args": (arg1,), "kwargs": {"arg2": val}}

    It's handy for making one function to handle many virtual fields.

commit a18bed095679558e0e8c8ca6daf2dee064a32849
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Feb 22 19:47:38 2013 -0800

    Add dabo.settings.convertFloatToDecimal.

    This specifies whether floats get converted to Decimals at the
    database layer when not explicitly specified in DataStructure.

    The default is True to match historical behavior.

commit 83ff4a37d490fb6f7ce0f78ce7e4125b746e03c7
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Feb 21 17:09:54 2013 -0800

    Typo fix.

commit 887341ef044e829a3f9f4f13ca614698a9d2acdd
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Feb 20 12:16:02 2013 -0800

    Fix miscategorizing gsprint to True.

    This must have started happening after my change to shell=True
    to keep cmd.exe from flashing up on Windows the other week.

commit ac758950fb580f9c4a730215915fa549ade97fb9
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 19 22:10:21 2013 -0800

    Fix segfaults in editable columns.

    I was getting segmentation faults in Linux. Turning off the updating
    of the selected cell when it is editable resolved the issue with no
    observed negative effects.

commit 2dde195bc7c1949df060060b0b9f13935f3b9ef0
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 19 16:25:49 2013 -0800

    Remove trailing whitespace.

commit bad6ed191a122d39bdb3ba34ff426838388bf288
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 19 16:25:17 2013 -0800

    Fix remaining self.super() calls in ReportDesigner.

commit 31a46790282e68ff133832ae3788a13f3d2bfaa9
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 19 16:03:02 2013 -0800

    Fix to layout() dLabel when the caption changes.

    This has been bugging me for years and I finally did something
    about it. When you change the caption of a dLabel, it isn't
    enough to refresh() it, you need to call layout() on its Parent,
    which I've been doing manually in my code and tending to forget
    until I encounter it the next time.

    Fixed to automatically call that parent.layout() when dLabel's
    Caption changes.

commit 9dcdeaf0af0f37a01cd20321d3236887427777a6
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 19 13:40:58 2013 -0800

    Add getContainingPage().

    Controls can call this to get an object reference to the page that
    contains the control, if any.

commit d70b0af1e1792f1e73c22a835448ea1b2f746787
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 18 15:47:35 2013 -0800

    Readying 0.9.9

commit ecf70419c52347b682683bed6c6b54622be07d8d
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 18 15:27:00 2013 -0800

    Reverted 3 recently-made settings changes.

    implicitImports is True again.
    importDebugger is True again.
    localizeDabo is True again.

commit 424d3a9e641299acc554be9ab508c69d1aa31cda
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 18 00:23:30 2013 -0800

    Allow specifying fields that don't exist in getDataSet()

    When sending the flds argument to getDataSet(), if a specified
    field doesn't exist, just omit it from the return value instead
    of raising a KeyError.

commit cf6818ac1020f073391cfb9f6f17296013c1e7e5
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 17 17:23:24 2013 -0800

    Fix status bar to not show bogus rowcount.

commit f77314ea503732731e7b2a5579997f471410b788
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 17 17:14:25 2013 -0800

    Fix type from last.

commit ffd550564ad3d387d7a52a05dfe041ad5bdbdbe7
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 17 16:03:49 2013 -0800

    Add biz.clear() which removes all data.

    This removes all cursors from the bizobj and all children. It is
    intended to be used during batch-adding of new records, to keep
    RAM usage constant.

    Prior to this, RAM usage of my bulk-importer quickly grew to over
    1.5 Gb and performance slowed to a crawl, and I had to kill the
    process. After adding biz.clear(), RAM usage quickly grew to about
    150 Mb and stayed around there for the duration of the bulk import,
    and performance didn't degrade over time.

commit 110790ffa6e8ded639509eb3f2822ecc55cac6b1
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Feb 15 17:31:08 2013 -0800

    Add missing dBizobj.removeChild().

commit 08e4165f8dceb9247b3deb11c647e0d77cf07d05
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Feb 14 14:18:27 2013 -0800

    Fix to save sub-form geometry when closing.

    Previously, sub-forms wouldn't have their saveSizeAndPosition()
    called until the app was already gone, which would result in
    their window geometry not being persisted.

commit 84141b4af5fed0e1138cd5c2077f6944a9542954
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Feb 14 10:06:55 2013 -0800

    Fixed remaining self.super()'s in the codebase.

    I'm not sure why I missed these from before. The only real issue with
    0.9.8 due to this is pressing Ctrl++, Ctrl+-, and Ctrl+/ for setting
    the font zoom in running forms.

commit bb6938c89f692bb7af794c521259dee642412925
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Feb 13 21:27:01 2013 -0800

    Add missing word to docstring.

commit 64f7948e2cdc21dda1c11b897a3051465d5fb7c3
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Feb 13 11:54:23 2013 -0800

    Rework behavior when restoring bad values.

    Previously, when restoreValue() resulted in a ValueError or
    TypeError when setting ctrl.Value, we'd set Value to getBlankValue().
    Now, we log an error and leave Value at whatever it is currently
    set to, which will be the blank value by default.

    This allows dControlItemMixin-based controls (dListBox, dCheckList,
    etc.) to restore the valid values: prior behavior would cause one
    bad value to keep all values from restoring.

commit 0991717902e4a0eb826d9922299565144a4708c8
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Feb 13 09:34:52 2013 -0800

    Add removeWhere() as a complement to addWhere().

    This follows along with last week's removeField() addition. We
    should also follow through with removeJoin() but I don't need
    that quite yet.

commit 0e733c0842f5cba858033bf32670c8ac11bee9b3
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 12 17:23:10 2013 -0800

    Refactored ResizableRows in dGrid.

commit c480a3b943e2adac48b57e8581b262e6bfdad9ec
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 12 14:23:34 2013 -0800

    Add property dGrid.SaveRestoreDataSet.

    This is analagous to the SaveRestoreValue property in the data-
    bound controls. It allows for editable grids to be persisted
    between runs. I'm using it to make a where clause builder for
    the app I'm currently working on.

    Performance, even for very small datasets, doesn't seem very good,
    but it does work. Obviously only use this sparingly, and not for
    DataSource-bound grids, and not for large grids.

commit 6d2dcd19a4f377d3993c993fecb945cbb48e4065
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Feb 12 12:35:49 2013 -0800

    Don't sort the rows if grid or col not Sortable.

commit fd55e4747e9070c9a9af438ef1f556644bd3aefd
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 11 15:08:32 2013 -0800

    Edge-case bugfix: was trying to quantize None.

commit 81bfc5e880150836dd08de4e954d519ffa4707cd
Merge: 0c8dc4d 5234a1e
Author: EdLeafe <ed@leafe.com>
Date:   Mon Feb 11 06:59:31 2013 -0600

    Merge branch 'working' of github.com:dabodev/dabo into working

commit 0c8dc4d53d6698f66dca759db74ee7d1450cfeaa
Author: EdLeafe <ed@leafe.com>
Date:   Mon Feb 11 06:58:58 2013 -0600

    Added code to handle the case where a grid column had already been removed from its parent before its release() was called.

commit 133304b3fc3005dfd022681d7e502fc1267b4713
Merge: b1177ed 0054ac6
Author: EdLeafe <ed@leafe.com>
Date:   Mon Feb 11 06:49:38 2013 -0600

    Merge branch 'master' of github.com:dabodev/dabo into working

commit 5234a1ebf74db0da0f7244dbc89e0abff6328804
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 22:39:10 2013 -0800

    Remove subversion-related code block.

commit 3bec7fefb9d072e7907e9edc5849db15c25f6feb
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 22:38:18 2013 -0800

    Removed temporary version attribute.

    This was there for our transition from subversion to git, for the
    web update feature, and is no longer needed.

commit b771b88c52b00892f616e9250ccff3a911a58209
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 21:52:45 2013 -0800

    Revert "Revert "Settings changes for 1.0""

    This reverts commit 4b9e1d7889e441a268a0b3ea2fa8c7e67b408afd.

commit 278b867d27688eaf847f16993d101ea1c4a3a649
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 21:51:42 2013 -0800

    Revert "Revert "Removed self.super() and self.doDefault().""

    This reverts commit bd566b103a3c43c5d8a14913cb57c997dbb7b648.

commit 74a7d493289abdb6a73538f615516c3026227adf
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 21:49:42 2013 -0800

    Revert "Revert "Removed GridHeaderPaint event.""

    This reverts commit b31c57e53d8ad52c4c6e77da4f289daa4c043edf.

commit c02271e395b39e63f2b665c9e281cc1a2bce8e8a
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 21:49:09 2013 -0800

    Revert "Reverted removal of datanav2 (it's in working-1.0 now)"

    This reverts commit 23953213a8e8f08ceedf70c6bd2480b264bd14e8.

commit ff88b81cd3575143c385a32cda33a8777e15625a
Merge: b1177ed 0054ac6
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 10 18:12:50 2013 -0800

    Merge branch 'master' into working

commit b1177ed6c2e67071b67f3e62106d59beb5783fb3
Author: EdLeafe <ed@leafe.com>
Date:   Sun Feb 10 15:35:59 2013 -0600

    Fixed a bug that prevented the onHit event handler from appearing in the Class Designer methods.

commit 34e9e7db457ae75917cc31867711893404537021
Merge: bdfd704 ddc640a
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Feb 9 22:08:54 2013 -0800

    Releasenotes and version for 0.9.8 merged from master.

commit bdfd7047e668104edc782b8ed37fc91a32a4b154
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Feb 8 22:51:27 2013 -0800

    Fixed appendItem() to work with multiple-selections.

    Prior to this, calling appendItem() on a dCheckList for example
    would result in all the previously checked items being cleared.

commit b0f54cf8eb10bd0a6ce0325ded004a04b1d3e4b1
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Feb 7 12:31:41 2013 -0800

    Fix dCursor from trying to save derived fields.

    Prior to this commit, saving new records would fail if derived
    fields were present (IOW fields from a table other than the
    table we are saving to). Fixed by making sure the table as
    specified in the DataStructure for the field matches self.Table.

commit 7a39a5fc743bf7b69b0cb0b5c2e678a2aaf5de0b
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Feb 6 22:12:25 2013 -0800

    Don't persist derived DataStructure.

    The only time self._dataStructure should be saved is if it was
    set explicitly by assigning to self.DataStructure. Otherwise,
    it should be derived fresh in the first access after each requery.

    I have a set of bizobjs where the user can add or remove fields
    between requeries, and the DataStructure was staying the same
    which wasn't expected.

commit 6fcc6830205b2f160a65a59672d689674106d800
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 4 23:27:42 2013 -0800

    Keep black cmd.exe box from flashing on Windows.

    I don't know why, but after upgrading PyInstaller to 2.0, the
    Popen() call to gsprint was flashing a cmd.exe window on screen.
    Changing shell=True fixes it for some reason.

commit eb5a8b10b4fd745cc098817d98ecd19298aeaff4
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Feb 4 12:11:56 2013 -0800

    Fixed behavior for Edit forms.

    Edit forms only have edit pages, so this code isn't relevant and
    causes IndexError upon canceling.

commit 3ee0c5b8301b8230c14c9f42704c5fad7104c17e
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 3 14:43:00 2013 -0800

    Removed deprecated SQL property; deprecated setValues().

commit 361901ce098fc3ce1e9e1b3b0282d24a44cca6a2
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Feb 3 14:16:36 2013 -0800

    Extended biz.new() to accept fields to set.

    You can now make calls like:
      biz.new(name="Joe", city="Springfield")

commit 5183bf0e36bf975c22dadc7751e535d3de808ec0
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 22:15:01 2013 -0800

    Sort-related minor enhancements.

    Refactored code in dCursorMixin to use already-defined
    function for moving to the old pk after the sort.

    Added a form.update() after a grid sort so that the
    row number is reflected correctly in the form's status
    bar and potentially elsewhere.

    Removed the check for rows in self.DataSet from the
    gridHeaderMouseUp event handler, which greatly sped up
    the sort processing time. Checking for DataSet when we
    are using DataSource calls biz.getDataSet(). Pretty
    misdirected of us to do that for no real reason.

commit 992fbfbfcf5cc095d7f3d4b1f562f8a0b4d09b8b
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 21:56:04 2013 -0800

    Fixed bugs in processSort introduced with _resolveColumn().

commit a4f6db9c119469b3e483babdcd1be19771bf1515
Merge: 6da4a46 d876559
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 21:43:53 2013 -0800

    Merge branch 'working' of github.com:dabodev/dabo into working

commit 6da4a46231ffdd91190d6abd962353a7e2cd74e9
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 21:39:25 2013 -0800

    Removed a years-old hack that is no longer necessary.

    This was causing the calendar popup to be misplaced on Linux.

    Also, set focus to the calendar right away, so that the keys work without
    having to click first.

commit d876559f1c460ab546c35020d1d4f5df9ab3344e
Merge: a9b02a4 920ba97
Author: EdLeafe <ed@leafe.com>
Date:   Thu Jan 31 20:31:36 2013 -0600

    Merge branch 'working' of github.com:dabodev/dabo into working

commit a9b02a44a4bd21d7b356fb9001b89c5d70af98d9
Author: EdLeafe <ed@leafe.com>
Date:   Thu Jan 31 20:31:17 2013 -0600

    Removed unused code that was commented out 4 years ago.

commit 920ba9766c07aa092153b4000856714f8ab556bd
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 16:28:55 2013 -0800

    Confirm ticket #1430.

    The first dropdown calendar opens correctly. But subsequent ones
    for different dDateTextBox instances open in the same position
    as the first. This modified test confirms the issue.

commit 418570711bf265cdbbd715198a3353ec3a1bc9df
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 31 16:23:38 2013 -0800

    Fixed add/removeColumns to once again allow a sequence.

    The last changed correctly allowed for *columns, but no longer
    allowed for sending a sequence.

commit 8ea10467a685f34187941f483a2197a48ee7d3b0
Author: EdLeafe <ed@leafe.com>
Date:   Thu Jan 31 08:59:45 2013 -0600

    No logic changes - just removed trailing whitespace.

commit a171b599efeb2180103b069eff660cb7d4616620
Author: EdLeafe <ed@leafe.com>
Date:   Thu Jan 31 08:30:03 2013 -0600

    No logic changes; just cleaned up trailing whitespace.

commit b990788b05dd98c3c8ae0ae5a19d710e34f8b885
Author: EdLeafe <ed@leafe.com>
Date:   Thu Jan 31 08:27:51 2013 -0600

    Added the _resolveColumn() method to simplify giving the user the option of passing either a column reference or a column index to a method.
    Changed the addColumns() and removeColumns() methods to accept variable length parameter lists instead of having to pass a list/tuple of columns.

commit cccddc8f928ac42643384dc471646cecb9bd6d5f
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 30 22:39:50 2013 -0800

    Added removeColumns() and addColumns() to dGrid.

    Performance was horrible calling addColumn() or removeColumn()
    repeatedly, because of the _syncColumnCount() and fillGrid()
    calls, and I didn't want to set inBatch to True and then have
    my code call those functions directly.

    This fixes it nicely.

commit f353459a1543a499838ebb3e64fccad8ef49c236
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 30 16:11:34 2013 -0800

    Only addField() when it doesn't already exist.

    I believe this to be sane behavior - I can't think of a use case
    where you'd really want the same field added twice to the field
    clause.

commit bfe3b8a5f46e808fab777fa43ce1902c25067de6
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 30 16:09:53 2013 -0800

    Added ProcessTabs property to dEditBox.

    This allows the user to type tabs into the edit box, at the
    expense of no longer being able to navigate with the tab key.

    Default is False.

commit ba679f1836efdfd718fec689e92921826ba878bd
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 30 10:36:31 2013 -0800

    Added removeField() as complement to addField().

    I'm building a UI where the user can choose which fields to
    include, and wanted to call biz.addField() and biz.removeField()
    as appropriate, immediately upon their selection, as opposed to
    clearing the field expression and adding back all the chosen
    fields.

commit d11705508546dca1baa0ee4030c9be4306c7b908
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 29 16:49:06 2013 -0800

    Fixed artifacts when moving column with mouse.

    On Linux at least, after moving a column with the mouse, the
    header is placed correctly but the data is still lined up in the
    old format (not aligned any longer with the header) until I
    jiggle the grid. The immediate refresh call fixes it, but only
    in concert with the delayed refresh call.

commit 0b8904d176da0c952b1319faa8066818b46933ac
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 29 12:32:06 2013 -0800

    Fix to instantiate only one login dialog instance.

    Prior to this, the login dialog was destroyed and reinstantiated
    during every login attempt.

    Fixing this required destroying the login dialog at app start,
    after the security manager had run its stuff, but doing this
    required  working around a segfault that would occur I guess
    because the login dialog is a child of the splash screen, so
    reparenting to None was necessary. But, our code assumed we'd
    never reparent to None, so I had to fix that as well.

commit dd6124995a0a77e2512fde6dbf8e8641a9a897a5
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 29 11:43:50 2013 -0800

    Ignore Name bindings in form in autoBindEvents.

    My prior commit opened up allowing to bind on Name, but Ed correctly
    pointed out that this would make no sense binding at the form level
    to events from objects all over the hierarchy, potentially with the
    same name.

    With this change, the form won't bind to the event with a Name
    reference except in the case that the object is a direct child of
    the form.

commit d56aab300295a40427d68cb8a28d2e60c86fb99f
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 29 11:06:40 2013 -0800

    Fix autoBindEvents to work with Name.

    This has bugged me for a long time. I code up a panel that has a
    bunch of subobjects, and I want the panel to respond to the events
    of the subobjects. Something like:

    ```python
    class Pnl(dabo.ui.dPanel):
      def afterInit(self):
        dabo.ui.dButton(self, Caption="hi", Name="but1")

      def onHit_but1(self, evt):
        print "hi"
    ```

    Previously, that onHit_but1 handler wouldn't get called, because
    I set the Name of the button, not the RegID. It doesn't make sense
    to set the RegID of the button, since the form has no business
    even knowing it exists. And I don't want to have to explicitly
    bind the event because I'm lazy and like simple code.

    This commit fixes the autoBindEvents() to use the RegID if it is
    set, but Name otherwise.

commit 144746cc3e2f781b8832d333ee6f7c2b360adf96
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Jan 27 20:53:03 2013 -0800

    Added dates of release.

commit 7993249af451a2eb6bef92541d310619fa713885
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Jan 27 20:47:23 2013 -0800

    Reformatted the v0.9.6 entries to match.

commit c9808549af763038816730ed19df8466739bde80
Merge: b378088 0231277
Author: Paul McNett <p@ulmcnett.com>
Date:   Sun Jan 27 15:12:19 2013 -0800

    Merge branch 'master'; commit 'HEAD~1' into working

commit b37808896132917e8fa5fce519822e3a178eba56
Author: EdLeafe <ed@leafe.com>
Date:   Sun Jan 27 10:13:11 2013 -0600

    Running dShell directly was crashing due to dPemMixin not yet being in the dabo.ui namespace when the control classes were being imported.

commit 98045dce658d7ff03c1c098ddfc76263331f0cf5
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 26 20:47:41 2013 -0800

    Fix conflict between splash and login dialog.

    The splash screen and the login dialog both get shown before the
    main event loop begins, and the login dialog is modal. Something
    in this combination results in the login dialog becoming a child
    of the splash screen, and therefore when the splash timeout is
    released and the splash destroyed, it takes the login dialog with
    it.

    The solution is to defer destroying the splash screen until after
    the login dialog has already been shown and hidden.

    Another problem surfaced during this: when the login dialog was
    hidden, the callAfter in dPemMixin._setVisible referred to
    self.Parent.layout, but in this case self.Parent was a raw
    wx.Frame and hence had no layout() method. Fixed by wrapping the
    call in a try, catching AttributeError.

    Tested on Linux with wxPython 2.8.12.1 and Python 2.7.3.

commit 66519b72c14cf93b98c29652ddfbd2596ec5e198
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 26 06:53:53 2013 -0800

    Fixed inncorrect argument order in warning.

commit b20099db90abf50bcfd3af7e04090c55693e84f6
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 26 05:54:14 2013 -0800

    Remove uuid from dabo (in stdlib now).

    Essentially the same uuid library has been part of Python's
    standard library since 2.5, and 2.5 is the minimum Python version
    we are requiring for Dabo. Therefore, it no longer needs to be
    included in Dabo.

commit c3a6035e441d96c387114ce3571725a95a1229c2
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 25 16:11:16 2013 -0800

    Display the appName and appVersion in About.

    Instead of just saying "Dabo" as the header in the about screen,
    Fill in the appName and appVersion from the App object. Also,
    by default fill in app.addToAbout using the app's docstring.

commit beb98eb4e8d7b3bb444040d8783ae83c22fe6ea5
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 25 16:09:04 2013 -0800

    Don't cause keyboard errors in empty grids.

    When the grid has no columns, don't try to respond to incremental
    searches or other keyboard actions.

    I was mocking up a form with no columns in my grid for now, and
    hit a traceback because self.Columns was empty.

commit 6618c3c049d868bf953c7e6b421e055f0b8935da
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 24 16:53:38 2013 -0800

    Fixed DynamicCell properties for dColumn.

    Removing the delayed call was the key.

    Added __cachedAttrs to avoid multiple processing for the same
    (row,col) in the same 10 second timeslice.

    I still need to test this on Mac and Windows but it is working
    sanely on Linux.

commit edc0e5cbd28b717242a268491b7c31a1732be6a3
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 24 13:47:04 2013 -0800

    Fix getBizobj() to not implicitly set DataSource.

    Back in 2007, in commit 54b9e32e162bffea7ca78d36a1e8fb72784717d8
    we did a performance optimization to keep from having to continually
    get the bizobj reference by datasource from the form, which seemed
    like a good idea at the time.

    However, what if the form changes the biz instance that the
    datasource refers to? I'll concede that this would be a rare event,
    however this was a very difficult thing for me to track down, and
    once I found the cause, there wasn't a way for my code to change the
    behavior, so in this case I think sacrificing performance for
    safety is warranted.

commit a0c329d9ff0114d213f45f3aaed6c2d0ce949e7c
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 15 15:42:36 2013 -0800

    Fixed grid cell editing/writing back to biz.

    My last commit only handled bringing the value into the editor from
    the bizobj, but not putting the value back correctly in the grid.
    Specifically, it would change the type from date to string in the
    bizobj when writing back.

    Also discovered that we were redundantly saving back to the bizobj.
    Fixed.

commit d71cc0306014848c67f047ade101617263c4a89e
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 15 14:54:03 2013 -0800

    Fixed makeGridEditor to not convert value to string.

    dabo.ui.makeGridEditor() calls GetValue() in the grid data table to
    get the value, which converts everything to string for display in the
    grid cell. This is not wanted when using an editor for a certain
    type, such as a dDateTextBox. This should fix it.

commit 7202bb825205c65f8fb299a079b7db4476e6820f
Merge: 769add4 7f99ffb
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 15 07:58:48 2013 -0800

    Merge branch 'working' of github.com:dabodev/dabo into working

commit 769add4b0655ad4b75f356299105326038f4e643
Author: Paul McNett <p@ulmcnett.com>
Date:   Tue Jan 15 07:56:55 2013 -0800

    Reworked AppWizard's generated version files.

    Renamed __version__.py to version.py; no longer create a dict
    containing appVersion and appRevision, just set __version__.
    This falls in line with recent Dabo changes and removes
    the Subversion concept of revision. Personally, I never used
    the revision in my own apps.

commit 7f99ffb3182f3756fbf4d9b664d5a52d804d2ad7
Author: EdLeafe <ed@leafe.com>
Date:   Sun Jan 13 09:20:41 2013 -0600

    Added back two imports inadvertantly removed in the last commit.

commit 1a31a6fdedfe9820c1ac49129001ae45c19c14d3
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 11 21:10:09 2013 -0800

    Fixed the download_url in setup.py.

commit 1bfa6af8368abdc16c0fe392c679b9d4b6c200fc
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 11 17:30:22 2013 -0800

    Fixed image search in reportWriter.

    My prior commit fixed one case and broke another. Image expressions
    in rfxml files are relative and so we need to search, in order,
    relative from '.', the report's HomeDirectory, and the app's
    HomeDirectory.

commit 56be75174ada2649a2d7efde80e8257f81b00e64
Merge: 38495e0 2ba3b52
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 11 15:14:45 2013 -0800

    Merge commit '2ba3b52301ee0015872191c415c4af7d10c1ea45' into working

commit 38495e06924e6398e39ae72262b2e2b4caa856ea
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 11 14:02:17 2013 -0800

    Moved Subversion note to bottom.

commit 1dc40753f54e24c80f03a5497ba7c36b24a18b95
Author: Paul McNett <p@ulmcnett.com>
Date:   Fri Jan 11 13:42:06 2013 -0800

    Fixed to not update invisible forms and dialogs.

    Commit c94ce83219e5fde90cbcd783185897afef962108 correctly removed
    the check for Visibility on all objects when determining what to
    update, but we still want to explicitly not update invisible
    forms and dialogs for performance reasons and also because those
    controls could be bound to empty bizobjs or be sitting on
    out-of-context records.

commit d55d2773526034ebe58863a0daed198e80ab87ea
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 21:01:50 2013 -0800

    Updated release notes for 0.9.6.

commit f0eba20d8b0c305c107948f16dcaee07dd4ecbfc
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 15:49:24 2013 -0800

    Forgot to stage the removal of INSTALL in last

commit 3c9954f8889144b346814ff0c1b3092f5f90efc5
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 15:43:30 2013 -0800

    Moved INSTALL to INSTALL.md; reformatted/rewrote

commit 353ab793b71b5464794c41166dbdafb6bda36d73
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 15:33:49 2013 -0800

    Added a starting RELEASENOTES.md

commit 1117ce613e2b8dfee4396d73759fbf975a2d5262
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 15:30:03 2013 -0800

    Tweaks to readme.

commit 5c3341ee7ed2885509afae4b1d2bff1073dfc26c
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 13:26:08 2013 -0800

    Reformatted the links at bottom

commit c22b0849cfaf6a5e8136da719bc639b5b6a66855
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 12:23:01 2013 -0800

    Moved long dabo module docstring to README.md

    Took the long docstring in dabo.__init__.py, reworded and reformatted
    it lightly in Markdown format, and put it in README.md.

commit 4b8d3e353fbde960d1f4857faeb79d4bb3c78978
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 12:01:26 2013 -0800

    Fixed broken setup.py (it's dabo.__version__ now).

commit 6d6371e4700d0c73848dec03f134b6ea9dbd5d9d
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 11:56:57 2013 -0800

    Bumped copyright year.

commit 88c5ec0ff58aa9e700e78666efb2fcbcb0f16e37
Author: Paul McNett <p@ulmcnett.com>
Date:   Thu Jan 10 11:53:24 2013 -0800

    Modified INSTALL file to be current.

    Note: I plan on reformatting in Markdown format and renaming this file
    INSTALL.md in the near future.

commit db06c108b68c94e6cc1a3f6aadebe74f00423ee7
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 21:49:30 2013 -0800

    Improved reportwriter's ability to locate images.

    This fixes 2 problems:

    1) First try self.Application.HomeDirectory if available;
       only if that fails try self.HomeDirectory which is defined
       as the location of the rfxml file.

    2) If the end-result is a path that has both windows-style and
       unix-style separators, make them consistent with whatever
       platform we are running on.

    I had relative paths to image files coming from a database
    field, and the paths were stored in the database using unix
    slash separators, but running the app on Windows resulted in
    paths like "c:\imagelibrary\frames/h_111.png" which confused
    things and resulted in an expr error on the pdf instead of the
    image.

commit 0d1569e61d61876a4e88a8473a6c67228c1d26ec
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 16:15:46 2013 -0800

    Fixed multi-column printing with spanning objects.

    An extraneous column change plus reprinting of the column headers
    including spanning objects connecting incorrectly with the prior
    column was happening in some cases even though we were at the end
    of the report and there was nothing more to print.

    Fixed by making sure we actually have stuff to print before
    deciding to change columns.

    Also, when changing columns, don't check ReprintHeaderOnNewPage,
    but rather ReprintHeaderOnNewColumn.

commit 864fa32015d74239fa9df6952d5513cf79f26477
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 15:27:37 2013 -0800

    Fix activeControlValid() for non-bound controls.

    I have a set of controls that aren't bound to a bizobj directly - I
    hook into the ValueChanged event. However, the ValueChange was being
    delayed inside flushValue(), resulting in the modal dialog being
    already closed by the time the event was fired.

commit 4b9e1d7889e441a268a0b3ea2fa8c7e67b408afd
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 09:48:15 2013 -0800

    Revert "Settings changes for 1.0"

    It's in working-1.0 now.

    This reverts commit 9eba44f7cfe17abf58827a3967f09ac9a0a582f3.

commit bd566b103a3c43c5d8a14913cb57c997dbb7b648
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 09:47:23 2013 -0800

    Revert "Removed self.super() and self.doDefault()."

    This is in working-1.0 now.

    This reverts commit 057a4d3592706bf7e23408463f8f9188ecac4b8d.

commit b31c57e53d8ad52c4c6e77da4f289daa4c043edf
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 09:45:55 2013 -0800

    Revert "Removed GridHeaderPaint event."

    It's in working-1.0 now.

    This reverts commit e133d28541851f10dbeea173c06ce1ecc7efd309.

commit 23953213a8e8f08ceedf70c6bd2480b264bd14e8
Author: Paul McNett <p@ulmcnett.com>
Date:   Wed Jan 9 09:44:09 2013 -0800

    Reverted removal of datanav2 (it's in working-1.0 now)

    This reverts commit 7478b6c6e71b7c6b82fff0a59a2c6284fd353b30.

commit b535713188a5dcdaafa4dde3f6fddbd86eb2b338
Author: EdLeafe <ed@leafe.com>
Date:   Tue Jan 8 14:41:01 2013 -0600

    First pass at changing dApp to work with git-based Web Update.

    Removed the simplejson references, as json is now standard. Also alphabetized the imports.

commit e133d28541851f10dbeea173c06ce1ecc7efd309
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 22:06:10 2013 -0800

    Removed GridHeaderPaint event.

    Raising it was keeping the grid headers from painting in wx2.9 on
    Mac. I doubt anyone was relying on it but if so let me know before
    we release Dabo 1.0.

    I have a feeling most of the problems I've been fixing are more
    related to Cocoa versus Carbon on Mac than to wxPython 2.9 versus
    2.8.

commit 9eba44f7cfe17abf58827a3967f09ac9a0a582f3
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 20:39:11 2013 -0800

    Settings changes for 1.0

    This breaks backward compatibility by changing defaults for the
    following settings:

      importDebugger: now defaults to False
      localizeDabo: now defaults to False
      implicitImports: now defaults to False

    Each of these can easily be turned back to True in settings_override
    if needed but also the needed changes aren't great. In the case of
    localizing Dabo the code the appdev will need to add in their app
    is:

      from dabo import dLocalize
      dLocalize.install("dabo")

    Don't merge this into master until version 1.0.

commit e904920c12fecf82713b8c3acaae2c92213c448a
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 20:32:10 2013 -0800

    Fixed wording in the MDI commentary in settings.py

commit 1d27af0d7a179e5dd067e37fe3b742ebf65de4c2
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 20:12:14 2013 -0800

    Fixed for wxPython 2.9.4.0 - delayed PageEnter event.

    The delayed PageEnter event results in the where clause being filled
    out before the select page controls have been created yet, if
    RequeryOnLoad is True. This forces the items to be created in
    setWhere if needed.

commit 7478b6c6e71b7c6b82fff0a59a2c6284fd353b30
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 16:35:22 2013 -0800

    Removed old datanav2 directory.

commit ebe6117bf079b84fbaccd7cdf2a1e0418bee12b8
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 16:34:09 2013 -0800

    Fixed .gitignore to not ignore dabo/lib/

commit 225d5158094d7724f1e09559d9316271cee60118
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 16:20:29 2013 -0800

    Fix to find menus by caption in wxPython 2.9.4.

    I tested this in wx 2.8.12.1 as well: nothing is broken.

commit f74080d51d4b3789b093f0961183353f2bc2d2ca
Merge: 3b7896b 129e9a9
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 15:58:56 2013 -0800

    Merge branch 'working' of github.com:dabodev/dabo into working

commit 3b7896b37f42cd74a49e3e1e073e7e496a5d1b9e
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 15:50:31 2013 -0800

    Fix _getID() to get it from wx.NewId().

    Prior to this, we were filling dMenu id's using the logic from dObject,
    which was to return the python id. This doesn't work in 64-bit Python
    because wxPython (even 64-bit wxPython) doesn't recognize large ints
    as ints, causing a StackOverflow exception.

    This is better also since we really want wx to dole out the id's for
    wxPython objects.

commit 69ebd1ae7076dc6fc24b3ad95f97d4477dd2c3a0
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 14:52:03 2013 -0800

    Fix DeprecationWarning on wxPython 2.9

    wx.InitAllImageHandlers() is done implicitly now by wxPython.

commit 730176f1da882e6a652dae8aa812842d03a64ff8
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 14:43:02 2013 -0800

    Fixed for wxPython 2.9.4.0 on Mac.

    I was getting this:

    Traceback (most recent call last):
      File "/users/pmcnett/dabo/dabo/ui/uiwx/dPemMixin.py", line 733, in __onWxResize
        self.raiseEvent(dEvents.Resize, evt)
      File "/users/pmcnett/dabo/dabo/ui/uiwx/dPemMixin.py", line 1074, in raiseEvent
        super(dPemMixin, self).raiseEvent(eventClass, nativeEvent, *args, **kwargs)
      File "/users/pmcnett/dabo/dabo/lib/eventMixin.py", line 81, in raiseEvent
        bindingFunction(event)
      File "/users/pmcnett/dabo/dabo/ui/uiwx/dImage.py", line 89, in _onResize
        self._showPic()
      File "/users/pmcnett/dabo/dabo/ui/uiwx/dImage.py", line 221, in _showPic
        img = img.Scale(imgW, imgH)
      File "/usr/local/lib/wxPython-2.9.4.0/lib/python2.7/site-packages/wx-2.9.4-osx_cocoa/wx/_core.py", line 2916, in Scale
        return _core_.Image_Scale(*args, **kwargs)
    wx._core.PyAssertionError: C++ assertion "(width > 0) && (height > 0)" failed at /BUILD/wxPython-src-2.9.4.0/src/common/image.cpp(434) in Scale(): invalid new image size

    self.Width and self.Height were 0,0 but the original test for an uninitialized
    image was for w,h or 1,1.

commit 129e9a9c5c368b3b67bad0eddf9e80db52381d0b
Author: Paul McNett <p@ulmcnett.com>
Date:   Mon Jan 7 12:11:49 2013 -0800

    Removed biz.Caption from the EditPage.Caption.

    This is redundant since the form already has the caption, and looks better
    because 1) it takes less horizontal space and 2) the biz.Caption is likely
    plural, but in this context it should be singular. I didn't want to just
    strip out a trailing "s" due to that being a locale-specific solution.

commit 057a4d3592706bf7e23408463f8f9188ecac4b8d
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 5 17:55:33 2013 -0800

    Removed self.super() and self.doDefault().

    Starting with Python 7's 64-bit version, calling self.super()
    would sometimes result in a Segmentation Fault. It is better
    for appdev's to get an AttributeError for their self.super()
    calls to change them to the proper super(cls, self).method()

commit c6e14fb4d34673f3dc4df2f060105fbfaa6481f4
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 5 17:46:46 2013 -0800

    Added .gitignore

commit 7c57619276c8b6f1b01f1b195c14b92e2bffcb99
Author: Paul McNett <paul.mcnett@visumtechnology.com>
Date:   Sat Jan 5 15:35:45 2013 -0800

    Removed sub-projects now in their own repositories.

commit 4dcbeb62ae9b6f5d4e64e2ca6f056ff343523a43
Author: Paul McNett <p@ulmcnett.com>
Date:   Sat Jan 5 13:47:26 2013 -0800

    Set implicit dColumn.Precision if bizobj-based.

    Since the decimal precision is already known in the bizobj, use that
    for dColumn.Precision if the caller didn't explicitly set it.
Release v0.9.10