]>
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 | ||
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 | |
87 | Documentation | |
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 | |
102 | wxEvents | |
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 | ||
115 | Modules/Plugins | |
116 | =============== | |
117 | ||
118 | Architecture | |
119 | ------------ | |
120 | ||
dbd94b75 | 121 | We aim to arrive at a lazy initialization of modules only when they are first |
94af6953 JS |
122 | needed. Dependency information between modules is needed. Dynamic Plug-In |
123 | loading and unloading must be compatible with that. | |
5e284dd5 | 124 | |
68fcaeb9 | 125 | |
5e284dd5 SC |
126 | wxUniversal |
127 | =========== | |
128 | ||
94af6953 | 129 | - Renderers within native ports. |
5e284dd5 | 130 | |
68fcaeb9 | 131 | |
5e284dd5 SC |
132 | wxPrinting |
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 |
140 | wxStaticBox |
141 | =========== | |
142 | ||
94af6953 JS |
143 | Hide the platform problems (GTK: 'children' must be siblings) in encapsulation |
144 | in order to avoid problems on ports where the hierarchy must be | |
145 | 'correct'. | |
5e284dd5 | 146 | |
68fcaeb9 JS |
147 | |
148 | Removal of old code | |
149 | =================== | |
150 | ||
151 | In addition to wxCOMPATIBILITY code: | |
152 | ||
68fcaeb9 JS |
153 | - contrib/src/mmedia |
154 | - contrib/src/applet? | |
7ebcb584 | 155 | - Dialog Editor |
68fcaeb9 | 156 | |
13acdb7d VZ |
157 | wxMiscellaneous |
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 | 204 | Version: $Id$ |