The Big Picture: ---------------- Release 0.1: Basic functionality and main API Release 0.2: Refactoring, menus, full event set, graphics, native dialogs; more complete functionality Release 0.3: Less API change, focus on robustness and stability Remaining objectives for version 0.1: ------------------------------------- Tentative release date: Mid-December, 2001 * Rename the update method * Fix remaining bugs and make sure the tests work in all backends * Make sure all backends convert attribute values so they are acceptable to the backend widgets * All backends should now use modify() rather than setting attributes directly. (ListBox.selection needs some rewriting here) * Decide whether programmatic changes to widgets (e.g. setting the selection of a ListBox) should generate the same events as when these changes are caused by the user * Make passive attributes (like text selection) active through basic event handling (Move to 0.2?) Objectives for version 0.2: --------------------------- Tentative release date: February 28th, 2002 * Refactor to reduce code duplication (by moving things to the core), simplify the backend API, and reduce coupling between core and backends (having only the bare necessities actually _in_ the backends). Reevaluate the _ensure_foo strategy? Methods like _tk_clicked, which contain no backend-specific code, should be lifted to the front-end, and linked to event triggers in the backend's _ensure_events. Should backends access frontend attributes through their internal or external names? A standard should be decided on. * Fix the relationship btw. size, position, and geometry wrt. MVC etc. * Adjust defaults, and improve window staggering (needs a mechanism to find the top window) * Add support for __delattr__ (in the form of _del_foobar) in Mixins.Attrib, and make sure it's used where applicable in the various modules. * Remove some redundante _ensure_foo calls, due to update() * Add a dialog class * Add support for native dialogs (e.g. file dialogs) * Add menus (including popup menus?) * Add full event system, based on messaging mechanism * Add a grid-based layout mechanism (May require minimum_size and preferred_size properties) * Add a Canvas widget for full graphics support * Add an optional status bar to Window * Change add() signature? * Add support for complex widgets (like wx tree widget, notebook, PMW-style widgets etc) with default implementations in the basic Anygui API (in the vein of the piddle/sping API) In other words, give a standardised way of integrating backend-specific features into Anygui programs. Longer term goals: ------------------ * Add advanced support for default, including default "shrink-wrapping" of windows and frames that aren't given an explicit size; will require a "preferred size" for all widgets, based on font sizes etc. * Support accessibility standards * Add support for styled text * Add support for importing xml files through xslt? (E.g. XUL) * Add instant model update for text widgets, not just on "focus lost"? * Make Anygui more thread-safe * Add constructive area geometry to Canvas Smaller issues: --------------- * Add support for borders? * Add .txt endings to README etc. * Create a Container mixin for add() and remove() methods?