boa-constructor / Todo.txt

To do

High level features

Better default property handling, possibly cutting some cruft from
generated source by omitting unchanged defaults.

Native design time sizer support. I ran into a hitch while doing the
collection editors. Currently only one type of collection insertion
method is supported e.g. wxToolbar.AddTool().
Sizers need various methods and will be done as soon as I overcome this
Menus will then also support sub-menus and separators.


- More actions should use the progress bar
- Use Idle extensions
- Add toggleable action type
- Look into possibly extending wxApp's stdio redirection to speak to boa
- Goto CVS file from Open Module
- Switch to opening files in binary mode

- wx methods help: From Inspector while on property
- Tag matches in results from search  to be able to jump to the next match
  in a file. Also have to tidy up colouring so that only text outside <>
  are coloured. This currently breaks some links.
- Support wxHtmlHelpProjects (hhp, hhk, hhc) as filetypes and from the Palette
- Add py2exe page to the help

Documentation View
- Option: Don't print empty sections

Explore View
- Move method up/down actions
- Switch to explorer view in the class and focused on the
  current method

Tree Views
- Remember which nodes are open and reopen after refreshing


Collection editors
- Move up, move down

- Preferences to
  - Minimize on run
  - Toggle script debugging

- Some form of zooming (25%, 50%, 75%, 100%)

- Simple caching for slow connections
- Synch Explorer operations like moving files around with
  any open applications
- Check file operations against open modules
- Connect opened module if possible to an open app module
- Bind backspace to folder up, F2 to rename
- Bind Insert to New menu
- Key mappings!

- Better initial sizes for a few controls

- Conflict resolution editor integration
  - Accept, Reject
- Update/Commit/Diff from SourceView
- Visual interface to set options
- Update open modules if a cvs operation modified an
  open module
- Import needs to setup masks for recognised file types
- Run in background/non non modal
- Refesh action

- App may not have wxDialog as main frame because an app object
  does not quit with dialog as main frame.

- Enable/Disable toolbar buttons depending on state
  or only show applicable buttons (not enough space for all btns)

- Add Palette as Popup menu. e.g. New->Container/Layout->wxPanel
  - Bind Inser to Popup New menu
- Cursor keys should navigate thru controls

- Incremental typing lookup on wxListCtrl, hopefully in a base class high up :)

- More extension develpoment support
- Attempt to write an InnoSetup distultils target.


Code changes
- Better support (awareness) for unicode
  - replace type('') testing with isinstance(x, StringTypes)

More filetypes-
- BAT files on windows ?


Boa 1.0
- wxPython IDE with visual frame designer
- Working debugger
- Layout editors
- Integrated source control (cvs)
- Zope Support

Boa 2.0
- Database support
  - DB Aware controls
  - One possibility is hooking a db aware control
    framework to the ZODB
- C/C++ extension writing and possibly debugging support
- Help projects
- Validators


Refactoring tools
* Expand ExploreView to show params & method next to tree
* Refactorings
  * Move selection to method
     - Input: selection, method name
     - Process: Identify local variables
                      Pass vars as parameters
                      Correct indentation

  * Extract common expression
     - Input: common expr (selection), source (selection), new_name
     - Process: Find all occurences of common expr in source
                      Add initialiser above first use of source:
                          new_name = common_expr
                      Replace occurences with new_name

  * Renaming of Classes/Methods/Functions/Modules within an app,
     - This seems incredibly hard to do 100% correct given Python's
       dynamic nature, but there are interesting possibilities in
       post mortem inspection of profiler statistics.
       With a thorough test suite an accurate log of all every
       access to a certain function is recorded.
       This leads to...

  * Testing facilities, how should GUI classes be tested?
     - Window scraping sucks!
     - Look into PyUnit
     - Strategies:
       - Methods (as opposed to event methods) could be tested with
         another Tim Peters module :)
         Maybe it can be extended to handle events as follows:
         - List of events that can be posted and assertion of certain
           control values after posting
         I am not very optimistic about this route as none of my own GUI
         objects seem testable in a few lines and usually depend on other
         frames being open/initialised. Nevertheless this needs to be
         pursued and at least those that are testable should be tested.

* Code tools/shortcuts
  * Expand creation params:
    class MyClass(YourClass):
        def __init__(self, param1, param2, ...):
    class MyClass(YourClass):
        def __init__(self, param1, param2, ...):
            YourClass.__init__(self, param1, param2, ...)
            self.param1 = param1
            self.param2 = param2

  * Window id registration:
    [wxID_*, ...] = map(lambda i: wxNewId(), range(n))

  * Event creation:
        EVT_*(self, id, self.OnEvtFunc)
        def OnEvtFunc(self, event):

* Update attibutes in uml

Look at Idle's class browser source parser and Idle extensions

_Fundamental changes_

Handle more than one class per source file

Add inheritable components

Add revision entry frmt:
# Revision 1.23  1999/08/03 20:49:05  riaan