X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94af6953cf72340db3071f18760b53bb0d8b8431..31aa94e3ae3fc7a7547e41c99fe6ec760519d09d:/docs/todo30.txt diff --git a/docs/todo30.txt b/docs/todo30.txt index fe5a4a5f0e..506b3b4871 100644 --- a/docs/todo30.txt +++ b/docs/todo30.txt @@ -1,22 +1,89 @@ +Enhancements for wxWidgets 3.0 +============================== + +This table contains the brief summary of the issues below. Priority and +Difficulty are values from 1 to 10 with 1 being the least important/difficult +and 10 the most. + +Item Prio Diff +---------------------------------------------------------------------------- +Namespaces 8 6 +STLization 10 8 +Making code exception-friendly 8 10 +Native RTTI 7 7 +TRUE/true 9 1 + + C++ Features ============ -- Namespaces. -- STL containers compatibility (including using STL-like - adapters for wxWindows containers). -- Exception Handling: making the code exception-safe, and - also _using_ exceptions throughout the code. +- Namespaces: + We want to have all wxWidgets identifiers in "wx" namespace but provide + typedefs/#defines for backwards compatibility. This can be done easily + for the classes and the only real problem are the enums as they would + all have to be duplicated at both the global scope (with "wx" prefix) and + in wx namespace (without it) + +- STLization + This involves providing optional wxString implementation using std::string + and doing the same for all our containers with the exception of wxHashMap + which should simply be rewritten using templates (but keeping the old + version for backwards compatibility -- ideally wx 3.0 would still be usable + without templates, even if not all of its features would be available then) + +- Exceptions + We are not going to use exceptions in wxWidgets itself but our code should + become exception safe. This is a very difficult task as it means that no + resource allocations (including memory, files, whatever) should be done + without using a smart pointer-like object to store the result as it is the + only way to prevent resource leaks in presence of exceptions + +- Real RTTI + Optionally use the real RTTI instead of wx emulation of it. Keep the + current stuff for backwards compatibility. + +- Complete replacing TRUE/FALSE with true/false + Trivial + Core ==== -- Use wxEventLoop in all builds. -- Remove wxCOMPATIBILITY (1.X). -- Modularization/Build System/Project File Generation. -- A configuration tool to generate setup.h and configure - commands. -- RTTI native Support, Properties/Member-Metadata, 2-Step Init with - virtual create: e.g. Create(const wxArrayVariant&). +- 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 + +- remove wxCOMPATIBILITY (1.X) + At least WXWIN_COMPATIBILITY and maybe WXWIN_COMPATIBILITY_2 code should be + removed from the library. wxDEPRECATED() should be used with everything + inside WXWIN_COMPATIBILITY_2_2. The stuff inside WXWIN_COMPATIBILITY_2_4 + probably should not be deprecated (yet?) because this would give thousands + of warnings for the existing code. + +- Modularization/Build System + Candidates for components: + + contrib widgets (and maybe some of the ones currently in the core) + + wxHTML + + network stuff + + printing (?) + + ODBC classes + + ... + +- 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. + +- Properties/Member-Metadata, 2-Step Init with virtual create + +- Tidy code and add comments to headers (possibly in + Doxygen/Javadoc style) + Documentation ============= @@ -27,23 +94,23 @@ Documentation - 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. +- Update the coding standards guide + wxEvents ======== -Change Idle Handling --------------------- -Current Implementation is using too many CPU cycles. +- Change Idle Handling + Current Implementation is using too many CPU cycles -Loose Coupling Event-Source Event-Sink --------------------------------------- -Kind of the NextStep/C# very performant coupling, exposing -events via metadata. +- Loose Coupling Event-Source Event-Sink + kind of the NextStep/C# very performant coupling, exposing events via + Metadata -Remove Lazy Init of Eventtables -------------------------------- -Was introduced as a bug-fix, not needed anymore, consumes -considerable CPU time. +- Add Lazy Init of Eventtables Modules/Plugins @@ -56,11 +123,13 @@ We aim to arrive at a lazy initializiation 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. + wxUniversal =========== - Renderers within native ports. + wxPrinting ========== @@ -68,6 +137,7 @@ wxPrinting of pages. - Preview UI enhancement. + wxStaticBox =========== @@ -75,11 +145,61 @@ Hide the platform problems (GTK: 'children' must be siblings) in encapsulation in order to avoid problems on ports where the hierarchy must be 'correct'. -Miscellaneous -============= -- wxDC Support for point to char-position with text rendering. -- wxLocale Extension (eg currency). -- wxStreams review. +Removal of old code +=================== + +In addition to wxCOMPATIBILITY code: +- contrib/src/mmedia +- contrib/src/applet? +- Dialog Editor + +wxMiscellaneous +=============== +- wxDC Support for point to char-position with text rendering +- wxLocale Extension (eg Currency) +- wxStreams review +- wxURL? +- a way to tell wxWidgets to check for any non-portable usage, + for a given set of platforms. Sometimes you want to be able + to get away with non-portable usage, and sometimes not. + This is probably way too time-consuming to implement. +- In headers, don't silently omit contents if the features for this + header is switched off. Instead, emit an error message. +- Implement native tree view and colour dialog in wxGTK. +- Better way to specify About, Preferences menu ids under wxMac. +- 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. +- wxMac font selector dialog is the generic font selector - + horrible. +- 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 function to clear all wxNotebook tabs without + destroying the pages. +- 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. + +Version: $Id$