]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: platinfo.h | |
3 | // Purpose: interface of wxPlatformInfo | |
4 | // Author: wxWidgets team | |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows license | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | ||
10 | /** | |
11 | The following are the operating systems which are recognized by wxWidgets and | |
12 | whose version can be detected at run-time. | |
13 | ||
14 | The values of the constants are chosen so that they can be combined as flags; | |
15 | this allows to check for operating system families like e.g. wxOS_MAC and wxOS_UNIX. | |
16 | */ | |
17 | enum wxOperatingSystemId | |
18 | { | |
19 | wxOS_UNKNOWN = 0, //!< returned on error | |
20 | ||
21 | wxOS_MAC_OS = 1 << 0, //!< Apple Mac OS 8/9/X with Mac paths | |
22 | wxOS_MAC_OSX_DARWIN = 1 << 1, //!< Apple Mac OS X with Unix paths | |
23 | wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN, | |
24 | ||
25 | wxOS_WINDOWS_9X = 1 << 2, //!< Windows 9x family (95/98/ME) | |
26 | wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (NT/2000/XP) | |
27 | wxOS_WINDOWS_MICRO = 1 << 4, //!< MicroWindows | |
28 | wxOS_WINDOWS_CE = 1 << 5, //!< Windows CE (Window Mobile) | |
29 | wxOS_WINDOWS = wxOS_WINDOWS_9X | | |
30 | wxOS_WINDOWS_NT | | |
31 | wxOS_WINDOWS_MICRO | | |
32 | wxOS_WINDOWS_CE, | |
33 | ||
34 | wxOS_UNIX_LINUX = 1 << 6, //!< Linux | |
35 | wxOS_UNIX_FREEBSD = 1 << 7, //!< FreeBSD | |
36 | wxOS_UNIX_OPENBSD = 1 << 8, //!< OpenBSD | |
37 | wxOS_UNIX_NETBSD = 1 << 9, //!< NetBSD | |
38 | wxOS_UNIX_SOLARIS = 1 << 10, //!< SunOS | |
39 | wxOS_UNIX_AIX = 1 << 11, //!< AIX | |
40 | wxOS_UNIX_HPUX = 1 << 12, //!< HP/UX | |
41 | wxOS_UNIX = wxOS_UNIX_LINUX | | |
42 | wxOS_UNIX_FREEBSD | | |
43 | wxOS_UNIX_OPENBSD | | |
44 | wxOS_UNIX_NETBSD | | |
45 | wxOS_UNIX_SOLARIS | | |
46 | wxOS_UNIX_AIX | | |
47 | wxOS_UNIX_HPUX, | |
48 | ||
49 | wxOS_DOS = 1 << 15, //!< Microsoft DOS | |
50 | wxOS_OS2 = 1 << 16 //!< OS/2 | |
51 | }; | |
52 | ||
53 | /** | |
54 | The list of wxWidgets ports. | |
55 | ||
56 | Some of them can be used with more than a single (native) toolkit; | |
57 | e.g. wxWinCE port sources can be used with smartphones, pocket PCs | |
58 | and handheld devices SDKs. | |
59 | */ | |
60 | enum wxPortId | |
61 | { | |
62 | wxPORT_UNKNOWN = 0, //!< returned on error | |
63 | ||
64 | wxPORT_BASE = 1 << 0, //!< wxBase, no native toolkit used | |
65 | ||
66 | wxPORT_MSW = 1 << 1, //!< wxMSW, native toolkit is Windows API | |
67 | wxPORT_MOTIF = 1 << 2, //!< wxMotif, using [Open]Motif or Lesstif | |
68 | wxPORT_GTK = 1 << 3, //!< wxGTK, using GTK+ 1.x, 2.x, GPE or Maemo | |
69 | wxPORT_MGL = 1 << 4, //!< wxMGL, using wxUniversal | |
70 | wxPORT_X11 = 1 << 5, //!< wxX11, using wxUniversal | |
71 | wxPORT_OS2 = 1 << 6, //!< wxOS2, using OS/2 Presentation Manager | |
72 | wxPORT_MAC = 1 << 7, //!< wxMac, using Carbon or Classic Mac API | |
73 | wxPORT_COCOA = 1 << 8, //!< wxCocoa, using Cocoa NextStep/Mac API | |
74 | wxPORT_WINCE = 1 << 9, //!< wxWinCE, toolkit is WinCE SDK API | |
75 | wxPORT_PALMOS = 1 << 10, //!< wxPalmOS, toolkit is PalmOS API | |
76 | wxPORT_DFB = 1 << 11 //!< wxDFB, using wxUniversal | |
77 | }; | |
78 | ||
79 | ||
80 | /** | |
81 | The architecture of the operating system | |
82 | (regardless of the build environment of wxWidgets library - see ::wxIsPlatform64bit() | |
83 | documentation for more info). | |
84 | */ | |
85 | enum wxArchitecture | |
86 | { | |
87 | wxARCH_INVALID = -1, //!< returned on error | |
88 | ||
89 | wxARCH_32, //!< 32 bit | |
90 | wxARCH_64, | |
91 | ||
92 | wxARCH_MAX | |
93 | }; | |
94 | ||
95 | ||
96 | /** | |
97 | The endian-ness of the machine. | |
98 | */ | |
99 | enum wxEndianness | |
100 | { | |
101 | wxENDIAN_INVALID = -1, //!< returned on error | |
102 | ||
103 | wxENDIAN_BIG, //!< 4321 | |
104 | wxENDIAN_LITTLE, //!< 1234 | |
105 | wxENDIAN_PDP, //!< 3412 | |
106 | ||
107 | wxENDIAN_MAX | |
108 | }; | |
109 | ||
110 | ||
111 | /** | |
112 | @class wxPlatformInfo | |
113 | @wxheader{platinfo.h} | |
114 | ||
115 | This class holds informations about the operating system and the toolkit that | |
116 | the application is running under and some basic architecture info of the machine | |
117 | where it's running. | |
118 | ||
119 | @library{wxbase} | |
120 | @category{misc} | |
121 | ||
122 | @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(), | |
123 | wxAppTraits | |
124 | */ | |
125 | class wxPlatformInfo : public wxObject | |
126 | { | |
127 | public: | |
128 | ||
129 | /** | |
130 | Initializes the instance with the values corresponding to the currently | |
131 | running platform. | |
132 | ||
133 | This is a fast operation because it only requires to copy the values | |
134 | internally cached for the currently running platform. | |
135 | ||
136 | @see Get() | |
137 | */ | |
138 | wxPlatformInfo(); | |
139 | ||
140 | /** | |
141 | Initializes the object using given values. | |
142 | */ | |
143 | wxPlatformInfo(wxPortId pid = wxPORT_UNKNOWN, | |
144 | int tkMajor = -1, | |
145 | int tkMinor = -1, | |
146 | wxOperatingSystemId id = wxOS_UNKNOWN, | |
147 | int osMajor = -1, | |
148 | int osMinor = -1, | |
149 | wxArchitecture arch = wxARCH_INVALID, | |
150 | wxEndianness endian = wxENDIAN_INVALID); | |
151 | ||
152 | ||
153 | /** | |
154 | Returns @true if the OS version is at least @c major.minor. | |
155 | ||
156 | @see GetOSMajorVersion(), GetOSMinorVersion(), | |
157 | CheckToolkitVersion() | |
158 | */ | |
159 | bool CheckOSVersion(int major, int minor) const; | |
160 | ||
161 | /** | |
162 | Returns @true if the toolkit version is at least @c major.minor. | |
163 | ||
164 | @see GetToolkitMajorVersion(), | |
165 | GetToolkitMinorVersion(), CheckOSVersion() | |
166 | */ | |
167 | bool CheckToolkitVersion(int major, int minor) const; | |
168 | ||
169 | /** | |
170 | Returns the global wxPlatformInfo object, initialized with the values | |
171 | for the currently running platform. | |
172 | */ | |
173 | static const wxPlatformInfo Get(); | |
174 | ||
175 | /** | |
176 | Converts the given string to a wxArchitecture enum value or to | |
177 | @c wxARCH_INVALID if the given string is not a valid architecture string | |
178 | (i.e. does not contain nor @c 32 nor @c 64 strings). | |
179 | */ | |
180 | static wxArchitecture GetArch(const wxString& arch); | |
181 | ||
182 | /** | |
183 | Returns the name for the given wxArchitecture enumeration value. | |
184 | */ | |
185 | static wxString GetArchName(wxArchitecture arch) const; | |
186 | ||
187 | /** | |
188 | Returns the name for the architecture of this wxPlatformInfo instance. | |
189 | */ | |
190 | wxString GetArchName() const; | |
191 | ||
192 | /** | |
193 | Returns the architecture ID of this wxPlatformInfo instance. | |
194 | */ | |
195 | wxArchitecture GetArchitecture() const; | |
196 | ||
197 | /** | |
198 | Converts the given string to a wxEndianness enum value or to | |
199 | @c wxENDIAN_INVALID if the given string is not a valid endianness | |
200 | string (i.e. does not contain nor little nor big strings). | |
201 | */ | |
202 | static wxEndianness GetEndianness(const wxString& end) const; | |
203 | ||
204 | /** | |
205 | Returns the endianness ID of this wxPlatformInfo instance. | |
206 | */ | |
207 | wxEndianness GetEndianness() const; | |
208 | ||
209 | /** | |
210 | Returns name for the given wxEndianness enumeration value. | |
211 | */ | |
212 | static wxString GetEndiannessName(wxEndianness end) const; | |
213 | ||
214 | /** | |
215 | Returns the name for the endianness of this wxPlatformInfo instance. | |
216 | */ | |
217 | wxString GetEndiannessName() const; | |
218 | ||
219 | /** | |
220 | Returns the run-time major version of the OS associated with this | |
221 | wxPlatformInfo instance. | |
222 | ||
223 | @see ::wxGetOsVersion(), CheckOSVersion() | |
224 | */ | |
225 | int GetOSMajorVersion() const; | |
226 | ||
227 | /** | |
228 | Returns the run-time minor version of the OS associated with this | |
229 | wxPlatformInfo instance. | |
230 | ||
231 | @see ::wxGetOsVersion(), CheckOSVersion() | |
232 | */ | |
233 | int GetOSMinorVersion() const; | |
234 | ||
235 | /** | |
236 | Returns the operating system family name for the given wxOperatingSystemId | |
237 | enumeration value: @c Unix for @c wxOS_UNIX, @c Macintosh for @c wxOS_MAC, | |
238 | @c Windows for @c wxOS_WINDOWS, @c DOS for @c wxOS_DOS, @c OS/2 for @c wxOS_OS2. | |
239 | */ | |
240 | static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os) const; | |
241 | ||
242 | /** | |
243 | Returns the operating system family name of the OS associated with this | |
244 | wxPlatformInfo instance. | |
245 | */ | |
246 | wxString GetOperatingSystemFamilyName() const; | |
247 | ||
248 | /** | |
249 | Converts the given string to a wxOperatingSystemId enum value or to @c | |
250 | wxOS_UNKNOWN if the given string is not a valid operating system name. | |
251 | */ | |
252 | static wxOperatingSystemId GetOperatingSystemId(const wxString& name) const; | |
253 | ||
254 | /** | |
255 | Returns the operating system ID of this wxPlatformInfo instance. | |
256 | */ | |
257 | wxOperatingSystemId GetOperatingSystemId() const; | |
258 | ||
259 | /** | |
260 | Returns the name for the given operating system ID value. | |
261 | ||
262 | This can be a long name (e.g. <tt>Microsoft Windows NT</tt>); | |
263 | use GetOperatingSystemFamilyName() to retrieve a short, generic name. | |
264 | */ | |
265 | static wxString GetOperatingSystemIdName(wxOperatingSystemId os) const; | |
266 | ||
267 | /** | |
268 | Returns the operating system name of the OS associated with this wxPlatformInfo | |
269 | instance. | |
270 | */ | |
271 | wxString GetOperatingSystemIdName() const; | |
272 | ||
273 | ||
274 | /** | |
275 | Converts the given string to a wxWidgets port ID value or to @c wxPORT_UNKNOWN | |
276 | if the given string does not match any of the wxWidgets canonical name ports | |
277 | ("wxGTK", "wxMSW", etc) nor any of the short wxWidgets name ports ("gtk", "msw", etc). | |
278 | */ | |
279 | static wxPortId GetPortId(const wxString& portname) const; | |
280 | ||
281 | /** | |
282 | Returns the wxWidgets port ID associated with this wxPlatformInfo instance. | |
283 | */ | |
284 | wxPortId GetPortId() const; | |
285 | ||
286 | /** | |
287 | Returns the name of the given wxWidgets port ID value. | |
288 | The @a usingUniversal argument specifies whether the port is in its native | |
289 | or wxUniversal variant. | |
290 | ||
291 | The returned string always starts with the "wx" prefix and is a mixed-case string. | |
292 | */ | |
293 | static wxString GetPortIdName(wxPortId port, bool usingUniversal) const; | |
294 | ||
295 | /** | |
296 | Returns the name of the wxWidgets port ID associated with this wxPlatformInfo | |
297 | instance. | |
298 | */ | |
299 | wxString GetPortIdName() const; | |
300 | ||
301 | /** | |
302 | Returns the short name of the given wxWidgets port ID value. | |
303 | The @a usingUniversal argument specifies whether the port is in its native | |
304 | or wxUniversal variant. | |
305 | ||
306 | The returned string does not start with the "wx" prefix and is always lower case. | |
307 | */ | |
308 | static wxString GetPortIdShortName(wxPortId port, | |
309 | bool usingUniversal) const; | |
310 | ||
311 | /** | |
312 | Returns the short name of the wxWidgets port ID associated with this | |
313 | wxPlatformInfo instance. | |
314 | */ | |
315 | wxString GetPortIdShortName() const; | |
316 | ||
317 | /** | |
318 | Returns the run-time major version of the toolkit associated with this | |
319 | wxPlatformInfo instance. | |
320 | ||
321 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
322 | (unless externally modified with SetToolkitVersion()); that is, no native | |
323 | toolkit is in use. | |
324 | See wxAppTraits::GetToolkitVersion() for more info. | |
325 | ||
326 | @see CheckToolkitVersion() | |
327 | */ | |
328 | int GetToolkitMajorVersion() const; | |
329 | ||
330 | /** | |
331 | Returns the run-time minor version of the toolkit associated with this | |
332 | wxPlatformInfo instance. | |
333 | ||
334 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
335 | (unless externally modified with SetToolkitVersion()); that is, no native | |
336 | toolkit is in use. | |
337 | See wxAppTraits::GetToolkitVersion() for more info. | |
338 | ||
339 | @see CheckToolkitVersion() | |
340 | */ | |
341 | int GetToolkitMinorVersion() const; | |
342 | ||
343 | /** | |
344 | Returns @true if this instance is fully initialized with valid values. | |
345 | */ | |
346 | bool IsOk() const; | |
347 | ||
348 | /** | |
349 | Returns @true if this wxPlatformInfo describes wxUniversal build. | |
350 | */ | |
351 | bool IsUsingUniversalWidgets() const; | |
352 | ||
353 | /** | |
354 | Sets the architecture enum value associated with this wxPlatformInfo instance. | |
355 | */ | |
356 | void SetArchitecture(wxArchitecture n); | |
357 | ||
358 | /** | |
359 | Sets the endianness enum value associated with this wxPlatformInfo instance. | |
360 | */ | |
361 | void SetEndianness(wxEndianness n); | |
362 | ||
363 | /** | |
364 | Sets the version of the operating system associated with this wxPlatformInfo | |
365 | instance. | |
366 | */ | |
367 | void SetOSVersion(int major, int minor); | |
368 | ||
369 | /** | |
370 | Sets the operating system associated with this wxPlatformInfo instance. | |
371 | */ | |
372 | void SetOperatingSystemId(wxOperatingSystemId n); | |
373 | ||
374 | /** | |
375 | Sets the wxWidgets port ID associated with this wxPlatformInfo instance. | |
376 | */ | |
377 | void SetPortId(wxPortId n); | |
378 | ||
379 | /** | |
380 | Sets the version of the toolkit associated with this wxPlatformInfo instance. | |
381 | */ | |
382 | void SetToolkitVersion(int major, int minor); | |
383 | ||
384 | /** | |
385 | Inequality operator. Tests all class' internal variables. | |
386 | */ | |
387 | bool operator!=(const wxPlatformInfo& t) const; | |
388 | ||
389 | /** | |
390 | Equality operator. Tests all class' internal variables. | |
391 | */ | |
392 | bool operator==(const wxPlatformInfo& t) const; | |
393 | }; | |
394 |