<> == 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 [[http://sourceforge.net/tracker/?atid=369015&group_id=19015&func=browse|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 Config''''''Parser 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 wxList''''''Ctrl called Multi''''''Column''''''List (multicolumnlist.py). It isn't supported in the resourceEditor yet. == Tree control == add {{{wxTreeCtrl}}} component There is a very simple component wrapper of wx''''''Tree''''''Ctrl (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 Process''''''Event 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 [[http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/1164913|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 == Dot notation (__setattr__ and __getattr__) == add dot notation to Menu, Background and Custom''''''Dialog 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 Bitmap''''''Canvas 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. [[http://www.python.org/peps/pep-0282.html|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 [[http://www.red-dove.com/python_logging.html|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 [[http://www.python.org/doc/current/lib/module-ConfigParser.html|ConfigParser]] module. "The Config''''''Parser 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 Config''''''Parser. == 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 Python''''''Card 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 Python''''''Card app starts up. The built-in [[http://www.python.org/doc/current/lib/built-in-funcs.html#l2h-17|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: * http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/1181106 == 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 [[http://pyro.sourceforge.net/|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. == Dynamic event handler creation and code reloading == * http://ianbicking.org/docs/Webware_reload.html