X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5e284dd5e8cb9089aa289e9e63df4151d196af55..006591def7badbee90d6df8bd8ac73f4c75495ad:/docs/todo30.txt diff --git a/docs/todo30.txt b/docs/todo30.txt index e641038ffa..07c689df1a 100644 --- a/docs/todo30.txt +++ b/docs/todo30.txt @@ -1,39 +1,115 @@ +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 -- Exception Handling +- 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 -- RTTI native Support, Properties/Member-Metadata, 2-Step Init with virtual create + 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 + wxDEPRECATED() should be used with everything inside WXWIN_COMPATIBILITY_2_4. + The stuff inside WXWIN_COMPATIBILITY_2_6 probably should not be deprecated + (yet?) because this would give thousands of warnings for the existing code. + Exception is api documented as obsolete in 2.6 release already. + +- 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 among 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 ============= -- Possibilities moving doc into header files with tool support ? directions ? +- The possibility of moving doc into header files with tool + support. +- Detailed review of doc accuracy. - wxDC : Precise definition of default/initial state. -- wxDC : Pixelwise definition of operations. +- 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 considerably CPU +- Add Lazy Init of Eventtables Modules/Plugins @@ -42,26 +118,41 @@ Modules/Plugins Architecture ------------ -we aim to arrive at a lazy initializiation of modules only when they are first -needed. A dependency information about on which other modules this depends is -needed. Dynamic Plug-In loading and unloading must be compatible with that. +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. + wxUniversal =========== -- Renderers within native ports +- Renderers within native ports. + wxPrinting ========== -- Page preflighting capabilities in order to determine number of pages -- Preview enhancement +- Page preflighting capabilities in order to determine number + of pages. +- Preview UI enhancement. + 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' +Hide the platform problems (GTK: 'children' must be siblings) in encapsulation +in order to avoid problems on ports where the hierarchy must be +'correct'. + + +Removal of old code +=================== + +In addition to wxCOMPATIBILITY code: + +- contrib/src/mmedia +- contrib/src/applet? +- Dialog Editor wxMiscellaneous =============== @@ -69,7 +160,45 @@ 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$