]> git.saurik.com Git - wxWidgets.git/blame - interface/platinfo.h
revisions of o-p headers contributed by Utensil Candel and revised by me
[wxWidgets.git] / interface / platinfo.h
CommitLineData
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*/
17enum 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*/
60enum 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 81 The architecture of the operating system
b1b95a65
FM
82 (regardless of the build environment of wxWidgets library - see ::wxIsPlatform64bit()
83 documentation for more info).
4d7b68d1
FM
84*/
85enum 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*/
99enum 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*/
125class wxPlatformInfo : public wxObject
126{
127public:
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