]>
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, //!< 64 bit | |
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 | A structure containing informations about a Linux distribution as returned | |
112 | by the @c lsb_release utility. | |
113 | ||
114 | See wxGetLinuxDistributionInfo() or wxPlatformInfo::GetLinuxDistributionInfo() | |
115 | for more info. | |
116 | */ | |
117 | struct wxLinuxDistributionInfo | |
118 | { | |
119 | wxString Id; //!< The id of the distribution; e.g. "Ubuntu" | |
120 | wxString Release; //!< The version of the distribution; e.g. "9.04" | |
121 | wxString CodeName; //!< The code name of the distribution; e.g. "jaunty" | |
122 | wxString Description; //!< The description of the distribution; e.g. "Ubuntu 9.04" | |
123 | ||
124 | bool operator==(const wxLinuxDistributionInfo& ldi) const; | |
125 | bool operator!=(const wxLinuxDistributionInfo& ldi) const; | |
126 | }; | |
127 | ||
128 | ||
129 | /** | |
130 | @class wxPlatformInfo | |
131 | ||
132 | This class holds informations about the operating system, the toolkit and the | |
133 | basic architecture of the machine where the application is currently running. | |
134 | ||
135 | This class does not only have @e getters for the informations above, it also has | |
136 | @e setters. This allows you to e.g. save the current platform informations in a | |
137 | data file (maybe in string form) so that when you later load it, you can easily | |
138 | retrieve (see the static getters for string->enum conversion functions) and store | |
139 | inside a wxPlatformInfo instance (using its setters) the signature of the system | |
140 | which generated it. | |
141 | ||
142 | In general however you only need to use the static Get() function and then | |
143 | access the various informations for the current platform: | |
144 | @code | |
145 | wxLogMessage("This application is running under %s.", | |
146 | wxPlatformInfo::Get().GetOperatingSystemIdName()); | |
147 | @endcode | |
148 | ||
149 | @library{wxbase} | |
150 | @category{cfg} | |
151 | ||
152 | @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(), | |
153 | wxAppTraits, @ref group_funcmacro_networkuseros | |
154 | */ | |
155 | class wxPlatformInfo : public wxObject | |
156 | { | |
157 | public: | |
158 | ||
159 | /** | |
160 | Initializes the instance with the values corresponding to the currently | |
161 | running platform. | |
162 | ||
163 | This is a fast operation because it only requires to copy the values | |
164 | internally cached for the currently running platform. | |
165 | ||
166 | @see Get() | |
167 | */ | |
168 | wxPlatformInfo(); | |
169 | ||
170 | /** | |
171 | Initializes the object using given values. | |
172 | */ | |
173 | wxPlatformInfo(wxPortId pid = wxPORT_UNKNOWN, | |
174 | int tkMajor = -1, | |
175 | int tkMinor = -1, | |
176 | wxOperatingSystemId id = wxOS_UNKNOWN, | |
177 | int osMajor = -1, | |
178 | int osMinor = -1, | |
179 | wxArchitecture arch = wxARCH_INVALID, | |
180 | wxEndianness endian = wxENDIAN_INVALID); | |
181 | ||
182 | ||
183 | /** | |
184 | Returns @true if the OS version is at least @c major.minor. | |
185 | ||
186 | @see GetOSMajorVersion(), GetOSMinorVersion(), | |
187 | CheckToolkitVersion() | |
188 | */ | |
189 | bool CheckOSVersion(int major, int minor) const; | |
190 | ||
191 | /** | |
192 | Returns @true if the toolkit version is at least @c major.minor. | |
193 | ||
194 | @see GetToolkitMajorVersion(), | |
195 | GetToolkitMinorVersion(), CheckOSVersion() | |
196 | */ | |
197 | bool CheckToolkitVersion(int major, int minor) const; | |
198 | ||
199 | ||
200 | /** | |
201 | Returns @true if this instance is fully initialized with valid values. | |
202 | */ | |
203 | bool IsOk() const; | |
204 | ||
205 | /** | |
206 | Returns @true if this wxPlatformInfo describes wxUniversal build. | |
207 | */ | |
208 | bool IsUsingUniversalWidgets() const; | |
209 | ||
210 | /** | |
211 | Inequality operator. Tests all class' internal variables. | |
212 | */ | |
213 | bool operator!=(const wxPlatformInfo& t) const; | |
214 | ||
215 | /** | |
216 | Equality operator. Tests all class' internal variables. | |
217 | */ | |
218 | bool operator==(const wxPlatformInfo& t) const; | |
219 | ||
220 | /** | |
221 | Returns the global wxPlatformInfo object, initialized with the values | |
222 | for the currently running platform. | |
223 | */ | |
224 | static const wxPlatformInfo& Get(); | |
225 | ||
226 | /** | |
227 | @name Static enum getters | |
228 | ||
229 | These getters allow for easy string-to-enumeration-value conversion. | |
230 | */ | |
231 | //@{ | |
232 | ||
233 | /** | |
234 | Converts the given string to a wxArchitecture enum value or to | |
235 | @c wxARCH_INVALID if the given string is not a valid architecture string | |
236 | (i.e. does not contain nor @c 32 nor @c 64 strings). | |
237 | */ | |
238 | static wxArchitecture GetArch(const wxString& arch); | |
239 | ||
240 | /** | |
241 | Converts the given string to a wxEndianness enum value or to | |
242 | @c wxENDIAN_INVALID if the given string is not a valid endianness | |
243 | string (i.e. does not contain nor little nor big strings). | |
244 | */ | |
245 | static wxEndianness GetEndianness(const wxString& end); | |
246 | ||
247 | /** | |
248 | Converts the given string to a wxOperatingSystemId enum value or to @c | |
249 | wxOS_UNKNOWN if the given string is not a valid operating system name. | |
250 | */ | |
251 | static wxOperatingSystemId GetOperatingSystemId(const wxString& name); | |
252 | ||
253 | /** | |
254 | Converts the given string to a wxWidgets port ID value or to @c wxPORT_UNKNOWN | |
255 | if the given string does not match any of the wxWidgets canonical name ports | |
256 | ("wxGTK", "wxMSW", etc) nor any of the short wxWidgets name ports ("gtk", "msw", etc). | |
257 | */ | |
258 | static wxPortId GetPortId(const wxString& portname); | |
259 | ||
260 | //@} | |
261 | ||
262 | ||
263 | /** | |
264 | @name Static string-form getters | |
265 | ||
266 | These getters allow for easy enumeration-value-to-string conversion. | |
267 | */ | |
268 | //@{ | |
269 | ||
270 | /** | |
271 | Returns the name for the given wxArchitecture enumeration value. | |
272 | */ | |
273 | static wxString GetArchName(wxArchitecture arch); | |
274 | ||
275 | /** | |
276 | Returns name for the given wxEndianness enumeration value. | |
277 | */ | |
278 | static wxString GetEndiannessName(wxEndianness end); | |
279 | ||
280 | /** | |
281 | Returns the operating system family name for the given wxOperatingSystemId | |
282 | enumeration value: @c Unix for @c wxOS_UNIX, @c Macintosh for @c wxOS_MAC, | |
283 | @c Windows for @c wxOS_WINDOWS, @c DOS for @c wxOS_DOS, @c OS/2 for @c wxOS_OS2. | |
284 | */ | |
285 | static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os); | |
286 | ||
287 | /** | |
288 | Returns the name for the given operating system ID value. | |
289 | ||
290 | This can be a long name (e.g. <tt>Microsoft Windows NT</tt>); | |
291 | use GetOperatingSystemFamilyName() to retrieve a short, generic name. | |
292 | */ | |
293 | static wxString GetOperatingSystemIdName(wxOperatingSystemId os); | |
294 | ||
295 | /** | |
296 | Returns the name of the given wxWidgets port ID value. | |
297 | The @a usingUniversal argument specifies whether the port is in its native | |
298 | or wxUniversal variant. | |
299 | ||
300 | The returned string always starts with the "wx" prefix and is a mixed-case string. | |
301 | */ | |
302 | static wxString GetPortIdName(wxPortId port, bool usingUniversal); | |
303 | ||
304 | /** | |
305 | Returns the short name of the given wxWidgets port ID value. | |
306 | The @a usingUniversal argument specifies whether the port is in its native | |
307 | or wxUniversal variant. | |
308 | ||
309 | The returned string does not start with the "wx" prefix and is always lower case. | |
310 | */ | |
311 | static wxString GetPortIdShortName(wxPortId port, | |
312 | bool usingUniversal); | |
313 | ||
314 | /** | |
315 | Returns the operating system directory. | |
316 | ||
317 | See wxGetOSDirectory() for more info. | |
318 | */ | |
319 | static wxString GetOperatingSystemDirectory(); | |
320 | ||
321 | //@} | |
322 | ||
323 | ||
324 | /** | |
325 | @name Getters | |
326 | */ | |
327 | //@{ | |
328 | ||
329 | /** | |
330 | Returns the architecture ID of this wxPlatformInfo instance. | |
331 | */ | |
332 | wxArchitecture GetArchitecture() const; | |
333 | ||
334 | /** | |
335 | Returns the endianness ID of this wxPlatformInfo instance. | |
336 | */ | |
337 | wxEndianness GetEndianness() const; | |
338 | ||
339 | /** | |
340 | Returns the run-time major version of the OS associated with this | |
341 | wxPlatformInfo instance. | |
342 | ||
343 | @see ::wxGetOsVersion(), CheckOSVersion() | |
344 | */ | |
345 | int GetOSMajorVersion() const; | |
346 | ||
347 | /** | |
348 | Returns the run-time minor version of the OS associated with this | |
349 | wxPlatformInfo instance. | |
350 | ||
351 | @see ::wxGetOsVersion(), CheckOSVersion() | |
352 | */ | |
353 | int GetOSMinorVersion() const; | |
354 | ||
355 | /** | |
356 | Returns the operating system ID of this wxPlatformInfo instance. | |
357 | */ | |
358 | wxOperatingSystemId GetOperatingSystemId() const; | |
359 | ||
360 | /** | |
361 | Returns the description of the operating system of this wxPlatformInfo instance. | |
362 | ||
363 | See wxGetOSDescription() for more info. | |
364 | */ | |
365 | wxString GetOperatingSystemDescription() const; | |
366 | ||
367 | /** | |
368 | Returns the wxWidgets port ID associated with this wxPlatformInfo instance. | |
369 | */ | |
370 | wxPortId GetPortId() const; | |
371 | ||
372 | /** | |
373 | Returns the Linux distribution info associated with this wxPlatformInfo instance. | |
374 | ||
375 | See wxGetLinuxDistributionInfo() for more info. | |
376 | */ | |
377 | wxLinuxDistributionInfo GetLinuxDistributionInfo() const; | |
378 | ||
379 | /** | |
380 | Returns the desktop environment associated with this wxPlatformInfo instance. | |
381 | ||
382 | See wxAppTraits::GetDesktopEnvironment() for more info. | |
383 | */ | |
384 | wxString GetDesktopEnvironment() const; | |
385 | ||
386 | /** | |
387 | Returns the run-time major version of the toolkit associated with this | |
388 | wxPlatformInfo instance. | |
389 | ||
390 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
391 | (unless externally modified with SetToolkitVersion()); that is, no native | |
392 | toolkit is in use. | |
393 | See wxAppTraits::GetToolkitVersion() for more info. | |
394 | ||
395 | @see CheckToolkitVersion() | |
396 | */ | |
397 | int GetToolkitMajorVersion() const; | |
398 | ||
399 | /** | |
400 | Returns the run-time minor version of the toolkit associated with this | |
401 | wxPlatformInfo instance. | |
402 | ||
403 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
404 | (unless externally modified with SetToolkitVersion()); that is, no native | |
405 | toolkit is in use. | |
406 | See wxAppTraits::GetToolkitVersion() for more info. | |
407 | ||
408 | @see CheckToolkitVersion() | |
409 | */ | |
410 | int GetToolkitMinorVersion() const; | |
411 | ||
412 | //@} | |
413 | ||
414 | ||
415 | /** | |
416 | @name String-form getters | |
417 | */ | |
418 | //@{ | |
419 | ||
420 | /** | |
421 | Returns the name for the architecture of this wxPlatformInfo instance. | |
422 | */ | |
423 | wxString GetArchName() const; | |
424 | ||
425 | /** | |
426 | Returns the name for the endianness of this wxPlatformInfo instance. | |
427 | */ | |
428 | wxString GetEndiannessName() const; | |
429 | ||
430 | /** | |
431 | Returns the operating system family name of the OS associated with this | |
432 | wxPlatformInfo instance. | |
433 | */ | |
434 | wxString GetOperatingSystemFamilyName() const; | |
435 | ||
436 | /** | |
437 | Returns the operating system name of the OS associated with this wxPlatformInfo | |
438 | instance. | |
439 | */ | |
440 | wxString GetOperatingSystemIdName() const; | |
441 | ||
442 | /** | |
443 | Returns the name of the wxWidgets port ID associated with this wxPlatformInfo | |
444 | instance. | |
445 | */ | |
446 | wxString GetPortIdName() const; | |
447 | ||
448 | /** | |
449 | Returns the short name of the wxWidgets port ID associated with this | |
450 | wxPlatformInfo instance. | |
451 | */ | |
452 | wxString GetPortIdShortName() const; | |
453 | ||
454 | //@} | |
455 | ||
456 | ||
457 | ||
458 | /** | |
459 | @name Setters | |
460 | */ | |
461 | //@{ | |
462 | ||
463 | /** | |
464 | Sets the architecture enum value associated with this wxPlatformInfo instance. | |
465 | */ | |
466 | void SetArchitecture(wxArchitecture n); | |
467 | ||
468 | /** | |
469 | Sets the endianness enum value associated with this wxPlatformInfo instance. | |
470 | */ | |
471 | void SetEndianness(wxEndianness n); | |
472 | ||
473 | /** | |
474 | Sets the version of the operating system associated with this wxPlatformInfo | |
475 | instance. | |
476 | */ | |
477 | void SetOSVersion(int major, int minor); | |
478 | ||
479 | /** | |
480 | Sets the operating system associated with this wxPlatformInfo instance. | |
481 | */ | |
482 | void SetOperatingSystemId(wxOperatingSystemId n); | |
483 | ||
484 | /** | |
485 | Sets the wxWidgets port ID associated with this wxPlatformInfo instance. | |
486 | */ | |
487 | void SetPortId(wxPortId n); | |
488 | ||
489 | /** | |
490 | Sets the version of the toolkit associated with this wxPlatformInfo instance. | |
491 | */ | |
492 | void SetToolkitVersion(int major, int minor); | |
493 | ||
494 | /** | |
495 | Sets the operating system description associated with this wxPlatformInfo instance. | |
496 | */ | |
497 | void SetOperatingSystemDescription(const wxString& desc); | |
498 | ||
499 | /** | |
500 | Sets the desktop environment associated with this wxPlatformInfo instance. | |
501 | */ | |
502 | void SetDesktopEnvironment(const wxString& de); | |
503 | ||
504 | /** | |
505 | Sets the linux distribution info associated with this wxPlatformInfo instance. | |
506 | */ | |
507 | void SetLinuxDistributionInfo(const wxLinuxDistributionInfo& di); | |
508 | ||
509 | //@} | |
510 | }; | |
511 |