]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/todo30.txt
replaced my recent GSocket_SetReuseAddr() addition with GSocket_SetReusable() from...
[wxWidgets.git] / docs / todo30.txt
index e641038ffa1bf7054b7e27d3c0c51d33de0ec7d5..506b3b4871f619b5001501df3d3d4f891993debf 100644 (file)
+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
+    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)
-- Modularization/Build System/Project File Generation
-- RTTI native Support, Properties/Member-Metadata, 2-Step Init with virtual create
+    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
 =============
 
-- 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 +119,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 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
+- 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 +161,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$