]>
Commit | Line | Data |
---|---|---|
fc2171bd | 1 | Enhancements for wxWidgets 3.0 |
18efb19f JS |
2 | ============================== |
3 | ||
13acdb7d VZ |
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 | ||
18efb19f | 16 | |
5e284dd5 SC |
17 | C++ 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 | |
49 | Core | |
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 | ||
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 | |
dbd94b75 | 77 | which allows you to navigate easily among all of the configure/setup.h |
13acdb7d VZ |
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 | |
13acdb7d | 83 | |
256b8649 | 84 | - Tidy code and add comments to headers (possibly in |
7ebcb584 JS |
85 | Doxygen/Javadoc style) |
86 | ||
5e284dd5 SC |
87 | |
88 | Documentation | |
89 | ============= | |
90 | ||
94af6953 JS |
91 | - The possibility of moving doc into header files with tool |
92 | support. | |
93 | - Detailed review of doc accuracy. | |
5e284dd5 | 94 | - wxDC : Precise definition of default/initial state. |
94af6953 JS |
95 | - wxDC : Pixelwise definition of operations (e.g. last point of a |
96 | line not drawn). | |
13acdb7d VZ |
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 | ||
5e284dd5 SC |
102 | |
103 | wxEvents | |
104 | ======== | |
105 | ||
13acdb7d VZ |
106 | - Change Idle Handling |
107 | Current Implementation is using too many CPU cycles | |
5e284dd5 | 108 | |
13acdb7d VZ |
109 | - Loose Coupling Event-Source Event-Sink |
110 | kind of the NextStep/C# very performant coupling, exposing events via | |
111 | Metadata | |
5e284dd5 | 112 | |
13acdb7d | 113 | - Add Lazy Init of Eventtables |
5e284dd5 SC |
114 | |
115 | ||
116 | Modules/Plugins | |
117 | =============== | |
118 | ||
119 | Architecture | |
120 | ------------ | |
121 | ||
dbd94b75 | 122 | We aim to arrive at a lazy initialization of modules only when they are first |
94af6953 JS |
123 | needed. Dependency information between modules is needed. Dynamic Plug-In |
124 | loading and unloading must be compatible with that. | |
5e284dd5 | 125 | |
68fcaeb9 | 126 | |
5e284dd5 SC |
127 | wxUniversal |
128 | =========== | |
129 | ||
94af6953 | 130 | - Renderers within native ports. |
5e284dd5 | 131 | |
68fcaeb9 | 132 | |
5e284dd5 SC |
133 | wxPrinting |
134 | ========== | |
135 | ||
94af6953 JS |
136 | - Page preflighting capabilities in order to determine number |
137 | of pages. | |
138 | - Preview UI enhancement. | |
5e284dd5 | 139 | |
68fcaeb9 | 140 | |
5e284dd5 SC |
141 | wxStaticBox |
142 | =========== | |
143 | ||
94af6953 JS |
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'. | |
5e284dd5 | 147 | |
68fcaeb9 JS |
148 | |
149 | Removal of old code | |
150 | =================== | |
151 | ||
152 | In addition to wxCOMPATIBILITY code: | |
153 | ||
68fcaeb9 JS |
154 | - contrib/src/mmedia |
155 | - contrib/src/applet? | |
7ebcb584 | 156 | - Dialog Editor |
68fcaeb9 | 157 | |
13acdb7d VZ |
158 | wxMiscellaneous |
159 | =============== | |
5e284dd5 | 160 | |
13acdb7d VZ |
161 | - wxDC Support for point to char-position with text rendering |
162 | - wxLocale Extension (eg Currency) | |
163 | - wxStreams review | |
164 | - wxURL? | |
fc2171bd | 165 | - a way to tell wxWidgets to check for any non-portable usage, |
1cfa5d8e JS |
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. | |
7ebcb584 | 171 | - Implement native tree view and colour dialog in wxGTK. |
e8737b66 JS |
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. | |
d2b354f9 JS |
177 | - Need wxRect wxToolBar::GetToolRect(int id) or similar so we can |
178 | align a popup menu with a toolbar button. | |
e8737b66 JS |
179 | - wxMac font selector dialog is the generic font selector - |
180 | horrible. | |
afd366a7 JS |
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. | |
c2d48b36 JS |
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. | |
d7260478 JS |
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. | |
5c5428f9 | 200 | - Add wxNotebook::HitTest for non-Windows platforms. |
eb269381 JS |
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. | |
5e284dd5 | 204 | |
13acdb7d | 205 | Version: $Id$ |