git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30072 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			206 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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:
 | |
|     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)
 | |
|     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 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
 | |
| =============
 | |
| 
 | |
| - 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 (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
 | |
| 
 | |
| - Loose Coupling Event-Source Event-Sink
 | |
|     kind of the NextStep/C# very performant coupling, exposing events via
 | |
|     Metadata
 | |
| 
 | |
| - Add Lazy Init of Eventtables
 | |
| 
 | |
| 
 | |
| Modules/Plugins
 | |
| ===============
 | |
| 
 | |
| Architecture
 | |
| ------------
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 
 | |
| wxPrinting
 | |
| ==========
 | |
| 
 | |
| - 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'.
 | |
| 
 | |
| 
 | |
| 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$
 |