]>
Commit | Line | Data |
---|---|---|
1 | Enhancements for wxWidgets 3.0 | |
2 | ============================== | |
3 | ||
4 | This table contains the brief summary of the issues below. Priority and | |
5 | Difficulty are values from 1 to 10 with 1 being the least important/difficult | |
6 | and 10 the most. | |
7 | ||
8 | Item Prio Diff | |
9 | ---------------------------------------------------------------------------- | |
10 | Namespaces 8 6 | |
11 | STLization 10 8 | |
12 | Making code exception-friendly 8 10 | |
13 | Native RTTI 7 7 | |
14 | TRUE/true 9 1 | |
15 | ||
16 | ||
17 | C++ Features | |
18 | ============ | |
19 | ||
20 | - Namespaces: | |
21 | We want to have all wxWidgets identifiers in "wx" namespace but provide | |
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 | |
35 | We are not going to use exceptions in wxWidgets itself but our code should | |
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 | ||
48 | ||
49 | Core | |
50 | ==== | |
51 | ||
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 | ||
57 | - remove wxCOMPATIBILITY (1.X) | |
58 | At least WXWIN_COMPATIBILITY and maybe WXWIN_COMPATIBILITY_2 code should be | |
59 | removed from the library. wxDEPRECATED() should be used with everything | |
60 | inside WXWIN_COMPATIBILITY_2_2. The stuff inside WXWIN_COMPATIBILITY_2_4 | |
61 | probably should not be deprecated (yet?) because this would give thousands | |
62 | of warnings for the existing code. | |
63 | ||
64 | - Modularization/Build System | |
65 | Candidates for components: | |
66 | + contrib widgets (and maybe some of the ones currently in the core) | |
67 | + wxHTML | |
68 | + network stuff | |
69 | + printing (?) | |
70 | + ODBC classes | |
71 | + ... | |
72 | ||
73 | - Project File Generation | |
74 | We need a (GUI) tool to generate the project/makefiles for all supported | |
75 | platforms/compilers. Not sure if it should be used for the library itself | |
76 | (would be nice to have something like "make menuconfig" for Linux kernel | |
77 | which allows you to navigate easily amon all of the configure/setup.h | |
78 | options but there is a problem with distributing such tool as it can't be | |
79 | compiled by the user because it is needed before the library is built) but | |
80 | we definitely need it for the users makefiles. | |
81 | ||
82 | - Properties/Member-Metadata, 2-Step Init with virtual create | |
83 | ||
84 | - Tidy code and add comments to headers (possibly in | |
85 | Doxygen/Javadoc style) | |
86 | ||
87 | ||
88 | Documentation | |
89 | ============= | |
90 | ||
91 | - The possibility of moving doc into header files with tool | |
92 | support. | |
93 | - Detailed review of doc accuracy. | |
94 | - wxDC : Precise definition of default/initial state. | |
95 | - wxDC : Pixelwise definition of operations (e.g. last point of a | |
96 | line not drawn). | |
97 | - Events: | |
98 | For all controls state clearly when calling a member function results in an | |
99 | event being generated and when it doesn't. | |
100 | - Update the coding standards guide | |
101 | ||
102 | ||
103 | wxEvents | |
104 | ======== | |
105 | ||
106 | - Change Idle Handling | |
107 | Current Implementation is using too many CPU cycles | |
108 | ||
109 | - Loose Coupling Event-Source Event-Sink | |
110 | kind of the NextStep/C# very performant coupling, exposing events via | |
111 | Metadata | |
112 | ||
113 | - Add Lazy Init of Eventtables | |
114 | ||
115 | ||
116 | Modules/Plugins | |
117 | =============== | |
118 | ||
119 | Architecture | |
120 | ------------ | |
121 | ||
122 | We aim to arrive at a lazy initializiation of modules only when they are first | |
123 | needed. Dependency information between modules is needed. Dynamic Plug-In | |
124 | loading and unloading must be compatible with that. | |
125 | ||
126 | ||
127 | wxUniversal | |
128 | =========== | |
129 | ||
130 | - Renderers within native ports. | |
131 | ||
132 | ||
133 | wxPrinting | |
134 | ========== | |
135 | ||
136 | - Page preflighting capabilities in order to determine number | |
137 | of pages. | |
138 | - Preview UI enhancement. | |
139 | ||
140 | ||
141 | wxStaticBox | |
142 | =========== | |
143 | ||
144 | Hide the platform problems (GTK: 'children' must be siblings) in encapsulation | |
145 | in order to avoid problems on ports where the hierarchy must be | |
146 | 'correct'. | |
147 | ||
148 | ||
149 | Removal of old code | |
150 | =================== | |
151 | ||
152 | In addition to wxCOMPATIBILITY code: | |
153 | ||
154 | - contrib/src/mmedia | |
155 | - contrib/src/applet? | |
156 | - Dialog Editor | |
157 | ||
158 | wxMiscellaneous | |
159 | =============== | |
160 | ||
161 | - wxDC Support for point to char-position with text rendering | |
162 | - wxLocale Extension (eg Currency) | |
163 | - wxStreams review | |
164 | - wxURL? | |
165 | - a way to tell wxWidgets to check for any non-portable usage, | |
166 | for a given set of platforms. Sometimes you want to be able | |
167 | to get away with non-portable usage, and sometimes not. | |
168 | This is probably way too time-consuming to implement. | |
169 | - In headers, don't silently omit contents if the features for this | |
170 | header is switched off. Instead, emit an error message. | |
171 | - Implement native tree view and colour dialog in wxGTK. | |
172 | - Better way to specify About, Preferences menu ids under wxMac. | |
173 | - Must be able to portably specify relaying out a frame after the toolbar | |
174 | has been destroyed or recreated. On wxMSW, this is done in | |
175 | ~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all, | |
176 | but sending a wxSizeEvent will do it. | |
177 | - Need wxRect wxToolBar::GetToolRect(int id) or similar so we can | |
178 | align a popup menu with a toolbar button. | |
179 | - wxMac font selector dialog is the generic font selector - | |
180 | horrible. | |
181 | - No Append(wxArrayString&) for wxChoice and wxComboBox in wxGTK. | |
182 | Probably other functions too. Consider adding Insert to | |
183 | these classes, as per the patch on SF. | |
184 | - Rewrite wxFileHistory using wxString and wxArrayString, and | |
185 | put in separate file. | |
186 | - Add wxArrayString methods to wxTextValidator and any other | |
187 | class that needs them. | |
188 | - Add wxNotebook::GetTabRect or similar so we can estimate | |
189 | page size better in wxNotebookBase::CalcSizeFromPage. | |
190 | - Add function to clear all wxNotebook tabs without | |
191 | destroying the pages. | |
192 | - Add individual setters to wxScrollBar and other classes | |
193 | that use a combined setter. | |
194 | - Remove traces of old resource system from wxWizard. | |
195 | - Have wxDirCtrl as alias for wxGenericDirCtrl. | |
196 | - Allow instant reaction to left-up in a wxGrid cell | |
197 | (extend editor API) to work around bad checkbox | |
198 | behaviour (click, click, click, click away...) and | |
199 | reduce checkbox size on non-Windows platforms. | |
200 | - Add wxNotebook::HitTest for non-Windows platforms. | |
201 | - Implement rebar for all platforms. This will help us | |
202 | get closer to native look and feel, e.g. the gradient | |
203 | shadow on XP toolbars. | |
204 | ||
205 | Version: $Id$ |