]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: platinfo.h | |
3 | // Purpose: interface of wxPlatformInfo | |
4 | // Author: wxWidgets team | |
5 | // Licence: wxWindows licence | |
6 | ///////////////////////////////////////////////////////////////////////////// | |
7 | ||
8 | ||
9 | /** | |
10 | The following are the operating systems which are recognized by wxWidgets and | |
11 | whose version can be detected at run-time. | |
12 | ||
13 | The values of the constants are chosen so that they can be combined as flags; | |
14 | this allows to check for operating system families like e.g. @c wxOS_MAC and @c wxOS_UNIX. | |
15 | ||
16 | Note that you can obtain more detailed informations about the current OS | |
17 | version in use by checking the major and minor version numbers returned | |
18 | by ::wxGetOsVersion() or by wxPlatformInfo::GetOSMajorVersion(), | |
19 | wxPlatformInfo::GetOSMinorVersion(). | |
20 | */ | |
21 | enum wxOperatingSystemId | |
22 | { | |
23 | wxOS_UNKNOWN = 0, //!< returned on error | |
24 | ||
25 | wxOS_MAC_OS = 1 << 0, //!< Apple Mac OS 8/9/X with Mac paths | |
26 | wxOS_MAC_OSX_DARWIN = 1 << 1, //!< Apple Mac OS X with Unix paths | |
27 | ||
28 | //! A combination of all @c wxOS_MAC_* values previously listed. | |
29 | wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN, | |
30 | ||
31 | wxOS_WINDOWS_9X = 1 << 2, //!< Windows 9x family (95/98/ME) | |
32 | wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (NT/2000/XP/Vista/7) | |
33 | wxOS_WINDOWS_MICRO = 1 << 4, //!< MicroWindows | |
34 | wxOS_WINDOWS_CE = 1 << 5, //!< Windows CE (Window Mobile) | |
35 | ||
36 | //! A combination of all @c wxOS_WINDOWS_* values previously listed. | |
37 | wxOS_WINDOWS = wxOS_WINDOWS_9X | | |
38 | wxOS_WINDOWS_NT | | |
39 | wxOS_WINDOWS_MICRO | | |
40 | wxOS_WINDOWS_CE, | |
41 | ||
42 | wxOS_UNIX_LINUX = 1 << 6, //!< Linux | |
43 | wxOS_UNIX_FREEBSD = 1 << 7, //!< FreeBSD | |
44 | wxOS_UNIX_OPENBSD = 1 << 8, //!< OpenBSD | |
45 | wxOS_UNIX_NETBSD = 1 << 9, //!< NetBSD | |
46 | wxOS_UNIX_SOLARIS = 1 << 10, //!< SunOS | |
47 | wxOS_UNIX_AIX = 1 << 11, //!< AIX | |
48 | wxOS_UNIX_HPUX = 1 << 12, //!< HP/UX | |
49 | ||
50 | //! A combination of all @c wxOS_UNIX_* values previously listed. | |
51 | wxOS_UNIX = wxOS_UNIX_LINUX | | |
52 | wxOS_UNIX_FREEBSD | | |
53 | wxOS_UNIX_OPENBSD | | |
54 | wxOS_UNIX_NETBSD | | |
55 | wxOS_UNIX_SOLARIS | | |
56 | wxOS_UNIX_AIX | | |
57 | wxOS_UNIX_HPUX, | |
58 | ||
59 | wxOS_DOS = 1 << 15, //!< Microsoft DOS | |
60 | wxOS_OS2 = 1 << 16 //!< OS/2 | |
61 | }; | |
62 | ||
63 | /** | |
64 | The list of wxWidgets ports. | |
65 | ||
66 | Some of them can be used with more than a single (native) toolkit; | |
67 | e.g. wxWinCE port sources can be used with smartphones, pocket PCs | |
68 | and handheld devices SDKs. | |
69 | */ | |
70 | enum wxPortId | |
71 | { | |
72 | wxPORT_UNKNOWN = 0, //!< returned on error | |
73 | ||
74 | wxPORT_BASE = 1 << 0, //!< wxBase, no native toolkit used | |
75 | ||
76 | wxPORT_MSW = 1 << 1, //!< wxMSW, native toolkit is Windows API | |
77 | wxPORT_MOTIF = 1 << 2, //!< wxMotif, using [Open]Motif or Lesstif | |
78 | wxPORT_GTK = 1 << 3, //!< wxGTK, using GTK+ 1.x, 2.x, GPE or Maemo | |
79 | wxPORT_DFB = 1 << 4, //!< wxDFB, using wxUniversal | |
80 | wxPORT_X11 = 1 << 5, //!< wxX11, using wxUniversal | |
81 | wxPORT_OS2 = 1 << 6, //!< wxOS2, using OS/2 Presentation Manager | |
82 | wxPORT_MAC = 1 << 7, //!< wxMac, using Carbon or Classic Mac API | |
83 | wxPORT_COCOA = 1 << 8, //!< wxCocoa, using Cocoa NextStep/Mac API | |
84 | wxPORT_WINCE = 1 << 9 //!< wxWinCE, toolkit is WinCE SDK API | |
85 | }; | |
86 | ||
87 | ||
88 | /** | |
89 | The architecture of the operating system | |
90 | (regardless of the build environment of wxWidgets library - see ::wxIsPlatform64Bit() | |
91 | documentation for more info). | |
92 | */ | |
93 | enum wxArchitecture | |
94 | { | |
95 | wxARCH_INVALID = -1, //!< returned on error | |
96 | ||
97 | wxARCH_32, //!< 32 bit | |
98 | wxARCH_64, //!< 64 bit | |
99 | ||
100 | wxARCH_MAX | |
101 | }; | |
102 | ||
103 | ||
104 | /** | |
105 | The endian-ness of the machine. | |
106 | */ | |
107 | enum wxEndianness | |
108 | { | |
109 | wxENDIAN_INVALID = -1, //!< returned on error | |
110 | ||
111 | wxENDIAN_BIG, //!< 4321 | |
112 | wxENDIAN_LITTLE, //!< 1234 | |
113 | wxENDIAN_PDP, //!< 3412 | |
114 | ||
115 | wxENDIAN_MAX | |
116 | }; | |
117 | ||
118 | /** | |
119 | A structure containing informations about a Linux distribution as returned | |
120 | by the @c lsb_release utility. | |
121 | ||
122 | See wxGetLinuxDistributionInfo() or wxPlatformInfo::GetLinuxDistributionInfo() | |
123 | for more info. | |
124 | */ | |
125 | struct wxLinuxDistributionInfo | |
126 | { | |
127 | wxString Id; //!< The id of the distribution; e.g. "Ubuntu" | |
128 | wxString Release; //!< The version of the distribution; e.g. "9.04" | |
129 | wxString CodeName; //!< The code name of the distribution; e.g. "jaunty" | |
130 | wxString Description; //!< The description of the distribution; e.g. "Ubuntu 9.04" | |
131 | ||
132 | bool operator==(const wxLinuxDistributionInfo& ldi) const; | |
133 | bool operator!=(const wxLinuxDistributionInfo& ldi) const; | |
134 | }; | |
135 | ||
136 | ||
137 | /** | |
138 | @class wxPlatformInfo | |
139 | ||
140 | This class holds informations about the operating system, the toolkit and the | |
141 | basic architecture of the machine where the application is currently running. | |
142 | ||
143 | This class does not only have @e getters for the informations above, it also has | |
144 | @e setters. This allows you to e.g. save the current platform informations in a | |
145 | data file (maybe in string form) so that when you later load it, you can easily | |
146 | retrieve (see the static getters for string->enum conversion functions) and store | |
147 | inside a wxPlatformInfo instance (using its setters) the signature of the system | |
148 | which generated it. | |
149 | ||
150 | In general however you only need to use the static Get() function and then | |
151 | access the various informations for the current platform: | |
152 | @code | |
153 | wxLogMessage("This application is running under %s.", | |
154 | wxPlatformInfo::Get().GetOperatingSystemIdName()); | |
155 | @endcode | |
156 | ||
157 | @library{wxbase} | |
158 | @category{cfg} | |
159 | ||
160 | @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(), | |
161 | wxAppTraits, @ref group_funcmacro_networkuseros | |
162 | */ | |
163 | class wxPlatformInfo | |
164 | { | |
165 | public: | |
166 | ||
167 | /** | |
168 | Initializes the instance with the values corresponding to the currently | |
169 | running platform. | |
170 | ||
171 | This is a fast operation because it only requires to copy the values | |
172 | internally cached for the currently running platform. | |
173 | ||
174 | @see Get() | |
175 | */ | |
176 | wxPlatformInfo(); | |
177 | ||
178 | /** | |
179 | Initializes the object using given values. | |
180 | */ | |
181 | wxPlatformInfo(wxPortId pid, | |
182 | int tkMajor = -1, | |
183 | int tkMinor = -1, | |
184 | wxOperatingSystemId id = wxOS_UNKNOWN, | |
185 | int osMajor = -1, | |
186 | int osMinor = -1, | |
187 | wxArchitecture arch = wxARCH_INVALID, | |
188 | wxEndianness endian = wxENDIAN_INVALID); | |
189 | ||
190 | ||
191 | /** | |
192 | Returns @true if the OS version is at least @c major.minor. | |
193 | ||
194 | @see GetOSMajorVersion(), GetOSMinorVersion(), | |
195 | CheckToolkitVersion() | |
196 | */ | |
197 | bool CheckOSVersion(int major, int minor) const; | |
198 | ||
199 | /** | |
200 | Returns @true if the toolkit version is at least @c major.minor. | |
201 | ||
202 | @see GetToolkitMajorVersion(), | |
203 | GetToolkitMinorVersion(), CheckOSVersion() | |
204 | */ | |
205 | bool CheckToolkitVersion(int major, int minor) const; | |
206 | ||
207 | ||
208 | /** | |
209 | Returns @true if this instance is fully initialized with valid values. | |
210 | */ | |
211 | bool IsOk() const; | |
212 | ||
213 | /** | |
214 | Returns @true if this wxPlatformInfo describes wxUniversal build. | |
215 | */ | |
216 | bool IsUsingUniversalWidgets() const; | |
217 | ||
218 | /** | |
219 | Inequality operator. Tests all class' internal variables. | |
220 | */ | |
221 | bool operator!=(const wxPlatformInfo& t) const; | |
222 | ||
223 | /** | |
224 | Equality operator. Tests all class' internal variables. | |
225 | */ | |
226 | bool operator==(const wxPlatformInfo& t) const; | |
227 | ||
228 | /** | |
229 | Returns the global wxPlatformInfo object, initialized with the values | |
230 | for the currently running platform. | |
231 | */ | |
232 | static const wxPlatformInfo& Get(); | |
233 | ||
234 | /** | |
235 | @name Static enum getters | |
236 | ||
237 | These getters allow for easy string-to-enumeration-value conversion. | |
238 | */ | |
239 | //@{ | |
240 | ||
241 | /** | |
242 | Converts the given string to a wxArchitecture enum value or to | |
243 | @c wxARCH_INVALID if the given string is not a valid architecture string | |
244 | (i.e. does not contain nor @c 32 nor @c 64 strings). | |
245 | */ | |
246 | static wxArchitecture GetArch(const wxString& arch); | |
247 | ||
248 | /** | |
249 | Converts the given string to a wxEndianness enum value or to | |
250 | @c wxENDIAN_INVALID if the given string is not a valid endianness | |
251 | string (i.e. does not contain nor little nor big strings). | |
252 | */ | |
253 | static wxEndianness GetEndianness(const wxString& end); | |
254 | ||
255 | /** | |
256 | Converts the given string to a wxOperatingSystemId enum value or to @c | |
257 | wxOS_UNKNOWN if the given string is not a valid operating system name. | |
258 | */ | |
259 | static wxOperatingSystemId GetOperatingSystemId(const wxString& name); | |
260 | ||
261 | /** | |
262 | Converts the given string to a wxWidgets port ID value or to @c wxPORT_UNKNOWN | |
263 | if the given string does not match any of the wxWidgets canonical name ports | |
264 | ("wxGTK", "wxMSW", etc) nor any of the short wxWidgets name ports ("gtk", "msw", etc). | |
265 | */ | |
266 | static wxPortId GetPortId(const wxString& portname); | |
267 | ||
268 | //@} | |
269 | ||
270 | ||
271 | /** | |
272 | @name Static string-form getters | |
273 | ||
274 | These getters allow for easy enumeration-value-to-string conversion. | |
275 | */ | |
276 | //@{ | |
277 | ||
278 | /** | |
279 | Returns the name for the given wxArchitecture enumeration value. | |
280 | */ | |
281 | static wxString GetArchName(wxArchitecture arch); | |
282 | ||
283 | /** | |
284 | Returns name for the given wxEndianness enumeration value. | |
285 | */ | |
286 | static wxString GetEndiannessName(wxEndianness end); | |
287 | ||
288 | /** | |
289 | Returns the operating system family name for the given wxOperatingSystemId | |
290 | enumeration value: @c Unix for @c wxOS_UNIX, @c Macintosh for @c wxOS_MAC, | |
291 | @c Windows for @c wxOS_WINDOWS, @c DOS for @c wxOS_DOS, @c OS/2 for @c wxOS_OS2. | |
292 | */ | |
293 | static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os); | |
294 | ||
295 | /** | |
296 | Returns the name for the given operating system ID value. | |
297 | ||
298 | This can be a long name (e.g. <tt>Microsoft Windows NT</tt>); | |
299 | use GetOperatingSystemFamilyName() to retrieve a short, generic name. | |
300 | */ | |
301 | static wxString GetOperatingSystemIdName(wxOperatingSystemId os); | |
302 | ||
303 | /** | |
304 | Returns the name of the given wxWidgets port ID value. | |
305 | The @a usingUniversal argument specifies whether the port is in its native | |
306 | or wxUniversal variant. | |
307 | ||
308 | The returned string always starts with the "wx" prefix and is a mixed-case string. | |
309 | */ | |
310 | static wxString GetPortIdName(wxPortId port, bool usingUniversal); | |
311 | ||
312 | /** | |
313 | Returns the short name of the given wxWidgets port ID value. | |
314 | The @a usingUniversal argument specifies whether the port is in its native | |
315 | or wxUniversal variant. | |
316 | ||
317 | The returned string does not start with the "wx" prefix and is always lower case. | |
318 | */ | |
319 | static wxString GetPortIdShortName(wxPortId port, | |
320 | bool usingUniversal); | |
321 | ||
322 | /** | |
323 | Returns the operating system directory. | |
324 | ||
325 | See wxGetOSDirectory() for more info. | |
326 | */ | |
327 | static wxString GetOperatingSystemDirectory(); | |
328 | ||
329 | //@} | |
330 | ||
331 | ||
332 | /** | |
333 | @name Getters | |
334 | */ | |
335 | //@{ | |
336 | ||
337 | /** | |
338 | Returns the architecture ID of this wxPlatformInfo instance. | |
339 | */ | |
340 | wxArchitecture GetArchitecture() const; | |
341 | ||
342 | /** | |
343 | Returns the endianness ID of this wxPlatformInfo instance. | |
344 | */ | |
345 | wxEndianness GetEndianness() const; | |
346 | ||
347 | /** | |
348 | Returns the run-time major version of the OS associated with this | |
349 | wxPlatformInfo instance. | |
350 | ||
351 | @see ::wxGetOsVersion(), CheckOSVersion() | |
352 | */ | |
353 | int GetOSMajorVersion() const; | |
354 | ||
355 | /** | |
356 | Returns the run-time minor version of the OS associated with this | |
357 | wxPlatformInfo instance. | |
358 | ||
359 | @see ::wxGetOsVersion(), CheckOSVersion() | |
360 | */ | |
361 | int GetOSMinorVersion() const; | |
362 | ||
363 | /** | |
364 | Returns the operating system ID of this wxPlatformInfo instance. | |
365 | ||
366 | See wxGetOsVersion() for more info. | |
367 | */ | |
368 | wxOperatingSystemId GetOperatingSystemId() const; | |
369 | ||
370 | /** | |
371 | Returns the description of the operating system of this wxPlatformInfo instance. | |
372 | ||
373 | See wxGetOSDescription() for more info. | |
374 | */ | |
375 | wxString GetOperatingSystemDescription() const; | |
376 | ||
377 | /** | |
378 | Returns the wxWidgets port ID associated with this wxPlatformInfo instance. | |
379 | */ | |
380 | wxPortId GetPortId() const; | |
381 | ||
382 | /** | |
383 | Returns the Linux distribution info associated with this wxPlatformInfo instance. | |
384 | ||
385 | See wxGetLinuxDistributionInfo() for more info. | |
386 | */ | |
387 | wxLinuxDistributionInfo GetLinuxDistributionInfo() const; | |
388 | ||
389 | /** | |
390 | Returns the desktop environment associated with this wxPlatformInfo instance. | |
391 | ||
392 | See wxAppTraits::GetDesktopEnvironment() for more info. | |
393 | */ | |
394 | wxString GetDesktopEnvironment() const; | |
395 | ||
396 | /** | |
397 | Returns the run-time major version of the toolkit associated with this | |
398 | wxPlatformInfo instance. | |
399 | ||
400 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
401 | (unless externally modified with SetToolkitVersion()); that is, no native | |
402 | toolkit is in use. | |
403 | See wxAppTraits::GetToolkitVersion() for more info. | |
404 | ||
405 | @see CheckToolkitVersion() | |
406 | */ | |
407 | int GetToolkitMajorVersion() const; | |
408 | ||
409 | /** | |
410 | Returns the run-time minor version of the toolkit associated with this | |
411 | wxPlatformInfo instance. | |
412 | ||
413 | Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero | |
414 | (unless externally modified with SetToolkitVersion()); that is, no native | |
415 | toolkit is in use. | |
416 | See wxAppTraits::GetToolkitVersion() for more info. | |
417 | ||
418 | @see CheckToolkitVersion() | |
419 | */ | |
420 | int GetToolkitMinorVersion() const; | |
421 | ||
422 | //@} | |
423 | ||
424 | ||
425 | /** | |
426 | @name String-form getters | |
427 | */ | |
428 | //@{ | |
429 | ||
430 | /** | |
431 | Returns the name for the architecture of this wxPlatformInfo instance. | |
432 | */ | |
433 | wxString GetArchName() const; | |
434 | ||
435 | /** | |
436 | Returns the name for the endianness of this wxPlatformInfo instance. | |
437 | */ | |
438 | wxString GetEndiannessName() const; | |
439 | ||
440 | /** | |
441 | Returns the operating system family name of the OS associated with this | |
442 | wxPlatformInfo instance. | |
443 | */ | |
444 | wxString GetOperatingSystemFamilyName() const; | |
445 | ||
446 | /** | |
447 | Returns the operating system name of the OS associated with this wxPlatformInfo | |
448 | instance. | |
449 | */ | |
450 | wxString GetOperatingSystemIdName() const; | |
451 | ||
452 | /** | |
453 | Returns the name of the wxWidgets port ID associated with this wxPlatformInfo | |
454 | instance. | |
455 | */ | |
456 | wxString GetPortIdName() const; | |
457 | ||
458 | /** | |
459 | Returns the short name of the wxWidgets port ID associated with this | |
460 | wxPlatformInfo instance. | |
461 | */ | |
462 | wxString GetPortIdShortName() const; | |
463 | ||
464 | //@} | |
465 | ||
466 | ||
467 | ||
468 | /** | |
469 | @name Setters | |
470 | */ | |
471 | //@{ | |
472 | ||
473 | /** | |
474 | Sets the architecture enum value associated with this wxPlatformInfo instance. | |
475 | */ | |
476 | void SetArchitecture(wxArchitecture n); | |
477 | ||
478 | /** | |
479 | Sets the endianness enum value associated with this wxPlatformInfo instance. | |
480 | */ | |
481 | void SetEndianness(wxEndianness n); | |
482 | ||
483 | /** | |
484 | Sets the version of the operating system associated with this wxPlatformInfo | |
485 | instance. | |
486 | */ | |
487 | void SetOSVersion(int major, int minor); | |
488 | ||
489 | /** | |
490 | Sets the operating system associated with this wxPlatformInfo instance. | |
491 | */ | |
492 | void SetOperatingSystemId(wxOperatingSystemId n); | |
493 | ||
494 | /** | |
495 | Sets the wxWidgets port ID associated with this wxPlatformInfo instance. | |
496 | */ | |
497 | void SetPortId(wxPortId n); | |
498 | ||
499 | /** | |
500 | Sets the version of the toolkit associated with this wxPlatformInfo instance. | |
501 | */ | |
502 | void SetToolkitVersion(int major, int minor); | |
503 | ||
504 | /** | |
505 | Sets the operating system description associated with this wxPlatformInfo instance. | |
506 | */ | |
507 | void SetOperatingSystemDescription(const wxString& desc); | |
508 | ||
509 | /** | |
510 | Sets the desktop environment associated with this wxPlatformInfo instance. | |
511 | */ | |
512 | void SetDesktopEnvironment(const wxString& de); | |
513 | ||
514 | /** | |
515 | Sets the linux distribution info associated with this wxPlatformInfo instance. | |
516 | */ | |
517 | void SetLinuxDistributionInfo(const wxLinuxDistributionInfo& di); | |
518 | ||
519 | //@} | |
520 | }; | |
521 |