Changeset 260

Show
Ignore:
Timestamp:
05/10/04 12:53:57 (5 years ago)
Author:
paul
Message:

Prep for Dabo-0.1 release.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r56 r260  
     1Dabo-0.1: 
     2 
     3------------------------------------------------------------------------ 
     4r259 | paul | 2004-05-07 20:06:34 -0700 (Fri, 07 May 2004) | 4 lines 
     5 
     6I messed up earlier, intending to move the app name/version stuff to be  
     7more accessible, I instead moved it to a point too late in instantiation 
     8for the main form to notice. 
     9 
     10------------------------------------------------------------------------ 
     11r258 | paul | 2004-05-07 16:43:43 -0700 (Fri, 07 May 2004) | 2 lines 
     12 
     13Put the dabo icon on the forms by default. 
     14 
     15------------------------------------------------------------------------ 
     16r257 | paul | 2004-05-07 16:22:53 -0700 (Fri, 07 May 2004) | 5 lines 
     17 
     18Make column definition items tuples instead of lists, so that they are 
     19immutable. dGrid can alter its copy of the columndef for its own use, 
     20and when it was a list it was altering the shared copy. Making it  
     21immutable forces a pass-by-value instead of pass-by-reference. 
     22 
     23------------------------------------------------------------------------ 
     24r256 | paul | 2004-05-07 16:09:25 -0700 (Fri, 07 May 2004) | 3 lines 
     25 
     26Change the order of the setting of the appInfo properties, to allow  
     27user code to set these properties in dApp.setup(). 
     28 
     29------------------------------------------------------------------------ 
     30r255 | paul | 2004-05-07 15:42:42 -0700 (Fri, 07 May 2004) | 3 lines 
     31 
     32Fix some long-standing, really funky problems with repositioning and resizing 
     33grid columns. It should be way more stable now. 
     34 
     35------------------------------------------------------------------------ 
     36r254 | paul | 2004-05-07 15:31:46 -0700 (Fri, 07 May 2004) | 2 lines 
     37 
     38This fixes the __setattr__ problem. 
     39 
     40------------------------------------------------------------------------ 
     41r253 | ed | 2004-05-07 12:35:35 -0700 (Fri, 07 May 2004) | 5 lines 
     42 
     43Corrected a bunch of dumb typos. 
     44 
     45Note: I have to run out now, but next on the list is to update the demos, 
     46etc., to import dException instead of dError. 
     47 
     48------------------------------------------------------------------------ 
     49r252 | ed | 2004-05-07 12:31:14 -0700 (Fri, 07 May 2004) | 2 lines 
     50 
     51Removed extra parenthesis 
     52 
     53------------------------------------------------------------------------ 
     54r251 | ed | 2004-05-07 12:09:31 -0700 (Fri, 07 May 2004) | 8 lines 
     55 
     56Changed all of the references to dError to dException to emphasize the 
     57deliberate nature of these exceptions. Removed all the 'errorMsg'-related 
     58code in the bizobj and cursor classes, as these now raise exception rather 
     59than returning False. 
     60 
     61Modified the beforeXX() methods so that returning any non-empty string 
     62raises an exception with that string as the error message of the exception. 
     63 
     64------------------------------------------------------------------------ 
     65r250 | paul | 2004-05-07 11:25:07 -0700 (Fri, 07 May 2004) | 5 lines 
     66 
     67Change dApp.homeDir from the location where Python was started to the location 
     68where the startup script lives. This allows shortcuts to appRecipes/main.py to 
     69find the dbConnectionDefs.py, for example. 
     70 
     71 
     72------------------------------------------------------------------------ 
     73r249 | paul | 2004-05-06 20:07:20 -0700 (Thu, 06 May 2004) | 2 lines 
     74 
     75Some mods to ANNOUNCE 
     76 
     77------------------------------------------------------------------------ 
     78r248 | paul | 2004-05-06 14:22:53 -0700 (Thu, 06 May 2004) | 6 lines 
     79 
     80Fix to the MySQL int/bool problem. This still isn't the correct  
     81solution I don't think, but at least it happens where it should: 
     82at the cursor level, and only when there is a type mismatch  
     83between the old val and the new val. 
     84 
     85 
     86------------------------------------------------------------------------ 
     87r247 | ed | 2004-05-06 11:18:51 -0700 (Thu, 06 May 2004) | 3 lines 
     88 
     89I've edited the original ANNOUNCE, adding some stuff and switching other 
     90stuff around. 
     91 
     92------------------------------------------------------------------------ 
     93r246 | paul | 2004-05-05 21:46:02 -0700 (Wed, 05 May 2004) | 4 lines 
     94 
     95Fix bug in flushValue code: self shouldn't have been prepended 
     96to curVal. 
     97 
     98 
     99------------------------------------------------------------------------ 
     100r245 | paul | 2004-05-05 16:05:58 -0700 (Wed, 05 May 2004) | 6 lines 
     101 
     102Modify the property names of dConnectInfo to match the conventions 
     103elsewhere in Dabo of capitalized property names. 
     104 
     105Add a dMessageBox.info() message box. 
     106 
     107 
     108------------------------------------------------------------------------ 
     109r244 | paul | 2004-05-04 10:49:55 -0700 (Tue, 04 May 2004) | 15 lines 
     110 
     111Fix dGrid's checkboxes to reflect the true value, instead of just being 
     112checked no matter what. 
     113 
     114The strict name checking won't work for parentless windows, such as a  
     115top-level frame. For now, turn off strict checking for parentless windows, 
     116allowing possible duplicate names. 
     117 
     118Fix the test.py script to use unique object names. 
     119 
     120Call activeControlValid() when the user leaves a page. This allows, for 
     121example, the values in dGrid to reflect the new value without the user 
     122having to leave the control first. 
     123 
     124 
     125 
     126------------------------------------------------------------------------ 
     127r243 | paul | 2004-05-04 09:43:28 -0700 (Tue, 04 May 2004) | 9 lines 
     128 
     129Add code in dGrid to display boolean values in a checkbox. Fix bug 
     130in dGrid which would cause an IndexError when assigning default column 
     131widths. 
     132 
     133Fix dPageDataNav.EditPage to put the caption in the checkbox instead 
     134of in the label. 
     135 
     136 
     137 
     138------------------------------------------------------------------------ 
     139r242 | ed | 2004-05-04 08:59:58 -0700 (Tue, 04 May 2004) | 6 lines 
     140 
     141When a the flushValue() method was being called to flush changes to a 
     142control before a Save was run, the _oldVal property was not being updated. 
     143Subsequent calls to the control's flushValue() method would fail if the new 
     144value was equal to the original _oldVal. While this would not be common in 
     145text fields, it is very common in boolean fields. 
     146 
     147------------------------------------------------------------------------ 
     148r241 | paul | 2004-05-04 06:56:35 -0700 (Tue, 04 May 2004) | 10 lines 
     149 
     150Add convenience function dBizobj.getChildByDataSource(). 
     151 
     152Since dPageFrame sets a default number of pages now in __init__,  
     153fix dPageFrameDataNav to set this back to zero, so that when  
     154pages get added later they are the only pages. 
     155 
     156Fix dPageDataNav to not expect to get the child bizobj references 
     157directly from dForm, since dForm doesn't manage child bizobjs. 
     158 
     159 
     160------------------------------------------------------------------------ 
     161r240 | paul | 2004-05-03 19:21:20 -0700 (Mon, 03 May 2004) | 14 lines 
     162 
     163Add PageClass and PageCount properties to dPageFrame, for specifying 
     164the number of pages (new pages will be based on PageClass, allowing 
     165the user to override with their own base class). User still has the 
     166option to use AddPage() directly. 
     167 
     168Reworked the setting of the default number of pages... does that work 
     169for you, knowing that we aren't encouraging passing values to the 
     170constructors? The only drawback to setting a positive number of pages 
     171is that user code will have to first set to zero if they want to add 
     172their own subclassed pages. 
     173 
     174Add TabPosition to the list of properties that require recreation. 
     175 
     176 
     177------------------------------------------------------------------------ 
     178r239 | paul | 2004-05-03 17:36:32 -0700 (Mon, 03 May 2004) | 25 lines 
     179 
     180Handle NoRecordsError in dBizobj.getParentPk(). 
     181 
     182Childviews in dFormDataNav use dGrid in the childview pages just like in 
     183the main browse page. Add logic so that when new/edit/delete is selected 
     184in the popup menu, it gets directed to the proper place. 
     185 
     186Raise NameError if user code tries to set a dObject's Name property to  
     187a sibling's name. If this happens inside the init phase of the control, the 
     188error won't propagate up but the object will get assigned a new name  
     189instead. 
     190 
     191Make control's init's call private methods _beforeInit() and _afterInit() 
     192instead of the user-code beforeInit() and afterInit() hooks. This is to  
     193offer a level of guarantee that the basic stuff happens even if the user 
     194forgets to doDefault(). _beforeInit() and _afterInit() now call the user- 
     195code hook methods. 
     196 
     197Add initChildObjects() hook, which is where daboDesigner should put its 
     198addObject() code. Called from dPemMixin._afterInit(). 
     199 
     200Fix dSlider's docstring. 
     201 
     202 
     203 
     204 
     205------------------------------------------------------------------------ 
     206r238 | ed | 2004-05-02 13:01:04 -0700 (Sun, 02 May 2004) | 3 lines 
     207 
     208Added the new TypeID property to the list of props that are hidden in the 
     209designer. 
     210 
     211------------------------------------------------------------------------ 
     212r237 | ed | 2004-05-01 03:36:15 -0700 (Sat, 01 May 2004) | 2 lines 
     213 
     214Er, ah... you might need this file... ;-) 
     215 
     216------------------------------------------------------------------------ 
     217r236 | ed | 2004-04-30 20:31:57 -0700 (Fri, 30 Apr 2004) | 3 lines 
     218 
     219Added dSlider control. 
     220 
     221 
     222------------------------------------------------------------------------ 
     223r235 | paul | 2004-04-30 11:45:42 -0700 (Fri, 30 Apr 2004) | 2 lines 
     224 
     225More info in INSTALL. 
     226 
     227------------------------------------------------------------------------ 
     228r234 | paul | 2004-04-30 10:11:55 -0700 (Fri, 30 Apr 2004) | 3 lines 
     229 
     230When I made the bizobj changes, I inadvertantly set the default value of 
     231RestorePositionOnRequery to False instead of True. 
     232 
     233------------------------------------------------------------------------ 
     234r233 | paul | 2004-04-30 09:30:26 -0700 (Fri, 30 Apr 2004) | 9 lines 
     235 
     236Dabo Announcement Version 0.1, dated 5/1/2004. Please read and augment. I'll send this 
     237to: 
     238 
     239ProFox/ProLinux/ProPython 
     240San Jose VFP SIG 
     241wxPython-users 
     242python-users 
     243 
     244 
     245------------------------------------------------------------------------ 
     246r232 | paul | 2004-04-29 16:23:33 -0700 (Thu, 29 Apr 2004) | 6 lines 
     247 
     248Change docstring style from ''' to """, dabo-wide.  
     249 
     250Make some of the bizobj changes as discussed, but didn't do the RI stuff 
     251as I'm unclear on what, if anything, we've decided to do. 
     252 
     253 
     254------------------------------------------------------------------------ 
     255r231 | paul | 2004-04-29 11:23:57 -0700 (Thu, 29 Apr 2004) | 3 lines 
     256 
     257Add the new dabo icon in various sizes. They will likely get 
     258modified but at least they are there as placeholders. 
     259 
     260------------------------------------------------------------------------ 
     261r230 | paul | 2004-04-29 08:05:34 -0700 (Thu, 29 Apr 2004) | 8 lines 
     262 
     263When I moved dError into its own namespace in dCursorMixin last week, I 
     264neglected to specify the namespace in some places where errors are raised. 
     265Fix that. 
     266 
     267Fix dGrid to call setRowNumber() instead of the now-nonexistent moveToRowNum(). 
     268 
     269Fix a couple bugs in dPageDataNav. 
     270 
     271------------------------------------------------------------------------ 
     272r229 | ed | 2004-04-29 07:13:19 -0700 (Thu, 29 Apr 2004) | 8 lines 
     273 
     274Changed the names of the moveTo* methods to _moveTo* to indicate that they 
     275should not be called directly from outside the bizobj, 
     276 
     277Added the setRowNumber() method, which allows navigation to a particular row 
     278in the result set, with a resultant requeryAllChildren() call. It also has 
     279the standard before- and after- hooks. 
     280 
     281 
     282------------------------------------------------------------------------ 
     283r228 | ed | 2004-04-29 04:48:48 -0700 (Thu, 29 Apr 2004) | 4 lines 
     284 
     285Didn't realize that the SetRange() method of the Gauge control did not 
     286require re-creation, so I removed that property name from the 
     287preInitProperties. 
     288 
     289------------------------------------------------------------------------ 
     290r227 | ed | 2004-04-29 04:42:53 -0700 (Thu, 29 Apr 2004) | 3 lines 
     291 
     292Accidentally restored the wrong line when merging my changes in with the 
     293ones you made yesterday. 
     294 
     295------------------------------------------------------------------------ 
     296r226 | ed | 2004-04-29 04:35:00 -0700 (Thu, 29 Apr 2004) | 26 lines 
     297 
     298Removed the calls to requeryAllChildren() and afterPointerMove() from the 
     299bizobj. Added those calls as an option to the seek() method. 
     300 
     301The first two methods are "for internal use only", and should never be called from 
     302an app. They exist so that the bizobj can move the pointer to where it needs 
     303to be without triggering a slew of additional effects.  
     304 
     305moveToPK() is only used in a requery() to try to restore the record pointer 
     306to the PK of the record it was on before the cursror was requeried. It is 
     307followed by a call to requeryAllChildren() and afterPointerMove() in that 
     308method; calling it again from this one is just inefficient.. 
     309 
     310moveToRowNum() is called by the validate() method so that a bizobj can check 
     311all of its records. You don't want it requerying its children, as they will 
     312need to be validated separately, and will be called in turn. 
     313 
     314In VFP Codebook, these methods are protected. For record pointer movement 
     315from within an app, the public methods first(), next(), etc., should be used 
     316to move the record pointer. 
     317 
     318Since seek() is intended to be called both internally and from developer's 
     319code, I've added a parameter 'runRequery' which defaults to False. If this 
     320value is passed as True, requeryAllChildren() and afterPointerMove() will be 
     321called if the cursor moves the pointer. 
     322 
     323 
     324------------------------------------------------------------------------ 
     325r225 | paul | 2004-04-28 23:38:17 -0700 (Wed, 28 Apr 2004) | 4 lines 
     326 
     327Make dGauge not data-aware, and fix range and value to work correctly. 
     328BackColor and ForeColor don't seem to work, neither does BorderStyle. 
     329 
     330 
     331------------------------------------------------------------------------ 
     332r224 | paul | 2004-04-28 23:18:00 -0700 (Wed, 28 Apr 2004) | 2 lines 
     333 
     334Child view pages now show data browse grid. 
     335 
     336------------------------------------------------------------------------ 
     337r223 | paul | 2004-04-28 16:22:00 -0700 (Wed, 28 Apr 2004) | 2 lines 
     338 
     339Further work on child views for the dFormDataNav thing. 
     340 
     341------------------------------------------------------------------------ 
     342r222 | ed | 2004-04-28 13:36:41 -0700 (Wed, 28 Apr 2004) | 5 lines 
     343 
     344Added the Gauge control. It's generally working (although there are some 
     345funky background changes when being reCreated), but I haven't been able to 
     346get the ability to change the Range of the control at design time. Guess I 
     347need to grok the whole preInit stuff better. 
     348 
     349------------------------------------------------------------------------ 
     350r221 | paul | 2004-04-28 13:11:48 -0700 (Wed, 28 Apr 2004) | 50 lines 
     351 
     352Refactor the API of dBizobj, making most of the 'properties' into actual 
     353Python properties complete with getters, setters, and docstrings. Here is 
     354a list of the new bizobj properties: 
     355 
     356    Caption (new: friendly name for communicating with the user) 
     357    DataSource (was dataSource) 
     358    SQL (was sql) 
     359    RequeryOnLoad (was noDataOnLoad) 
     360    AutoPopulatePK (was autoPopulatePK) 
     361    Parent (was _parent) 
     362    KeyField (was keyField) 
     363    LinkField (was linkField) 
     364    ErrorMessage (was _errorMsg, and I think this one can go because of the exception-refactor) 
     365    RequeryChildOnSave (was requeryChildOnSave) 
     366    NewChildOnNew (was newChildOnNew) 
     367    NewRecordOnNewParent (was newRecordOnNewParent) 
     368    FillLinkFromParent (was fillLinkFromParent) 
     369    RestorePositionOnRequery (was savePosOnRequery) 
     370 
     371Obviously, I've FUBAR'd the original API so all the demos that use bizobj's  
     372will have to be changed, which I'll do after lunch. 
     373 
     374Refactor getPropertyList() and getPropertyInfo() out of dPemMixin and into the 
     375new dabo.common.PropertyHelperMixin, since these functions can be useful at a 
     376lower level than our wx interface. Make dPemMixin and dBizobj inherit from 
     377PropertyHelperMixin, which means that dBizobj can now theoretically be represented 
     378on the designer and have its properties edited there. 
     379 
     380Add beforeInit() hook to dBizobj, which allows the user code an opportunity to  
     381modify properties such as RequeryOnLoad before they take effect. 
     382 
     383dBizobj.__setattr__ had old-style class code that was causing my new property API 
     384to fail silently, and it drove me crazy for an entire hour at least. :)  Changing 
     385to the new-style super() call for non-cursor field attributes fixed the problem. 
     386Lesson learned: __getattr__ will be called only after the attribute was not found,  
     387while __setattr__ gets called before Python looks for the attribute at all. Sounds  
     388like a subtle difference on paper but the implications are huge! 
     389 
     390Add method getChildren() to dBizobj, which returns a tuple of object references 
     391to the children.  
     392 
     393Add icon childview.png, which represents a child bizobj in the runtime dFormDataNav. 
     394 
     395In dFormDataNav, delay instantiation of the pageframe until the primary column def 
     396has been assigned, which allows the childviews to appear in the nav menu and in the 
     397page frame. 
     398 
     399The UI for the child view stuff isn't working yet, but it is a little closer. I started 
     400out this morning working on that and got sidetracked with the bizobj changes. 
     401 
     402------------------------------------------------------------------------ 
     403r220 | paul | 2004-04-28 08:42:09 -0700 (Wed, 28 Apr 2004) | 10 lines 
     404 
     405Make changes to BackColor do an implicit self.Refresh(), as it appears to  
     406be necessary with most controls, although it appears that dEditBox needs to 
     407actually be recreated... 
     408 
     409The borderstyle thing isn't working right, as different controls have different 
     410default borders. For instance, dEditBox with no border style flags set has a 
     411simple border, while dPanel does not. Add a 'Default' setting to let the value 
     412get set back to that control's default (no border flags set). 
     413 
     414 
     415------------------------------------------------------------------------ 
     416r219 | paul | 2004-04-28 08:10:24 -0700 (Wed, 28 Apr 2004) | 4 lines 
     417 
     418Fix bug in dCheckbox where setting alignment back to Left would raise 
     419a ValueError. 
     420 
     421 
     422------------------------------------------------------------------------ 
     423r218 | ed | 2004-04-28 04:23:43 -0700 (Wed, 28 Apr 2004) | 3 lines 
     424 
     425Refactored out the prop/val saving and prop/val restoring sections of 
     426reCreate so that they could be called from other places. 
     427 
     428------------------------------------------------------------------------ 
     429r217 | paul | 2004-04-27 17:21:34 -0700 (Tue, 27 Apr 2004) | 25 lines 
     430 
     431Import dError into separate namespace, instead of into global namespace, 
     432in dBizobj and dCursorMixin. 
     433 
     434Make dBizobj inherit from DoDefaultMixin. Add an afterInit() hook in  
     435dBizobj so that subclasses don't need to know what to send to __init__(). 
     436 
     437In dBizobj, there were lots of structures like: 
     438        try: 
     439            self._cursor.first() 
     440            self.requeryAllChildren() 
     441        except dError, e: 
     442            # Pass the error back to the UI 
     443            raise dError, e 
     444            return False 
     445         
     446Since nothing else is being done except re-raising the error, I simplified 
     447these by taking out the try block completely. The error will propagate back 
     448to the UI by default anyway. 
     449 
     450Fix bug in dBizobj: moveToRowNum() and moveToPK() were not requerying the 
     451child bizobjs nor calling the afterPointerMove() hook. 
     452 
     453Put a couple try blocks in dGrid and dDataControlMixin. 
     454 
     455 
     456------------------------------------------------------------------------ 
     457r216 | paul | 2004-04-27 13:00:11 -0700 (Tue, 27 Apr 2004) | 3 lines 
     458 
     459Text of GPL to COPYING. Addition of LICENSE.TXT which specifies copyright 
     460and license. 
     461 
     462------------------------------------------------------------------------ 
     463r215 | ed | 2004-04-26 17:58:00 -0700 (Mon, 26 Apr 2004) | 3 lines 
     464 
     465Changed the setSQL() method so that passing no argument results in the same 
     466thing as calling biz.setSQL(biz.getSQL()). 
     467 
     468------------------------------------------------------------------------ 
     469r214 | ed | 2004-04-26 15:45:11 -0700 (Mon, 26 Apr 2004) | 2 lines 
     470 
     471Cleaned up the copying of ToolTipText. 
     472 
     473------------------------------------------------------------------------ 
     474r213 | ed | 2004-04-26 13:35:27 -0700 (Mon, 26 Apr 2004) | 4 lines 
     475 
     476Added a list of properties to ignore. These are properties that are either 
     477calculated props, such as 'Right', or properties that cannot be set, such as 
     478'BaseClass'. 
     479 
     480------------------------------------------------------------------------ 
     481r212 | ed | 2004-04-26 12:17:36 -0700 (Mon, 26 Apr 2004) | 10 lines 
     482 
     483Modified the reCreate() method to better assign properties. There are still 
     484some artifacts to work out that mostly involve property assignment order; 
     485for example, the method was restoring the Left, Right, and Width properties 
     486in such a way that controls were being moved every time they were 
     487re-created. I added some extra code to handle this, but there are some 
     488similar problems with fonts that need to be addressed. 
     489 
     490I left in a line that prints out all failed property assignments, so that we 
     491remember to handle these exceptions. 
     492 
     493------------------------------------------------------------------------ 
     494r211 | paul | 2004-04-24 17:06:40 -0700 (Sat, 24 Apr 2004) | 2 lines 
     495 
     496Fix inconsistency in dRadioGroup. 
     497 
     498------------------------------------------------------------------------ 
     499r210 | paul | 2004-04-23 16:19:27 -0700 (Fri, 23 Apr 2004) | 4 lines 
     500 
     501Experimenting with a print preview of the browse records - push the 
     502preview button when on the browse page. Ugly but at least it's a  
     503start. 
     504 
     505------------------------------------------------------------------------ 
     506r209 | paul | 2004-04-23 15:51:36 -0700 (Fri, 23 Apr 2004) | 2 lines 
     507 
     508Change name of dOptionGroup to dRadioGroup. 
     509 
     510------------------------------------------------------------------------ 
     511r208 | paul | 2004-04-23 15:33:55 -0700 (Fri, 23 Apr 2004) | 10 lines 
     512 
     513Fix some bugs in dOptionGroup. 
     514 
     515Experimental: I'm actually scared at how easy this was to implement, but I added 
     516a reCreate() function to dPemMixin, so now any object can reinstantiate itself 
     517by calling self.reCreate(). The intent is really for the daboDesigner to be able  
     518to reinstantiate an object at will, such as when a property changes that won't 
     519take effect at runtime, such as Alignment, BorderStyle, PasswordEntry, and all the 
     520useful properties of dOptionGroup. 
     521 
     522 
     523------------------------------------------------------------------------ 
     524r207 | paul | 2004-04-23 13:38:39 -0700 (Fri, 23 Apr 2004) | 2 lines 
     525 
     526Fix typos causing TypeError on instantiation. 
     527 
     528------------------------------------------------------------------------ 
     529r206 | paul | 2004-04-23 12:50:36 -0700 (Fri, 23 Apr 2004) | 13 lines 
     530 
     531Add dOptionGroup, based on wx.RadioBox.  
     532 
     533Modify icon for dLabel. Still not happy with it, but it is better  
     534than the last one. 
     535 
     536Simplify all constructors of the dControls with new PostCreate() 
     537feature of wxPython. 
     538 
     539Remove the echoing of the icon file name from dIcons, which Ed noticed 
     540while running daboDesigner. 
     541 
     542 
     543 
     544------------------------------------------------------------------------ 
     545r205 | paul | 2004-04-23 08:54:16 -0700 (Fri, 23 Apr 2004) | 2 lines 
     546 
     547Make FontFace read-only. 
     548 
     549------------------------------------------------------------------------ 
     550r204 | ed | 2004-04-23 05:43:10 -0700 (Fri, 23 Apr 2004) | 3 lines 
     551 
     552Corrected copy/paste bug: _getBackColorEditorInfo was not present; instead, 
     553_getForeColorEditorInfo was listed twice. 
     554 
     555------------------------------------------------------------------------ 
     556r203 | ed | 2004-04-23 05:35:17 -0700 (Fri, 23 Apr 2004) | 4 lines 
     557 
     558Changed the spelling of the editor for colors to 'colour', to be consistent 
     559with the rest of wxPython. It's odd having to remember when to write which 
     560spelling, so 'colour' it is. 
     561 
     562------------------------------------------------------------------------ 
     563r202 | paul | 2004-04-22 18:42:04 -0700 (Thu, 22 Apr 2004) | 2 lines 
     564 
     565Add other control icons, and make a better dEditBox icon. 
     566 
     567------------------------------------------------------------------------ 
     568r201 | paul | 2004-04-22 18:01:11 -0700 (Thu, 22 Apr 2004) | 4 lines 
     569 
     570Add icon dEditBox.png, which will display in the daboDesigner if you make 
     571the changes I'm about to commit. 
     572 
     573 
     574------------------------------------------------------------------------ 
     575r200 | paul | 2004-04-22 18:00:22 -0700 (Thu, 22 Apr 2004) | 6 lines 
     576 
     577Make the daboDesignerClass dict have a prompt key as well that can include 
     578a hotkey value. 
     579 
     580Fix dIcons.getIconBitmap() to really return null bitmaps when the file 
     581doesn't exist. 
     582 
     583------------------------------------------------------------------------ 
     584r199 | paul | 2004-04-22 15:26:07 -0700 (Thu, 22 Apr 2004) | 2 lines 
     585 
     586Add the font editor info to the Font property. 
     587 
     588------------------------------------------------------------------------ 
     589r198 | paul | 2004-04-22 14:54:54 -0700 (Thu, 22 Apr 2004) | 5 lines 
     590 
     591Move property SelectOnEntry from dDataControlMixin to dTextBox and 
     592dEditBox as it only applies to text controls. I should probably make 
     593a dTextControlMixin to avoid the code duplication - another day. 
     594 
     595 
     596------------------------------------------------------------------------ 
     597r197 | ed | 2004-04-22 13:53:28 -0700 (Thu, 22 Apr 2004) | 2 lines 
     598 
     599Corrected indentation in the docstring for the class. 
     600 
     601------------------------------------------------------------------------ 
     602r196 | paul | 2004-04-22 12:29:23 -0700 (Thu, 22 Apr 2004) | 5 lines 
     603 
     604Extract doDefault() from dPemMixin and put in new dabo.common submodule, 
     605and make dPemMixin inherit from dabo.ui.common.DoDefaultMixin. This was  
     606because doDefault() has broader use than just inside the UI part of dabo. 
     607 
     608 
     609------------------------------------------------------------------------ 
     610r195 | paul | 2004-04-22 10:53:13 -0700 (Thu, 22 Apr 2004) | 5 lines 
     611 
     612Reimplemented addObject() to take a classRef directly instead of className and 
     613moduleName strings. This is better because it leaves it up to the subclass to  
     614make sure the proper module is imported, which is where that belongs. 
     615 
     616 
     617------------------------------------------------------------------------ 
     618r194 | paul | 2004-04-22 10:27:06 -0700 (Thu, 22 Apr 2004) | 4 lines 
     619 
     620Keep the details of building daboDesignerClasses from polluting 
     621the module's namespace. 
     622 
     623 
     624------------------------------------------------------------------------ 
     625r193 | paul | 2004-04-22 10:22:04 -0700 (Thu, 22 Apr 2004) | 11 lines 
     626 
     627Update dabo.ui.daboDesignerClasses to be a list of dictionaries, with 
     628keys on 'name', 'class', 'topLevel', 'icon', and 'doc'. The 
     629topLevel key can be used to determine if the object can be added 
     630to another control, or if it must be the top level object. The icon  
     631key will have a picture of the control suitable for displaying in a  
     632menu or toolbar control-picker. The doc key provides some help text. 
     633 
     634After adding the doc key above, I finally got around to writing short 
     635docstrings for the various dControls. 
     636 
     637 
     638------------------------------------------------------------------------ 
     639r192 | paul | 2004-04-22 06:59:43 -0700 (Thu, 22 Apr 2004) | 6 lines 
     640 
     641Add daboDesignerClasses list to dabo.ui module, which is a list of class references 
     642to the valid dabo classes to show in the designer. 
     643 
     644Our users can do the same thing with their modules, to control what of their custom 
     645classes show in the designer. 
     646 
     647------------------------------------------------------------------------ 
     648r191 | paul | 2004-04-21 19:26:19 -0700 (Wed, 21 Apr 2004) | 5 lines 
     649 
     650Add the promised addObject() method to dPemMixin, allowing code like: 
     651    self.addObject("dTextBox", "dabo.ui", "txtLastName") 
     652    self.txtLastName.FontBold = True 
     653 
     654 
     655------------------------------------------------------------------------ 
     656r190 | paul | 2004-04-21 17:29:14 -0700 (Wed, 21 Apr 2004) | 6 lines 
     657 
     658Tabs! 
     659 
     660Or, a review of the entire source base of Dabo. <g> 
     661 
     662Also, removed the appRoot directory. 
     663 
     664------------------------------------------------------------------------ 
     665r189 | paul | 2004-04-21 16:23:33 -0700 (Wed, 21 Apr 2004) | 23 lines 
     666 
     667Increase robustness of property setters by coercing proper data types 
     668and raising exceptions with improper values. 
     669 
     670Fix a few places where my strategy for setting/deleting window style 
     671flags wasn't up to snuff. 
     672 
     673Add 'showInDesigner' key to the getPropertyInfo dict. This tells the  
     674designer whether to show the property at all. Set WindowHandle, Size, 
     675and Position to not show in the designer. 
     676 
     677Add 'preInitProperty' key to the getPropertyInfo dict. This tells the 
     678designer where to put this property setting in the class's source code. 
     679Some properties need to be set before the object is fully constructed, 
     680while most need to be set after the object is fully constructed. Set  
     681the few properties I know about that need to be defined early. 
     682 
     683Add some editorInfo overrides to some properties, where the defaults  
     684wouldn't be adequate. For instance, the default for integers is -65536 
     685to 65536, which is completely inappropriate for properties like Width 
     686and Height, which can't go below 0. 
     687 
     688 
     689 
     690------------------------------------------------------------------------ 
     691r188 | paul | 2004-04-21 14:16:36 -0700 (Wed, 21 Apr 2004) | 22 lines 
     692 
     693Separate out the property initialization, based on whether the property 
     694needs to be passed as a style parameter to the constructor (property will 
     695be read-only at runtime), or whether the property must be set after the 
     696object is fully instantiated (property will be read/write at runtime  
     697unless specified differently in the property assignment). 
     698 
     699Add getPropertyInfo() to dPemMixin, which returns a dict of useful information 
     700on the passed property name, including the data type, the editor to use, and  
     701the docstring. This is to make the designer much more generic: it can just 
     702query the object for most of the information it needs. 
     703 
     704Part of the logic of the above involves checking for the editor to use by 
     705calling a special method which is named similarly to the given property. 
     706If that method doesn't exist, a default value for editor info is returned,  
     707based on data type, which is how I've left it for most of the properties. 
     708The only properties I've specifically defined editors for so far are the ones  
     709that have a set number of choices to be presented in a list, such as 'Alignment'. 
     710 
     711Add property 'AutoResize' to dLabel. 
     712 
     713 
     714 
     715------------------------------------------------------------------------ 
     716r187 | paul | 2004-04-20 17:44:14 -0700 (Tue, 20 Apr 2004) | 17 lines 
     717 
     718Change some of my " to ' <g>.  Localize some strings. 
     719 
     720Change multi-state properties, such as Alignment, to have string 
     721identifiers instead of integer identifiers. 
     722 
     723Give dForm the wx interface, just like I did for the dControls earlier. 
     724Remove setupResources() from dForm as I don't think that is the interface 
     725we'll use (I don't think we'll use resources at all). 
     726 
     727Fix some properties to work correctly. This was after testing with  
     728dTextBox in daboDesigner. I need to figure out how to deal with the  
     729styles that have to be passed to the constructor, not altered after the 
     730object has already been created (Alignment, for example). I'm thinking 
     731that we'll have to get a copy of the object's properties, destroy it,  
     732and then recreate it.  
     733 
     734 
     735------------------------------------------------------------------------ 
     736r186 | paul | 2004-04-19 22:46:27 -0700 (Mon, 19 Apr 2004) | 16 lines 
     737 
     738Fix some import statements. Fix bug in property 'ToolTipText'. Fix ui test 
     739script to use the new property interface. 
     740 
     741Rework the dControl's constructors to pretty much conform to wx's constructor 
     742format. There are some exceptions, and I haven't done the dForm's yet. To be 
     743completely safe, anything beyond parent and id should use named arguments even 
     744though theoretically positional arguments should work. 
     745 
     746Add a requery button to the select page of dFormDataNav, and try to set it as 
     747the default button (click on <Enter>) but at least on Linux that isn't working 
     748as advertised. Rework the select page to use dControls instead of wx controls 
     749directly and use the property interface. 
     750 
     751 
     752 
     753 
     754------------------------------------------------------------------------ 
     755r185 | paul | 2004-04-19 16:25:37 -0700 (Mon, 19 Apr 2004) | 16 lines 
     756 
     757Simplify icon names. Add a couple new icons. 
     758 
     759Add new actions to edit menu: cut/copy/paste/find. Surprisingly, I 
     760had to implement cut/copy/paste myself using the clipboard object, 
     761even though cut/copy/paste is one thing that is pretty much universal 
     762among the various platforms. 
     763 
     764Decorate various menu items with appropriate icons. Make dMenu inherit 
     765from dPemMixin.  
     766 
     767Add property 'WindowState' to the forms, which provides one interface to 
     768get/set whether the form is minimized, normal, maximized, or full screen. 
     769 
     770 
     771 
     772 
     773------------------------------------------------------------------------ 
     774r184 | paul | 2004-04-17 14:00:44 -0700 (Sat, 17 Apr 2004) | 55 lines 
     775 
     776Make dLabel not auto-resize to the length of the text. Fix a couple minor 
     777bugs. 
     778 
     779Add the following properties, most of which are saved in the WindowStyleFlags 
     780and so otherwise would be kind of difficult to use: 
     781 
     782dCheckBox: 
     783    .Alignment (left, right) 
     784     
     785dEditBox: 
     786    .Alignment (left, center, right) 
     787    .ReadOnly 
     788     
     789dLabel: 
     790    .Alignment (left, center, right) 
     791     
     792dPageFrame: 
     793    .TabPosition (top, left, right, bottom) 
     794 
     795dSpinner: 
     796    .SpinnerWrap (does the value wrap from low to high, and vice-versa) 
     797    .SpinnerArrowKeys (can the user spin up/down with the keyboard) 
     798     
     799dTextBox: 
     800    .Alignment (left, center, right) 
     801    .ReadOnly (like Enabled=False but allows text selection) 
     802    .PasswordEntry (if True, echoes asterisks instead of Value) 
     803 
     804All forms: 
     805    .BorderResizable 
     806    .ShowMaxButton 
     807    .ShowMinButton 
     808    .ShowCloseButton 
     809    .ShowCaption 
     810    .ShowSystemMenu 
     811    .TinyTitleBar 
     812     
     813All controls and forms: 
     814    .BorderStyle (none, simple, raised, sunken) 
     815    .WindowHandle (platform-specific Hwnd) 
     816 
     817Note that in most cases I haven't tested any property interactions yet, but  
     818in theory they should all work. Some of these won't work on live objects, so 
     819in the future when integrating with the designer we'll probably have to recreate 
     820the object after some of these properties change. My feeling is that most testing 
     821of the properties can wait until the designer is instantiating these controls, at 
     822which point we'll have a convenient interactive testing environment. 
     823 
     824Note also that I chose to skip over some possibilities, such as making a 3-state 
     825checkbox control and some other styles that only work on this or that platform. 
     826We can revisit these in the future and choose to put them in, but my feeling is 
     827that if it doesn't apply to all platforms, it shouldn't apply to any platform. 
     828Keeping Dabo at the lowest common functionality will reduce surprises and headaches 
     829for our users later, when they try to port their app from Windows to Mac. 
     830 
     831------------------------------------------------------------------------ 
     832r183 | paul | 2004-04-16 15:50:29 -0700 (Fri, 16 Apr 2004) | 11 lines 
     833 
     834Change name of property 'ParentClass' to 'SuperClass'. 
     835 
     836Add flat Font* properties, including FontInfo which is a text-string 
     837representation of the current font. 
     838 
     839Add properties 'Right' and 'Bottom' just because I guess...          
     840 
     841Fix a bug that was returning the object's position instead of the  
     842object's size. 
     843 
     844 
     845------------------------------------------------------------------------ 
     846r182 | paul | 2004-04-16 11:49:55 -0700 (Fri, 16 Apr 2004) | 9 lines 
     847 
     848Add property 'Class' to dPemMixin, and give meaningful values to properties 
     849'Class', 'ParentClass', and 'BaseClass'. self.Class will return a classref 
     850to the class the object is based on. self.ParentClass will return a classref 
     851to the parent class, or None if the parent class is higher up than self.BaseClass. 
     852self.BaseClass will return a classref to the base dControl of the class, NOT  
     853the base class of whatever UI is in use (wx.EventHandler in wxPython). 
     854 
     855 
     856 
     857------------------------------------------------------------------------ 
     858r181 | paul | 2004-04-15 11:52:29 -0700 (Thu, 15 Apr 2004) | 15 lines 
     859 
     860Fix Linux segmentation fault and Windows Fatal Error c0000005 that 
     861was happening on destruction of the main frame. This appears to be 
     862a problem way down in the bowels of wx that I exposed with yesterday's 
     863addition of the dPemMixin.__getattr__() code, which was doing a 
     864self.GetName() to be able to display the name of the object in the 
     865raised AttributeError exception. I think the base C++ object is  
     866already destroyed which resulted in GetName() segfaulting. My workaround 
     867saves self.GetName() to _name at opportune times, and __getattr__ uses 
     868the value of _name for the AttributeError. 
     869 
     870Add class dPanel, and make dPage inherit from that instead of from 
     871wx.Panel. 
     872 
     873 
     874 
     875------------------------------------------------------------------------ 
     876r180 | paul | 2004-04-14 17:45:07 -0700 (Wed, 14 Apr 2004) | 16 lines 
     877 
     878Add a classmethod doDefault() to dPemMixin, which allows superclass 
     879methods to be called using the VFP-like syntax of: 
     880     
     881    retval = class.doDefault([args]) 
     882 
     883For instance: 
     884     
     885    class MyTextBox(dTextBox): 
     886        def afterInit(self): 
     887            print "afterInit" 
     888            MyTextBox.doDefault() 
     889 
     890This can replace the super(class,self).methodName([args]) syntax, which 
     891I think is much friendlier. 
     892 
     893 
     894------------------------------------------------------------------------ 
     895r179 | paul | 2004-04-14 13:12:25 -0700 (Wed, 14 Apr 2004) | 18 lines 
     896 
     897Split the __init__ phase into 2-stage, for future accomodation of loading 
     898properties from resource files, and to accomodate setting certain extra 
     899styles that cannot otherwise be set. Add beforeInit() and afterInit()  
     900hooks to dPemMixin which is an ancestor of all the dControls and dForms,  
     901and provide docstrings to encourage users to put their code in these methods 
     902instead of in __init__() directly. 
     903 
     904Add a __getattr__() in dPemMixin which will try to resolve attributes to 
     905child windows, allowing references like 'self.myPanel.myTextBox.Value', for 
     906example. 
     907 
     908Remove dControlMixin.setDefaultFont(), as this was cruft from the previous 
     909Dabo which doesn't appear to be necessary anymore. 
     910 
     911Add properties 'SpinnerHighValue' and 'SpinnerLowValue' to dSpinner. 
     912 
     913 
     914 
     915------------------------------------------------------------------------ 
     916r178 | paul | 2004-04-14 08:14:36 -0700 (Wed, 14 Apr 2004) | 9 lines 
     917 
     918Simplify dForm.activeControlValid() and dDataControlMixin.SetFocus() by  
     919determining which control has the focus using wx's Window.FindFocus()  
     920method instead of saving this information manually. 
     921 
     922Add property Default to dCommandButton, which specifies if this command 
     923button will raise a EVT_BUTTON when the <Enter> key is pressed and not 
     924handled elsewhere on the form. 
     925 
     926 
     927------------------------------------------------------------------------ 
     928r177 | paul | 2004-04-13 17:35:31 -0700 (Tue, 13 Apr 2004) | 1 line 
     929 
     930Fixes to make Dabo behave better on Mac, including not showing the main frame 
     931------------------------------------------------------------------------ 
     932r176 | paul | 2004-04-13 16:37:57 -0700 (Tue, 13 Apr 2004) | 1 line 
     933 
     934Fix for Mac to make the about menu appear in the app menu 
     935------------------------------------------------------------------------ 
     936r175 | paul | 2004-04-13 14:27:39 -0700 (Tue, 13 Apr 2004) | 1 line 
     937 
     938Oops, I left in a debug line with my last commit. 
     939------------------------------------------------------------------------ 
     940r174 | paul | 2004-04-13 14:26:19 -0700 (Tue, 13 Apr 2004) | 1 line 
     941 
     942Minor fixes for Windows. One remaining problem is that Windows dForm's don't fire an implicit Activate event when first instantiated, so my logic for restoring size and position isn't working. I think this will fix itself when I move to three-stage creation, which is on my list for the ability to integrate resource files. 
     943------------------------------------------------------------------------ 
     944r173 | paul | 2004-04-13 12:28:50 -0700 (Tue, 13 Apr 2004) | 8 lines 
     945 
     946Brainstorm of our eventual announcement of Dabo. We need to review  
     947and modify and make clear anything that is opaque, and once we are 
     948happy with it we can decide when to announce. We can decide if we 
     949want to announce before we have a workable install, or if we should 
     950wait until all that is documented, but I thought I'd get started on 
     951the ultimate announcement now rather than later. 
     952 
     953 
     954------------------------------------------------------------------------ 
     955r172 | paul | 2004-04-12 18:43:15 -0700 (Mon, 12 Apr 2004) | 24 lines 
     956 
     957General skim/review of everything in dabo/ui/uiwx/classes. This led to 
     958some rearranging of things: 
     959 
     960In general, I fixed the import statements to import into private namespaces 
     961instead of into the module-global namespace. 'Namespaces are good', I think, 
     962is the quote on the back of our PyCon 2004 shirts. :)  Seriously, this is  
     963much safer as we don't risk separate modules stepping on each other's names. 
     964 
     965The way I had it, dPageFrame and dPage were not base-class-like, in that 
     966they both tied in intimately with dFormDataNav. I made new dPageFrame and 
     967dPage base classes, with just basic behavior that would apply to all 
     968subclasses, not just the data nav form. I then subclassed dPageFrame 
     969to create dPageFrameDataNav, and I subclassed dPage to create dSelectPage, 
     970dBrowsePage, and dEditPage.  
     971 
     972I fixed some naming issues inside some of the page classes. 
     973 
     974There was still some old-Dabo cruft in dMainMenuBar, which I removed. 
     975 
     976Switched to the new-style super(class, instance).method() style of  
     977running the parent-class behavior wherever possible. 
     978 
     979Added a commandbutton to the test.py script. 
     980 
     981------------------------------------------------------------------------ 
     982r171 | paul | 2004-04-09 10:51:04 -0700 (Fri, 09 Apr 2004) | 7 lines 
     983 
     984Make dform.ask2Save into a real property, and renamed it to AskToSave (sorry, 
     985I hate the 2 meaning 'to'. Always bugged me.) 
     986 
     987Make dform._set* coerce the values into boolean, so that if someone says: 
     988self.AskToSave=1, it will save True instead of 1. 
     989 
     990 
     991------------------------------------------------------------------------ 
     992r170 | ed | 2004-04-09 05:18:35 -0700 (Fri, 09 Apr 2004) | 6 lines 
     993 
     994Changed all loc() calls to _() in the bizobj and data classes. 
     995 
     996Wrapped the "Do you want to save?" request in dForm with a boolean property 
     997to allow suppression of the call. 
     998 
     999 
     1000------------------------------------------------------------------------ 
     1001r169 | paul | 2004-04-08 22:19:32 -0700 (Thu, 08 Apr 2004) | 2 lines 
     1002 
     1003Wrapped some strings in dForm to dLocalize. 
     1004 
     1005------------------------------------------------------------------------ 
     1006r168 | paul | 2004-04-08 22:04:01 -0700 (Thu, 08 Apr 2004) | 15 lines 
     1007 
     1008There is an inconsistency in dBizobj.isChanged() versus dCursorMixin.isChanged(). 
     1009dBizobj's docstring states that it is going to just check the current record, while 
     1010dCursorMixin's docstring states it will check all records, which is what it does. 
     1011 
     1012I didn't change the docstrings, but I did add an allRows argument to both of these 
     1013functions, along with logic in dCursorMixin to act appropriately based on the  
     1014parameter. I made the default value of these arguments match the docstrings, so 
     1015allRows=False in dBizobj, and allRow=True in dCursorMixin. 
     1016 
     1017Changed the name of dLocalize.loc() to dLocalize._() to match the il8n conventions, 
     1018but loc() still works as well. Changed dForm's loc() calls to _() calls. 
     1019 
     1020Added a 'save changes' prompt to dForm.requery() when there are unsaved changes, 
     1021allowing Yes/No/Cancel choices. 
     1022 
     1023------------------------------------------------------------------------ 
     1024r167 | paul | 2004-04-07 22:25:11 -0700 (Wed, 07 Apr 2004) | 1 line 
     1025 
     1026win32 compatibility 
     1027------------------------------------------------------------------------ 
     1028r166 | paul | 2004-04-07 19:43:52 -0700 (Wed, 07 Apr 2004) | 1 line 
     1029 
     1030Fixes for win32 compatibility. 
     1031------------------------------------------------------------------------ 
     1032r165 | paul | 2004-04-07 18:06:30 -0700 (Wed, 07 Apr 2004) | 2 lines 
     1033 
     1034I was testing on wxPython2.5/Win and found a couple minor problems. 
     1035 
     1036------------------------------------------------------------------------ 
     1037r164 | paul | 2004-04-07 11:18:24 -0700 (Wed, 07 Apr 2004) | 7 lines 
     1038 
     1039Use new Bind() syntax for dForm's custom events. 
     1040 
     1041Also, remove dVCR from __init__ in the classes directory, which I  
     1042swear I removed before. I just wiped my Dabo and did a new checkout, 
     1043at which point I got a 'no module dVCR' error. Weird. 
     1044 
     1045 
     1046------------------------------------------------------------------------ 
     1047r163 | paul | 2004-04-06 17:42:40 -0700 (Tue, 06 Apr 2004) | 11 lines 
     1048 
     1049Add class method getPropertyList() to dPemMixin, which provides a convenient 
     1050way to get a listing of the defined properties, either on a classref or on 
     1051an instance. Add some extra print statements inside dForm.addControl() to 
     1052show this in use. 
     1053 
     1054Fix some problems with the property accessors for some properties, specifically 
     1055initialize the values to None if not previously initialized. 
     1056 
     1057Implement Value property for data-aware controls. 
     1058 
     1059 
     1060------------------------------------------------------------------------ 
     1061r162 | paul | 2004-04-06 15:36:22 -0700 (Tue, 06 Apr 2004) | 17 lines 
     1062 
     1063Set more property definitions in controls and forms, matching up wx  
     1064get/set functions to VFP property naming styles. One good side 
     1065effect is that you can now always refer to self.Parent to get the  
     1066containing object. As soon as only dControls are in use everywhere, 
     1067we'll be able to say 'self.Parent.Parent...'. Next, I'll probably add a  
     1068self.Form property which would be analagous to VFP's ThisForm. 
     1069 
     1070Make messagebox's center themselves on top of the active form, not on  
     1071top of the top level form. 
     1072 
     1073Make the main menu bar appear on all forms, which is more Linux-like. This 
     1074should have no effect on Windows where there is just one main menu bar on the 
     1075parent MDI form but I have yet to test that. 
     1076 
     1077 
     1078 
     1079 
     1080------------------------------------------------------------------------ 
     1081r161 | paul | 2004-04-06 11:35:34 -0700 (Tue, 06 Apr 2004) | 2 lines 
     1082 
     1083Forgot to follow through converting SelectOnEntry to a property. 
     1084 
     1085------------------------------------------------------------------------ 
     1086r160 | paul | 2004-04-06 11:24:48 -0700 (Tue, 06 Apr 2004) | 35 lines 
     1087 
     1088Remove extraneous getSQL() from the bizobj, now that getSQL() is a  
     1089passthrough to the cursor's sqlbuilder. 
     1090 
     1091I found another example in dCursorMixin where we catch all exceptions 
     1092and then raise dError. This isn't right, as we want the actual exception 
     1093to propagate up to the global error handler, not to hide it. 
     1094 
     1095Remove sqlBuilder from dFormDataNav, as it is now exposed in the bizobj. 
     1096Set up the requery funct