Difference between revisions of "Development: Todo List"

From WxWiki
Jump to navigation Jump to search
(moved doc TODO list to the doxygen manual)
(moved port-specific TODO lists to the wiki)
Line 30: Line 30:
  
 
* add wxFont::SetAntiAliasingMode(enum { Default, On, Off }) method which can be implemented easily at least for MSW by using the corresponding LOGFONT::lfQuality values.
 
* add wxFont::SetAntiAliasingMode(enum { Default, On, Off }) method which can be implemented easily at least for MSW by using the corresponding LOGFONT::lfQuality values.
 +
 +
* Add wxUSE_HOTKEY and any other missing options to configure.
  
 
=== Low priority ===
 
=== Low priority ===
Line 59: Line 61:
 
* Improve accessibility support.
 
* Improve accessibility support.
 
* wxDC Support for point to char-position with text rendering
 
* wxDC Support for point to char-position with text rendering
 +
 +
 +
== Port-specific TODO lists ==
 +
 +
=== wxCocoa ===
 +
 +
* Classes that are still complete stubs:
 +
wxPen
 +
wxRegion
 +
wxIcon
 +
wxCursor
 +
wxFont
 +
wxFontEnumerator
 +
 +
* Dynamically linked library
 +
- wxCocoa doesn't yet have enough implementation to compile to a dylib.
 +
 +
=== wxMac ===
 +
 +
* Implement toggle buttons
 +
* Implement popup windows
 +
* Implement joystick support
 +
* Fix wxGetKeyState using HID and GetKeys and low memory keymap
 +
* Add sound manager part to wxSound and commit it as classic also
 +
* Focus rectangles are off on smaller text controls on 10.2 (10.3 also?)
 +
 +
=== wxMotif ===
 +
 +
General comment: see the following site for useful Motif widgets.
 +
ftp://ftp.x.org/contrib/widgets/motif
 +
 +
Also, grep for TODO comments in source.
 +
 +
High Priority:
 +
 +
- Have a central/per app file for colour settings, with a wxWin
 +
  app to allow changing settings interactively.
 +
 +
- Implementation of default event processing (i.e. passing on an intercepted
 +
  event such as OnChar to the system). Currently, such events are processed
 +
  anyway, so for example intercepting left-click in a widget doesn't disable
 +
  the default behaviour. See TODOs in window.cpp.
 +
 +
- wxToolTip
 +
 +
- Miscellaneous events.
 +
 +
- Allow wxFrame and other widgets to have mouse event handlers.
 +
 +
Low Priority:
 +
 +
- Painting a retained window could be optimized further (see
 +
  wxWindow::DoPaint).
 +
 +
- Visuals: how to select an appropriate one? See Thomas Runge's
 +
  visual patch for 1.68 -- should be straightforward to port to 2.0.
 +
 +
- Work out why XFreeFont in font.cpp produces a segv. This is
 +
  currently commented out, which presumably causes a memory leak.
 +
 +
- New wxHelp version: try using the XmHTML widget at
 +
  http://www.xs4all.nl/~ripley/XmHTML/.
 +
 +
  We need to:
 +
  - make a minimal distribution under wx/src/xmhtml, just enough
 +
    to compile the source.
 +
  - add XMHTML_C_SRC to src/motif/makefile.unx with the source files
 +
    listed.
 +
  - make sure we can compile the sources, passing the correct
 +
    flags for zlib/png compilation.
 +
  - make a wxHTMLWindow class from e.g. examples/example_2.c. Should
 +
    probably make the cache and history facilities part of the class.
 +
  - add the driver code to src/motif/helphtml.cpp (a frame, toolbar,
 +
    history list).
 +
 +
- Drag and drop. Use a standard X drag
 +
  and drop standard - see http://www.cco.caltech.edu/~jafl/xdnd/
 +
  or use Motif drag and drop as described here:
 +
  http://www.motifzone.com/tmd/articles/DnD/dnd.html
 +
 +
- Optimize colour management so we don't get clashes when e.g.
 +
  Netscape is running. See:
 +
  http://www.motifzone.com/tmd/articles/John_Cwikla/index.html
 +
 +
- wxRCConfig (a config class using X .rc files). Could simply
 +
  implement it in terms of current wxGet/WriteResource functions.
 +
 +
- Miscellaneous classes e.g. wxJoystick (identical to GTK's one for Linux)
 +
 +
- Work out why wxTextCtrl doesn't work as a stream buffer under gcc
 +
  
 
== Improvements to the existing code ==
 
== Improvements to the existing code ==
  
 
[[Development: Incomplete API|This page]] lists many of the classes/methods which are not implemented under all platforms. In addition, our [http://sf.net/tracker/?group_id=9863&atid=109863 bug tracker] page has an almost unlimited supply of bugs to fix.
 
[[Development: Incomplete API|This page]] lists many of the classes/methods which are not implemented under all platforms. In addition, our [http://sf.net/tracker/?group_id=9863&atid=109863 bug tracker] page has an almost unlimited supply of bugs to fix.
 
  
 
== Infrastructure ==
 
== Infrastructure ==

Revision as of 08:20, 31 March 2008

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!

New Development

High priority

  • Provide a possibility to use individual wxUniv controls from the native ports.
  • Give wxFileSystem a better API and further integrate it with wxWidgets (currently only wxHtml uses it but it could be also used by many other classes)
  • wxHTML2, using native HTML renderers where available.
  • Add image support to wxButton (Jamie Gadd has the patch for wxMSW, with a bit work it should be extended to others ports) merging wxBitmapButton with wxButton, see this thread for more information.
  • Provide character classification and string case conversion, sorting and comparison functions working on full Unicode range and not just on characters in the current locale (either using native API of each platform or ICU as discussed in this thread).
  • Implement wxMaskedTextCtrl in C++ (it's already available in wxPython)

Medium priority

  • MIME types code needs a cleanup and a GUI interface to allow setting the MIME types and related information from the program itself
  • Avoid calling the wxYield family of functions in internal code. wxYield causes problems in combination with pending events leading to all sorts of strange side-effects.
  • Move wxApp::Yield() to wxEventLoop::Yield(), where it logically belongs (see wxDFB port for partial step in this direction)
  • add wxFont::SetAntiAliasingMode(enum { Default, On, Off }) method which can be implemented easily at least for MSW by using the corresponding LOGFONT::lfQuality values.
  • Add wxUSE_HOTKEY and any other missing options to configure.

Low priority

  • Write wxConfig implementation using XML as backend:
    • portable wxXMLConfig for all platforms (there is a version doing it here and here but it duplicates too much of wxFileConfig code unfortunately)
    • wxApplePrefConfig for working with .pref files on Mac OS X
  • 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'.
  • Standard menu and toolbar customization dialogs
  • Extend wxLocale to return more information, e.g. currency formatting, list separator, ...
  • Improve wxSpinCtrl to allow showing something else than just its value in the text field. This should be done by implementing support for wxSpinCtrlFormatter class which would have Format() and Parse() virtual methods which could be implemented by a user-defined class which the user coode would associate with the control and which would mediate the conversion between the value and the text field contents.
  • Fix alpha handling in wxIconBundle under MSW (see this thread)
  • Update the coding standards guide

Everything else

Most of the following items need to be discussed before being implemented.

  • 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).
  • Serial and parallel port support.
  • Modem and telephony support.
  • Improve accessibility support.
  • wxDC Support for point to char-position with text rendering


Port-specific TODO lists

wxCocoa

  • Classes that are still complete stubs:

wxPen wxRegion wxIcon wxCursor wxFont wxFontEnumerator

  • Dynamically linked library

- wxCocoa doesn't yet have enough implementation to compile to a dylib.

wxMac

  • Implement toggle buttons
  • Implement popup windows
  • Implement joystick support
  • Fix wxGetKeyState using HID and GetKeys and low memory keymap
  • Add sound manager part to wxSound and commit it as classic also
  • Focus rectangles are off on smaller text controls on 10.2 (10.3 also?)

wxMotif

General comment: see the following site for useful Motif widgets. ftp://ftp.x.org/contrib/widgets/motif

Also, grep for TODO comments in source.

High Priority:

- Have a central/per app file for colour settings, with a wxWin

 app to allow changing settings interactively.

- Implementation of default event processing (i.e. passing on an intercepted

 event such as OnChar to the system). Currently, such events are processed
 anyway, so for example intercepting left-click in a widget doesn't disable
 the default behaviour. See TODOs in window.cpp.

- wxToolTip

- Miscellaneous events.

- Allow wxFrame and other widgets to have mouse event handlers.

Low Priority:

- Painting a retained window could be optimized further (see

 wxWindow::DoPaint).

- Visuals: how to select an appropriate one? See Thomas Runge's

 visual patch for 1.68 -- should be straightforward to port to 2.0.

- Work out why XFreeFont in font.cpp produces a segv. This is

 currently commented out, which presumably causes a memory leak.

- New wxHelp version: try using the XmHTML widget at

 http://www.xs4all.nl/~ripley/XmHTML/.
 We need to:
 - make a minimal distribution under wx/src/xmhtml, just enough
   to compile the source.
 - add XMHTML_C_SRC to src/motif/makefile.unx with the source files
   listed.
 - make sure we can compile the sources, passing the correct
   flags for zlib/png compilation.
 - make a wxHTMLWindow class from e.g. examples/example_2.c. Should
   probably make the cache and history facilities part of the class.
 - add the driver code to src/motif/helphtml.cpp (a frame, toolbar,
   history list).

- Drag and drop. Use a standard X drag

 and drop standard - see http://www.cco.caltech.edu/~jafl/xdnd/
 or use Motif drag and drop as described here:
 http://www.motifzone.com/tmd/articles/DnD/dnd.html

- Optimize colour management so we don't get clashes when e.g.

 Netscape is running. See:
 http://www.motifzone.com/tmd/articles/John_Cwikla/index.html

- wxRCConfig (a config class using X .rc files). Could simply

 implement it in terms of current wxGet/WriteResource functions.

- Miscellaneous classes e.g. wxJoystick (identical to GTK's one for Linux)

- Work out why wxTextCtrl doesn't work as a stream buffer under gcc


Improvements to the existing code

This page lists many of the classes/methods which are not implemented under all platforms. In addition, our bug tracker page has an almost unlimited supply of bugs to fix.

Infrastructure

  • Set up [buildbot] or similar system for continuous build tests
  • Use SourceForge compile farm (or other facilities) to automatically spin at least some of the releases using a specification of the type of release, tag to use, etc.
  • Make building Debian packages less painful, in particular try to make it possible to build them in the source tree instead of current roundabout way; automate building of both ANSI and Unicode packages (the former doesn't work with dpkg-buildpackage as there is no way to pass WX_UNICODE=0 to debian/rules when using it).