]> git.saurik.com Git - wxWidgets.git/blame - docs/todo30.txt
wxXmlNode::GetAttribute's pointer argument must not be NULL, check for it
[wxWidgets.git] / docs / todo30.txt
CommitLineData
fc2171bd 1Enhancements for wxWidgets 3.0
18efb19f
JS
2==============================
3
13acdb7d
VZ
4This table contains the brief summary of the issues below. Priority and
5Difficulty are values from 1 to 10 with 1 being the least important/difficult
6and 10 the most.
7
8Item Prio Diff
9----------------------------------------------------------------------------
10Namespaces 8 6
11STLization 10 8
12Making code exception-friendly 8 10
13Native RTTI 7 7
14TRUE/true 9 1
15
18efb19f 16
5e284dd5
SC
17C++ Features
18============
19
13acdb7d 20- Namespaces:
fc2171bd 21 We want to have all wxWidgets identifiers in "wx" namespace but provide
13acdb7d
VZ
22 typedefs/#defines for backwards compatibility. This can be done easily
23 for the classes and the only real problem are the enums as they would
24 all have to be duplicated at both the global scope (with "wx" prefix) and
25 in wx namespace (without it)
26
27- STLization
28 This involves providing optional wxString implementation using std::string
29 and doing the same for all our containers with the exception of wxHashMap
30 which should simply be rewritten using templates (but keeping the old
31 version for backwards compatibility -- ideally wx 3.0 would still be usable
32 without templates, even if not all of its features would be available then)
33
34- Exceptions
fc2171bd 35 We are not going to use exceptions in wxWidgets itself but our code should
13acdb7d
VZ
36 become exception safe. This is a very difficult task as it means that no
37 resource allocations (including memory, files, whatever) should be done
38 without using a smart pointer-like object to store the result as it is the
39 only way to prevent resource leaks in presence of exceptions
40
41- Real RTTI
42 Optionally use the real RTTI instead of wx emulation of it. Keep the
43 current stuff for backwards compatibility.
44
45- Complete replacing TRUE/FALSE with true/false
46 Trivial
47
5e284dd5
SC
48
49Core
50====
51
13acdb7d
VZ
52- use wxEventLoop in all builds
53 wxApp and wxDialog should use wxEventLoop objects (the exact class can be
54 customized by user code by overriding some wxApp::CreateEventLoop())
55 instead of duplicating the same code
56
5ec5e8ce
WS
57- remove wxCOMPATIBILITY
58 wxDEPRECATED() should be used with everything inside WXWIN_COMPATIBILITY_2_4.
59 The stuff inside WXWIN_COMPATIBILITY_2_6 probably should not be deprecated
60 (yet?) because this would give thousands of warnings for the existing code.
61 Exception is api documented as obsolete in 2.6 release already.
13acdb7d
VZ
62
63- Modularization/Build System
64 Candidates for components:
65 + contrib widgets (and maybe some of the ones currently in the core)
66 + wxHTML
67 + network stuff
68 + printing (?)
69 + ODBC classes
70 + ...
71
72- Project File Generation
73 We need a (GUI) tool to generate the project/makefiles for all supported
74 platforms/compilers. Not sure if it should be used for the library itself
75 (would be nice to have something like "make menuconfig" for Linux kernel
dbd94b75 76 which allows you to navigate easily among all of the configure/setup.h
13acdb7d
VZ
77 options but there is a problem with distributing such tool as it can't be
78 compiled by the user because it is needed before the library is built) but
79 we definitely need it for the users makefiles.
80
81- Properties/Member-Metadata, 2-Step Init with virtual create
13acdb7d 82
256b8649 83- Tidy code and add comments to headers (possibly in
7ebcb584
JS
84 Doxygen/Javadoc style)
85
5e284dd5
SC
86
87Documentation
88=============
89
94af6953
JS
90- The possibility of moving doc into header files with tool
91 support.
92- Detailed review of doc accuracy.
5e284dd5 93- wxDC : Precise definition of default/initial state.
94af6953
JS
94- wxDC : Pixelwise definition of operations (e.g. last point of a
95 line not drawn).
13acdb7d
VZ
96- Events:
97 For all controls state clearly when calling a member function results in an
98 event being generated and when it doesn't.
99- Update the coding standards guide
100
5e284dd5
SC
101
102wxEvents
103========
104
13acdb7d
VZ
105- Change Idle Handling
106 Current Implementation is using too many CPU cycles
5e284dd5 107
13acdb7d
VZ
108- Loose Coupling Event-Source Event-Sink
109 kind of the NextStep/C# very performant coupling, exposing events via
110 Metadata
5e284dd5 111
13acdb7d 112- Add Lazy Init of Eventtables
5e284dd5
SC
113
114
115Modules/Plugins
116===============
117
118Architecture
119------------
120
dbd94b75 121We aim to arrive at a lazy initialization of modules only when they are first
94af6953
JS
122needed. Dependency information between modules is needed. Dynamic Plug-In
123loading and unloading must be compatible with that.
5e284dd5 124
68fcaeb9 125
5e284dd5
SC
126wxUniversal
127===========
128
94af6953 129- Renderers within native ports.
5e284dd5 130
68fcaeb9 131
5e284dd5
SC
132wxPrinting
133==========
134
94af6953
JS
135- Page preflighting capabilities in order to determine number
136 of pages.
137- Preview UI enhancement.
5e284dd5 138
68fcaeb9 139
5e284dd5
SC
140wxStaticBox
141===========
142
94af6953
JS
143Hide the platform problems (GTK: 'children' must be siblings) in encapsulation
144in order to avoid problems on ports where the hierarchy must be
145'correct'.
5e284dd5 146
68fcaeb9
JS
147
148Removal of old code
149===================
150
151In addition to wxCOMPATIBILITY code:
152
68fcaeb9
JS
153- contrib/src/mmedia
154- contrib/src/applet?
7ebcb584 155- Dialog Editor
68fcaeb9 156
13acdb7d
VZ
157wxMiscellaneous
158===============
5e284dd5 159
13acdb7d
VZ
160- wxDC Support for point to char-position with text rendering
161- wxLocale Extension (eg Currency)
162- wxStreams review
163- wxURL?
fc2171bd 164- a way to tell wxWidgets to check for any non-portable usage,
1cfa5d8e
JS
165 for a given set of platforms. Sometimes you want to be able
166 to get away with non-portable usage, and sometimes not.
167 This is probably way too time-consuming to implement.
168- In headers, don't silently omit contents if the features for this
169 header is switched off. Instead, emit an error message.
7ebcb584 170- Implement native tree view and colour dialog in wxGTK.
e8737b66
JS
171- Better way to specify About, Preferences menu ids under wxMac.
172- Must be able to portably specify relaying out a frame after the toolbar
173 has been destroyed or recreated. On wxMSW, this is done in
174 ~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all,
175 but sending a wxSizeEvent will do it.
d2b354f9
JS
176- Need wxRect wxToolBar::GetToolRect(int id) or similar so we can
177 align a popup menu with a toolbar button.
e8737b66
JS
178- wxMac font selector dialog is the generic font selector -
179 horrible.
afd366a7
JS
180- No Append(wxArrayString&) for wxChoice and wxComboBox in wxGTK.
181 Probably other functions too. Consider adding Insert to
182 these classes, as per the patch on SF.
183- Rewrite wxFileHistory using wxString and wxArrayString, and
184 put in separate file.
c2d48b36
JS
185- Add wxArrayString methods to wxTextValidator and any other
186 class that needs them.
187- Add wxNotebook::GetTabRect or similar so we can estimate
188 page size better in wxNotebookBase::CalcSizeFromPage.
189- Add function to clear all wxNotebook tabs without
190 destroying the pages.
191- Add individual setters to wxScrollBar and other classes
192 that use a combined setter.
193- Remove traces of old resource system from wxWizard.
d7260478
JS
194- Have wxDirCtrl as alias for wxGenericDirCtrl.
195- Allow instant reaction to left-up in a wxGrid cell
196 (extend editor API) to work around bad checkbox
197 behaviour (click, click, click, click away...) and
198 reduce checkbox size on non-Windows platforms.
5c5428f9 199- Add wxNotebook::HitTest for non-Windows platforms.
eb269381
JS
200- Implement rebar for all platforms. This will help us
201 get closer to native look and feel, e.g. the gradient
202 shadow on XP toolbars.
5e284dd5 203
13acdb7d 204Version: $Id$