]>
Commit | Line | Data |
---|---|---|
23324ae1 FM |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: platinfo.h | |
e54c96f1 | 3 | // Purpose: interface of wxPlatformInfo |
23324ae1 FM |
4 | // Author: wxWidgets team |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows license | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
74bf4e64 | 9 | |
4d7b68d1 | 10 | /** |
74bf4e64 FM |
11 | The following are the operating systems which are recognized by wxWidgets and |
12 | whose version can be detected at run-time. | |
4d7b68d1 | 13 | |
74bf4e64 | 14 | The values of the constants are chosen so that they can be combined as flags; |
4d7b68d1 FM |
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 | }; | |
74bf4e64 | 52 | |
4d7b68d1 | 53 | /** |
74bf4e64 | 54 | The list of wxWidgets ports. |
4d7b68d1 | 55 | |
74bf4e64 FM |
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. | |
4d7b68d1 FM |
59 | */ |
60 | enum wxPortId | |
61 | { | |
62 | wxPORT_UNKNOWN = 0, //!< returned on error | |
74bf4e64 | 63 | |
4d7b68d1 | 64 | wxPORT_BASE = 1 << 0, //!< wxBase, no native toolkit used |
74bf4e64 | 65 | |
4d7b68d1 FM |
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 | }; | |
74bf4e64 | 78 | |
74bf4e64 | 79 | |
4d7b68d1 | 80 | /** |
74bf4e64 FM |
81 | The architecture of the operating system |
82 | (regardless of the build environment of wxWidgets library | |
4d7b68d1 FM |
83 | - see ::wxIsPlatform64bit documentation for more info). |
84 | */ | |
85 | enum wxArchitecture | |
86 | { | |
87 | wxARCH_INVALID = -1, //!< returned on error | |
74bf4e64 | 88 | |
4d7b68d1 FM |
89 | wxARCH_32, //!< 32 bit |
90 | wxARCH_64, | |
74bf4e64 | 91 | |
4d7b68d1 FM |
92 | wxARCH_MAX |
93 | } | |
74bf4e64 | 94 | |
74bf4e64 | 95 | |
4d7b68d1 | 96 | /** |
74bf4e64 | 97 | The endian-ness of the machine. |
4d7b68d1 FM |
98 | */ |
99 | enum wxEndianness | |
100 | { | |
101 | wxENDIAN_INVALID = -1, //!< returned on error | |
74bf4e64 | 102 | |
4d7b68d1 FM |
103 | wxENDIAN_BIG, //!< 4321 |
104 | wxENDIAN_LITTLE, //!< 1234 | |
105 | wxENDIAN_PDP, //!< 3412 | |
74bf4e64 | 106 | |
4d7b68d1 FM |
107 | wxENDIAN_MAX |
108 | } | |
74bf4e64 | 109 | |
74bf4e64 | 110 | |
4d7b68d1 FM |
111 | /** |
112 | @class wxPlatformInfo | |
113 | @wxheader{platinfo.h} | |
74bf4e64 | 114 | |
4d7b68d1 FM |
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. | |
74bf4e64 | 118 | |
4d7b68d1 FM |
119 | @library{wxbase} |
120 | @category{misc} | |
74bf4e64 | 121 | |
4d7b68d1 FM |
122 | @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(), |
123 | wxAppTraits | |
23324ae1 FM |
124 | */ |
125 | class wxPlatformInfo : public wxObject | |
126 | { | |
127 | public: | |
74bf4e64 | 128 | |
23324ae1 | 129 | /** |
74bf4e64 FM |
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() | |
23324ae1 FM |
137 | */ |
138 | wxPlatformInfo(); | |
74bf4e64 FM |
139 | |
140 | /** | |
141 | Initializes the object using given values. | |
142 | */ | |
7c913512 FM |
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); | |
74bf4e64 | 151 | |
23324ae1 FM |
152 | |
153 | /** | |
154 | Returns @true if the OS version is at least @c major.minor. | |
3c4f71cc | 155 | |
4cc4bfaf FM |
156 | @see GetOSMajorVersion(), GetOSMinorVersion(), |
157 | CheckToolkitVersion() | |
23324ae1 | 158 | */ |
328f5751 | 159 | bool CheckOSVersion(int major, int minor) const; |
23324ae1 FM |
160 | |
161 | /** | |
162 | Returns @true if the toolkit version is at least @c major.minor. | |
3c4f71cc | 163 | |
4cc4bfaf FM |
164 | @see GetToolkitMajorVersion(), |
165 | GetToolkitMinorVersion(), CheckOSVersion() | |
23324ae1 | 166 | */ |
328f5751 | 167 | bool CheckToolkitVersion(int major, int minor) const; |
23324ae1 FM |
168 | |
169 | /** | |
74bf4e64 FM |
170 | Returns the global wxPlatformInfo object, initialized with the values |
171 | for the currently running platform. | |
23324ae1 | 172 | */ |
4cc4bfaf | 173 | static const wxPlatformInfo Get(); |
23324ae1 FM |
174 | |
175 | /** | |
176 | Converts the given string to a wxArchitecture enum value or to | |
74bf4e64 | 177 | @c wxARCH_INVALID if the given string is not a valid architecture string |
23324ae1 FM |
178 | (i.e. does not contain nor @c 32 nor @c 64 strings). |
179 | */ | |
180 | static wxArchitecture GetArch(const wxString& arch); | |
181 | ||
23324ae1 | 182 | /** |
74bf4e64 | 183 | Returns the name for the given wxArchitecture enumeration value. |
23324ae1 | 184 | */ |
328f5751 | 185 | static wxString GetArchName(wxArchitecture arch) const; |
74bf4e64 FM |
186 | |
187 | /** | |
188 | Returns the name for the architecture of this wxPlatformInfo instance. | |
189 | */ | |
328f5751 | 190 | wxString GetArchName() const; |
23324ae1 FM |
191 | |
192 | /** | |
193 | Returns the architecture ID of this wxPlatformInfo instance. | |
194 | */ | |
328f5751 | 195 | wxArchitecture GetArchitecture() const; |
23324ae1 | 196 | |
23324ae1 | 197 | /** |
74bf4e64 FM |
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). | |
23324ae1 | 201 | */ |
328f5751 | 202 | static wxEndianness GetEndianness(const wxString& end) const; |
74bf4e64 FM |
203 | |
204 | /** | |
205 | Returns the endianness ID of this wxPlatformInfo instance. | |
206 | */ | |
328f5751 | 207 | wxEndianness GetEndianness() const; |
23324ae1 | 208 | |
23324ae1 | 209 | /** |
74bf4e64 | 210 | Returns name for the given wxEndianness enumeration value. |
23324ae1 | 211 | */ |
328f5751 | 212 | static wxString GetEndiannessName(wxEndianness end) const; |
74bf4e64 FM |
213 | |
214 | /** | |
215 | Returns the name for the endianness of this wxPlatformInfo instance. | |
216 | */ | |
328f5751 | 217 | wxString GetEndiannessName() const; |
23324ae1 FM |
218 | |
219 | /** | |
220 | Returns the run-time major version of the OS associated with this | |
221 | wxPlatformInfo instance. | |
3c4f71cc | 222 | |
74bf4e64 | 223 | @see ::wxGetOsVersion(), CheckOSVersion() |
23324ae1 | 224 | */ |
328f5751 | 225 | int GetOSMajorVersion() const; |
23324ae1 FM |
226 | |
227 | /** | |
228 | Returns the run-time minor version of the OS associated with this | |
229 | wxPlatformInfo instance. | |
3c4f71cc | 230 | |
74bf4e64 | 231 | @see ::wxGetOsVersion(), CheckOSVersion() |
23324ae1 | 232 | */ |
328f5751 | 233 | int GetOSMinorVersion() const; |
23324ae1 | 234 | |
74bf4e64 FM |
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 | ||
23324ae1 FM |
242 | /** |
243 | Returns the operating system family name of the OS associated with this | |
244 | wxPlatformInfo instance. | |
245 | */ | |
328f5751 | 246 | wxString GetOperatingSystemFamilyName() const; |
23324ae1 | 247 | |
23324ae1 | 248 | /** |
74bf4e64 FM |
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. | |
23324ae1 | 251 | */ |
328f5751 | 252 | static wxOperatingSystemId GetOperatingSystemId(const wxString& name) const; |
74bf4e64 FM |
253 | |
254 | /** | |
255 | Returns the operating system ID of this wxPlatformInfo instance. | |
256 | */ | |
328f5751 | 257 | wxOperatingSystemId GetOperatingSystemId() const; |
23324ae1 | 258 | |
74bf4e64 FM |
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 | ||
23324ae1 FM |
267 | /** |
268 | Returns the operating system name of the OS associated with this wxPlatformInfo | |
269 | instance. | |
270 | */ | |
328f5751 | 271 | wxString GetOperatingSystemIdName() const; |
23324ae1 | 272 | |
74bf4e64 | 273 | |
23324ae1 | 274 | /** |
74bf4e64 FM |
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). | |
23324ae1 | 278 | */ |
328f5751 | 279 | static wxPortId GetPortId(const wxString& portname) const; |
74bf4e64 FM |
280 | |
281 | /** | |
282 | Returns the wxWidgets port ID associated with this wxPlatformInfo instance. | |
283 | */ | |
328f5751 | 284 | wxPortId GetPortId() const; |
23324ae1 | 285 | |
74bf4e64 FM |
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 | ||
23324ae1 FM |
295 | /** |
296 | Returns the name of the wxWidgets port ID associated with this wxPlatformInfo | |
297 | instance. | |
298 | */ | |
328f5751 | 299 | wxString GetPortIdName() const; |
23324ae1 | 300 | |
23324ae1 | 301 | /** |
74bf4e64 FM |
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 | ||
4d7b68d1 | 306 | The returned string does not start with the "wx" prefix and is always lower case. |
23324ae1 FM |
307 | */ |
308 | static wxString GetPortIdShortName(wxPortId port, | |
328f5751 | 309 | bool usingUniversal) const; |
74bf4e64 FM |
310 | |
311 | /** | |
312 | Returns the short name of the wxWidgets port ID associated with this | |
313 | wxPlatformInfo instance. | |
314 | */ | |
328f5751 | 315 | wxString GetPortIdShortName() const; |
23324ae1 FM |
316 | |
317 | /** | |
318 | Returns the run-time major version of the toolkit associated with this | |
319 | wxPlatformInfo instance. | |
74bf4e64 FM |
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. | |
3c4f71cc | 325 | |
4cc4bfaf | 326 | @see CheckToolkitVersion() |
23324ae1 | 327 | */ |
328f5751 | 328 | int GetToolkitMajorVersion() const; |
23324ae1 FM |
329 | |
330 | /** | |
331 | Returns the run-time minor version of the toolkit associated with this | |
332 | wxPlatformInfo instance. | |
74bf4e64 FM |
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. | |
3c4f71cc | 338 | |
4cc4bfaf | 339 | @see CheckToolkitVersion() |
23324ae1 | 340 | */ |
328f5751 | 341 | int GetToolkitMinorVersion() const; |
23324ae1 FM |
342 | |
343 | /** | |
344 | Returns @true if this instance is fully initialized with valid values. | |
345 | */ | |
328f5751 | 346 | bool IsOk() const; |
23324ae1 FM |
347 | |
348 | /** | |
349 | Returns @true if this wxPlatformInfo describes wxUniversal build. | |
350 | */ | |
328f5751 | 351 | bool IsUsingUniversalWidgets() const; |
23324ae1 FM |
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 | */ | |
328f5751 | 387 | bool operator!=(const wxPlatformInfo& t) const; |
23324ae1 FM |
388 | |
389 | /** | |
390 | Equality operator. Tests all class' internal variables. | |
391 | */ | |
328f5751 | 392 | bool operator==(const wxPlatformInfo& t) const; |
23324ae1 | 393 | }; |
e54c96f1 | 394 |