Contents
- The Big PythonCard To Do List
- Changes
- Component framework
- Grid
- List Report or View Control
- Tree control
- Other components to add
- Calendar component
- resourceEditor
- Events
- EVT_UPDATE_UI and command events
- Printing
- Documentation
- Dot notation (__setattr__ and __getattr__)
- Persistent storage
- Window styles
- scrolling windows
- splitter support
- Layout Managers
- Resource file format
- Terminology
- Graphics
- Doc View framework
- Fonts
- Recent files
- wxNotebook
- Context help
- comma separated values (csv)
- Toolbar
- Progress dialog
- Logging
- ConfigParser
- User Files
- Scriptlets
- Component path
- Sample dependencies and exiting
- Samples
- Unicode
- Interapplication Communication
- Dynamic event handler creation and code reloading
The Big PythonCard To Do List
This list is in no particular order (and not very well named or organized), I just needed a place to list things that have come up on the list, so that I don't forget them and other people can easily make comments. The convention below is to prefix your comments with your initials.
There are additional feature requests that will probably get moved to this list.
Initials indicate comments by particular individuals.
- [DGS] Dan Shafer
- [KEA] Kevin Altis
- [AJT] Andy Todd
- [RDS] Rowland Smith
- [VMS] Vinay Sajip
- [PKE] Phil Edwards
Changes
- 2004-04-26 [KEA] removed naming conventions, Shell autocomplete method list, Menus, and Python 2.2 sections
- 2002-08-25 [DGS] removed dupilcated documentation to-dos and modified details of some tasks
- 2002-08-14 [KEA] added user files section
- 2002-08-02 [DGS] Updated documentation section
- 2002-08-01 [KEA] added Interapplication Communication section
- 2002-07-20 [DGS] added more documentation tasks
- 2002-07-15 [DGS] updated Documentation section with new tasks
- 2002-07-08 [KEA] added Unicode section
- 2002-07-01 [KEA] added Samples section, updated resourcEditor and Events sections
- 2002-06-24 [KEA] added Sample dependencies and exiting section
- 2002-06-18 [KEA] added Component path section
- 2002-06-10 [VMS] added comment about logging
- 2002-05-28 [DGS] cleaned up documentation to do list; removed completed projects from list
- 2002-05-27 [DGS] updated status of documentation tasks
- 2002-05-19 [DGS] updated status of documentation tasks
2002-04-30 [KEA] moved Layout Managers and Sizers to PythonCardLayoutManagers
- 2002-04-20 [KEA] added Scriptlets section
- 2002-04-20 [KEA] added note about font changes for wxPython 2.3.3
- 2002-04-19 [KEA] added Layout managers section
2002-04-17 [KEA] added link to PythonCardComponentFramework
2002-04-14 [KEA] added Logging and ConfigParser sections
Component framework
more work on component infrastructure
- object type for use in property editor whether attribute is read-only
Rowland is working on a more complete discussion of the PythonCardComponentFramework.
Grid
add wxGrid component or at least figure out what we can do with grids that makes sense in the context of PythonCard. is wxGrid too complex?
[AJT] The next revision of the dbBrowser sample will include a wxGrid widget. Initially it will just be raw wxPython code but will hopefully be revised into a proper component in subsequent releases.
List Report or View Control
add wxListCtrl or wxListView component
There is a very simple component wrapper of wxListCtrl called MultiColumnList (multicolumnlist.py). It isn't supported in the resourceEditor yet.
Tree control
add wxTreeCtrl component
There is a very simple component wrapper of wxTreeCtrl (tree.py). It isn't supported in the resourceEditor yet.
Other components to add
add wxCheckListBox component?
Calendar component
Calendar
- wrap date attributes finalize calendar event names
resourceEditor
- rename to layoutEditor?
- edit layout in separate window
- support some basic form of project
- multiple windows
- redo the property editor to look/work more like VB
- convert resourceEditor dialogs to use sizers
[Randy Lea] I would like a feature in resourceEditor to create a default directory to open/save resource files, or to remember the last directory used. We could just tack on another field in the user.config.txt file.
[PKE] Component tab ordering could be made easier to control by adding 'Up' and 'Down' buttons to the properties child window - editing resource files by hand to achieve this is quite risky.
[PKE] 2002-10-22 Update to the above - this functionality already exists! The 'Send To Back', 'Move Forward', 'Move Back' and 'Send To Front' options on the 'Components' menu do just what I was after.
Events
- add override to explicitly bind an event handler (observer example)
- close background, close app
- idle
- timers
[KEA] 2002-07-01 release 0.6.7 has on_idle, timers (on_timer), and on_close events
add wxPostEvent and/or ProcessEvent equivelants within the PythonCard event system?
EVT_UPDATE_UI and command events
add support for EVT_UPDATE_UI
- this is how you would normally change the state of a menu before the menu or menu item is opened. a number of menus and other controls can be impacted at once so this can tie together UI updates of a menu item, toolbar button, and other controls at once possibly integrate with command events
Printing
There was a recent thread on the mailing list about printing support.
Documentation
If you have viewpoints about documentation priorities, or if you would like to volunteer to create one of the documents on the list below (or some other document we've missed but you think is needed) send email to the mailing list.
- Document existing components' attributes and events
- Create a document based on the dialogs sample that includes a screen shot of each dialog and an explanation of how it is used (i.e., its name, its inputs, and what it returns) - DONE 8/2/02 - DGS Create a document similar to the dialogs sample showing how to create, interact with and use custom dialogs. Provide a multi-window application walk-through incorporating more complex controls, command events, and menu complexity (may turn out to be more than one walk-through or a multi-stage walk-through) Annotate existing samples by:
- expanding readme files as appropriate
- converting readme.txt to structuredText format in preparation for output to various display formats (HTML, docbook, etc.)
- providing a cross-reference of sample apps for easier location of key ideas demonstrated
Decide which, if any, doc standard(s) - PyDoc, DocUtils, etc. - to use on this project. We'll start by converting some of the readme.txt files associated with samples to structuredText and then experimenting with outputs to various formats such as HTML and docbook. I'd seriously welcome someone jumping in and volunteering to do this one. Document codeEditor, starting with simple help file integrated and keyed off F1 and then expanding to more detailed docs over time
- Create a document based on the dialogs sample that includes a screen shot of each dialog and an explanation of how it is used (i.e., its name, its inputs, and what it returns) - DONE 8/2/02 - DGS Create a document similar to the dialogs sample showing how to create, interact with and use custom dialogs. Provide a multi-window application walk-through incorporating more complex controls, command events, and menu complexity (may turn out to be more than one walk-through or a multi-stage walk-through) Annotate existing samples by:
Dot notation (__setattr__ and __getattr__)
add dot notation to Menu, Background and CustomDialog classes
Persistent storage
Window styles
scrolling windows
splitter support
Layout Managers
This is a big topic, so it has been moved to its own PythonCardLayoutManagers page.
Resource file format
resolve resource format
- possible switch to XML, explore wxWindows XML resource file limitations (sub-classes?) add strings to resource (improve how we do localization) change to use import instead of eval() if we don't use XML?
Terminology
resolve naming of stack/app, background/window/panel, etc.
Graphics
finish BitmapCanvas component
explore object canvas component options
change Bitmap class to be a direct subclass of wxBitmap?
Doc View framework
doc/view class (Background variant) for File->New/Open/Save with Edit and About menus (textEditor, resourceEditor).
If we don't have a doc/view set of classes, we might simply have a template directory or wizard to create say the "project files"
Fonts
add support for CSS-style lists
wxPython 2.3.3 dropped full support for the font family and will require reworking the font class in the framework and in particular how we use the fontDialog. I brought this up on wx-dev: http://lists.wxwindows.org/pipermail/wx-dev/2002-April/020150.html
Recent files
add support for recent file list
[KEA] 2002-06-12 wxFileHistory is in codeEditor
wxNotebook
add support for wxNotebook in the layout
- this might mean resolving the background/window panel/form issue above first
Context help
put context help support back in framework?
comma separated values (csv)
add Cliff Wells csv import/export
- Does Cliff still want to do this?
Toolbar
add Andy's simple toolbar
Progress dialog
add wxProgressDialog or create our own? Need an example of how the user will interact.
Logging
We currently have a log.py module for handling logging within PythonCard. I was considering making more use of it across the framework for debugging purposes instead of plain print statements when I found out about PEP 282. PEP 282 covers a logging system that might be included with Python 2.3. Vinay Sajip has been working on a system, which you can read about and download here.
It would be great if someone interested in logging could take ownership of this topic, investigate the status of the PEP, Vinay's code, and recommend whether we adopt his module. If it, or something like it becomes part of the standard Python libraries, my inclanation would be to drop our own custom module.
[AJT] As I understand it this PEP has been approved and will be included in the standard distribution. Its just a question of when Vinay finishes the module.
[VMS] As far as I'm concerned, the module (currently v0.4.5) is ready for inclusion in 2.3a1. The current distribution contains commented working code, test scripts, and TeX documentation. As it's my first contribution to Python, I'm not exactly sure of the how the library-incorporation process works in practice (e.g. timescale to get things agreed). Indications are that incorporation will happen soon, see http://mail.python.org/pipermail/python-dev/2002-May/024395.html.
ConfigParser
We should probably switch from the custom dictionary format config files to using the standard ConfigParser module.
"The ConfigParser class implements a basic configuration file parser language which provides a structure similar to what you would find on Microsoft Windows INI files. You can use this to write Python programs which can be customized by end users easily."
The pythoncard_config.py and pythoncard_user_config.py files should be switched.
The following samples use dictionaries for config info and need to be converted: findfiles, resourceEditor, textEditor, textRouter
The custdb sample already uses ConfigParser.
User Files
Formalize the location and naming conventions for files that are user-specific, including data files.
http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/1321593
- this can probably be considered done since we're using pythoncard_config in release 0.8
Scriptlets
One of the advantages of using Python as the language to build applications is that it can also be used as the built-in scripting language for an application. We have a built-in shell in PythonCard that can execute one statement at a time or an entire file at once using its runfile() method. runfile is used to execute the pycrustrc.py files when a PythonCard app starts up.
The built-in execfile() function in Python can also be used to execute a files contents with an optional global and local namespace.
If we execute a file in the shell, then there is a record of each command as it executes. The shell can also be used to minor editing, copying a group of commands and then saving those commands to a file. If a series of commands are executed in the shell then the results of those commands will impact the shell namespace. I don't think that is true for execfile.
For more info, see the post I made to the list:
Component path
Add support for a component path search list so that apps can have there own components and override the default components.
[KEA] 2002-06-29 I've added support for an application specific appcomponents directory that allows an application to override any of the default components as well as provide components that are specific to an application. This is probably an adequate solution.
Sample dependencies and exiting
Samples which require packages outside the normal distribution should fail gracefully by using a try/except block around the imports if they are at the top of the module file and setting a flag to indicate that the package or modules weren't found, then in the openBackground handler and if/then statement can be used to check the flag, alert the user and exit the app.
If the app exit process normally writes out config data or user data files then that should also check for the type of exit being performed, so that files aren't written in the case of an abnormal exit.
This should eliminate the problem of a user running samples and getting nothing except a traceback.
samples that need to be updated (assuming Python 2.2, not Python 2.1 which is missing xmlrpclib):
- addressesZODB (bdoz, StandaloneZODB)
- dbBrowser (MySQL, Oracle, gadfly; not sure which are actually required)
- stockprice (SOAP.py) [KEA] fixed in cvs
- textIndexer (StandaloneZODB)
Samples
See the http://wiki.wxpython.org/index.cgi/PythonCardSampleApps page for more ideas and to do items related to the samples and tools.
Unicode
wxPython 2.3.3 supports Unicode. There is a separate build for using Unicode. Strings used by the controls in a Unicode build will be returned in the u'form' and it is probably necessary to use encode('ascii', 'ignore') or other conversion methods.
The question is what special Unicode checks need to be made in the framework, tools, and samples for PythonCard to work with a wxPython Unicode build? How does it impact any localization/internationalization.
David Primmer is doing a sample that supports Unicode.
Interapplication Communication
We need a cross-platform method of doing Interapplication Communication with PythonCard apps. A simple case would be PIM apps such as an email app getting information from a contacts app.
I have been thinking a bit about using Jabber, but today I downloaded Pyro and want to investigate Pyro first. The docs and examples cover various ways to use Pyro. There was also an article published about Pyro on the Intel Developer Services http://cedar.intel.com/cgi-bin/ids.dll/content/content.jsp?cntKey=Generic+Editorial%3a%3aws_pyro&cntType=IDS_EDITORIAL&catCode=BMZ.