
wxWidgets Roadmap
Schedule | To-Do List | Done List
This page represents current thinking about where wxWidgets is going in the near,
medium and long-term. It also serves as a schedule for new releases so
that both developers and users can know what to expect when, at least approximately.
Note: In the following, the term 'stable' refers to a tested release from the
stabilised branch. 'Unstable' or 'development' does not mean that the release
will fall over a lot (although it might), but refers to the fact that
the unstable branch is subject to a lot of changes and should not normally be
used for production-quality applications, unless you really know what you're doing.
We have adopted the Linux kernel style of numbering system where odd minor version numbers are development
versions, and even numbers are stable versions. For example, 2.5.x are development releases,
and the next 'stable' or final release of it would normally be 2.6 (or 3.0.0 if
incrementing a major version).
Development versions that end up on the FTP site or CD-ROM, as opposed to remaining
in the CVS archive, are semi-stable -- i.e. they are checked for compilation and
run-time problems, but not as thoroughly as the stable versions.
Note that since much of the wxWidgets effort is voluntary, these are not hard-and-fast deadlines:
but we will endeavour to follow them as closely as possible.
This page only shows the things which are still left to do, please
look elsewhere to see the complete list of changes between the releases,
including the things which are already done.
Please send changes to this page to Julian Smart: julian@wxwidgets.org.
RELEASE
|
TYPE
|
SCHEDULED
|
RELEASED
|
TAG
|
DESCRIPTION
|
2.4.0
|
Stable |
1/2003 |
2003-01-06 |
WX_2_4_0 |
This was a stable release.
|
2.4.1
|
Stable |
2003-03-01 |
2003-06-13 |
WX_2_4_1 |
This was a stable release.
|
2.4.2
|
Stable |
2003-09-20 |
2003-09-23 |
WX_2_4_2 |
This is the last releases in 2.4 branch. It was purely a bug-fix release.
|
2.5.1
|
Development |
2003-09-30 |
2004-02-23 |
WX_2_5_1 |
This was an unstable release.
|
2.5.2
|
Development |
2004-06-01 |
2004-05-31 |
WX_2_5_2 |
This was an unstable release.
|
2.5.3
|
Development |
2004-10-17 |
2004-10-11 |
WX_2_5_3 |
This was an unstable release.
|
2.5.4
|
Development |
2005-02-01 |
2005-02-24 |
WX_2_5_4 |
This was an unstable release.
|
2.5.5
|
Development |
2005-04-03 |
2005-04-03 |
WX_2_5_5 |
This was an unstable release; the last before
2.6.0.
|
2.6.0
|
Stable |
2005-04-10 |
2005-04-21 |
WX_2_6_0 |
This was a stable release.
|
2.6.1
|
Stable |
2005-06-01 |
2005-06-03 |
WX_2_6_1 |
This was a stable release.
|
2.6.2
|
Stable |
2005-08-01 |
2005-09-20 |
WX_2_6_2 |
This is the latest stable release.
|
2.6.3
|
Stable |
2006-01-10 |
2006-03-25 |
WX_2_6_3 |
This is a bug-fix release in the stable branch.
|
2.7.0
|
Development |
2005-12-01 |
2006-08-06 |
WX_2_7_0 |
First release in new development cycle.
|
2.8.0
|
Stable |
mid 2007? |
? |
WX_2_8_0 |
Not decided yet (and maybe will be skipped entirely in favour of 3.0).
|
3.0.0
|
Stable |
end 2007? |
- |
WX_3_0_0 |
This stable release will have STL compatibility for compilers that
support templates fully. For example the wxString class will
derive from std::basic_string<>.
|
This is a collection of the various things which it would be nice to
include in wxWidgets. They may or may not be scheduled or funded.
If you're interested in helping with wxWidgets
development, one of the small projects below could be a great way to join the
team!
Developers: please feel free to add to these, and delete them when they are done.
You can also add to docs/todo.txt in CVS HEAD, and these items will
be transferred to this web page in due course.
Documentation
- Update this roadmap page, many items are out of date.
- The possibility of moving doc into header files with tool
support, or translation to XML with support from scripts (comparison of
headers and documentation).
- Detailed review of doc accuracy.
- wxDC: Precise definition of default/initial state.
- wxDC: Pixelwise definition of operations (e.g. last point of a
line not drawn).
- Events: for all controls state clearly when calling a member function results in an
event being generated and when it doesn't.
- Document all wxUSE_XXX settings (it would be also nice to centralize their
definitions in a single file instead of having them in several different setup.h)
- Update the coding standards guide
General
- High priority
- wxDataViewControl: combination of wxListCtrl and wxTreeCtrl
implementing natively for GTK2 and Mac OS.
- A rich text editor similar to GTK+ 2.0 GtkTextView but cross-platform.
Most platforms (wxGTK, wxMac, wxMSW) now support a good range of
rich text features and so we should initially extend the capabilities
of wxTextCtrl. Future, separate implementations of rich text widgets
are not ruled out.
- Possibility to use individual wxUniv controls from the native ports.
- Book, official tutorial.
- Under Unix: implement wx-config as a version and build
parameters independent script which would just read the
configuration files.
- Give wxFileSystem a better API.
- Integrate wxFileSystem with wxWidgets (currently only wxHtml uses it).
- Fix wxStream: problems with Eol(), LastCount(), buffering.
- Fix wxPostScriptDC. In Unicode mode, text comes out very small.
Possible alternatives: Cairo;
PangoPDF;
libpdf++;
look at what
other projects have done, such as Mozilla, OpenOffice and Tcl/Tk; fix/rewrite the existing
non-Pango PostScript output. We might get help from PostScript experts since
Unicode support in PostScript is a complex topic.
- Medium priority
- Alpha-blending for backgrounds, dragging, etc. Should be able to load
from PNG with alpha channel.
- wxHTML2, using native HTML renderers where available.
- write wxConfg implementation using XML as backend:
- portable wxXMLConfig for all platforms
- wxApplePrefConfig for working with .pref files on Mac OS X
- Project File Generation
We need a (GUI) tool to generate the project/makefiles for all supported
platforms/compilers. Not sure if it should be used for the library itself
(would be nice to have something like "make menuconfig" for Linux kernel
which allows you to navigate easily amon all of the configure/setup.h
options but there is a problem with distributing such tool as it can't be
compiled by the user because it is needed before the library is built) but
we definitely need it for the users makefiles.
utils/configtool is a step in the right direction for this tool.
- Events: loose coupling, event-source event-sink
- Lazy initialisation of event tables
- Module initialisation
We aim to arrive at a lazy initialization of modules only when they are first
needed. Dependency information between modules is needed. Dynamic Plug-In
loading and unloading must be compatible with that.
- wxStaticBox
Hide the platform problems (GTK: 'children' must be siblings) in encapsulation
in order to avoid problems on ports where the hierarchy must be 'correct'.
- masked text editor control; time entry control implemented using it
- wxReBar control (moveable toolbars, menubars).
- write a wxThreadEvent class (bad name, anything better?) which
would encapsulate Win32 event object and be emulated under other
platforms using POSIX conditions
- standard menu and toolbar customization dialogs
- MIME types code needs a cleanup and a GUI interface to allow
setting the MIME types and related information from the program
itself
- Low priority
- Synchronisation API between mobile and desktop.
- Extend and unify drag and drop handling (e.g. we need to specify multiple drop targets
that can handle multiple formats).
- Support for "skins", perhaps using a set of alternative
control and window classes written generically in wxWidgets.
- Serial and parallel port support.
- Modem and telephony support.
- Improve accessibility support.
- More examples.
- wxDC Support for point to char-position with text rendering
- wxLocale Extension (eg Currency)
- Must be able to portably specify relaying out a frame after the toolbar
has been destroyed or recreated. On wxMSW, this is done in
~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all,
but sending a wxSizeEvent will do it.
- Need wxRect wxToolBar::GetToolRect(int id) or similar so we can
align a popup menu with a toolbar button.
- No Append(wxArrayString) for wxChoice and wxComboBox in wxGTK.
Probably other functions too. Consider adding Insert to
these classes, as per the patch on SF.
- Rewrite wxFileHistory using wxString and wxArrayString, and
put in separate file.
- Add wxArrayString methods to wxTextValidator and any other
class that needs them.
-
Add wxNotebook::GetTabRect or similar so we can estimate
page size better in wxNotebookBase::CalcSizeFromPage.
- Add individual setters to wxScrollBar and other classes
that use a combined setter.
- Remove traces of old resource system from wxWizard.
- Have wxDirCtrl as alias for wxGenericDirCtrl.
- Allow instant reaction to left-up in a wxGrid cell
(extend editor API) to work around bad checkbox
behaviour (click, click, click, click away...) and
reduce checkbox size on non-Windows platforms.
- Add wxNotebook::HitTest for non-Windows platforms.
- Implement rebar for all platforms. This will help us
get closer to native look and feel, e.g. the gradient
shadow on XP toolbars.
- Fix wxHTTP/wxFTP which are currently broken, fix/rewrite wxURL
-
Add 3-state wxCheckBox (done now for MSW and Mac, to do
for other ports)
- In doc/view file selector, document type is selected by
extension, not the type selected in the (Windows) file selector.
- Add wxUSE_HOTKEY and any other missing options to configure.
- Code cleanup and removal: contrib/src/mmedia, contrib/src/applet?, Dialog Editor
wxMSW
- Finish Windows CE port. See the relevant Wiki pages
for more details.
- More code cleanup: all controls should use MSWGetStyle(),
implement DoGetBestSize() and so on
- Cleanup wxSlider, the positioning code is messy
wxGTK
- Implement wxList/TreeCtrl using native widgets
- Use more standard dialogs (colour, maybe open file in 2.4)
- GNOME/KDE integration libraries.
wxX11
- Some bugs and performance issues need to be addressed.
- Implement clipboard, drag and drop.
wxMac
- Unicode support
- Better way to specify About, Preferences menu ids under wxMac.
- wxMac font selector dialog is the generic font selector -
implement a selector that looks native.
-
Fix bug with filenames having non-ASCII characters.
- Implement tooltips, context-sensitive help (perhaps as balloon help).
- Implement popup window.
- Implement toggle buttons.
- Implement joystick support.
- Integrate patches from AOL.
- implement wxTextCtrl::HitTest()
- Miscellaneous fixes (approx. 300).
wxUniv
- work on the other ports
- wxUniv/Qt might be interesting for the hand held devices
using Qt as their native toolkit
- wxQNX for embedded market
Infrastructure
- Improve release engineering, by automating as much as possible.
Use SourceForge compile farm (or other facilities) to spin some of the releases using a specification
of the type of release, tag to use, etc.
- Improve QA: designate QA engineers for specific platforms (this
is done informally at present); use SourceForge compile farm (or other
facilities) for automated compiles.
- Improve mailing list search.
These items have been moved from the To-Do list.
- Build system redesign allowing to easily create add-on libraries
- Make it possible for the wxGUI ports to use wxBase library directly
- provide a standard implementation of wxRenderer so that the other
(i.e. native) ports could use the universal controls as well
- make wxListCtrl and wxTreeCtrl really themeable (depends on the
previous point as they should still be usable in the normal ports)
- Text selection in wxHTML
- STLization
- use wxEventLoop in all builds
wxApp and wxDialog should use wxEventLoop objects (the exact class can be
customized by user code by overriding some wxApp::CreateEventLoop())
instead of duplicating the same code
- Make ODBC Unicode-compatibl (to check)
- wxTextCtrl::HitTest() (for MSW and GTK2)
- more efficient idle handling