// Name: platinfo.h
// Purpose: interface of wxPlatformInfo
// Author: wxWidgets team
-// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
whose version can be detected at run-time.
The values of the constants are chosen so that they can be combined as flags;
- this allows to check for operating system families like e.g. wxOS_MAC and wxOS_UNIX.
+ this allows to check for operating system families like e.g. @c wxOS_MAC and @c wxOS_UNIX.
+
+ Note that you can obtain more detailed informations about the current OS
+ version in use by checking the major and minor version numbers returned
+ by ::wxGetOsVersion() or by wxPlatformInfo::GetOSMajorVersion(),
+ wxPlatformInfo::GetOSMinorVersion().
*/
enum wxOperatingSystemId
{
wxOS_MAC_OS = 1 << 0, //!< Apple Mac OS 8/9/X with Mac paths
wxOS_MAC_OSX_DARWIN = 1 << 1, //!< Apple Mac OS X with Unix paths
+
+ //! A combination of all @c wxOS_MAC_* values previously listed.
wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN,
wxOS_WINDOWS_9X = 1 << 2, //!< Windows 9x family (95/98/ME)
- wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (NT/2000/XP)
+ wxOS_WINDOWS_NT = 1 << 3, //!< Windows NT family (NT/2000/XP/Vista/7)
wxOS_WINDOWS_MICRO = 1 << 4, //!< MicroWindows
wxOS_WINDOWS_CE = 1 << 5, //!< Windows CE (Window Mobile)
+
+ //! A combination of all @c wxOS_WINDOWS_* values previously listed.
wxOS_WINDOWS = wxOS_WINDOWS_9X |
wxOS_WINDOWS_NT |
wxOS_WINDOWS_MICRO |
wxOS_UNIX_SOLARIS = 1 << 10, //!< SunOS
wxOS_UNIX_AIX = 1 << 11, //!< AIX
wxOS_UNIX_HPUX = 1 << 12, //!< HP/UX
+
+ //! A combination of all @c wxOS_UNIX_* values previously listed.
wxOS_UNIX = wxOS_UNIX_LINUX |
wxOS_UNIX_FREEBSD |
wxOS_UNIX_OPENBSD |
wxPORT_MSW = 1 << 1, //!< wxMSW, native toolkit is Windows API
wxPORT_MOTIF = 1 << 2, //!< wxMotif, using [Open]Motif or Lesstif
wxPORT_GTK = 1 << 3, //!< wxGTK, using GTK+ 1.x, 2.x, GPE or Maemo
- wxPORT_MGL = 1 << 4, //!< wxMGL, using wxUniversal
+ wxPORT_DFB = 1 << 4, //!< wxDFB, using wxUniversal
wxPORT_X11 = 1 << 5, //!< wxX11, using wxUniversal
wxPORT_OS2 = 1 << 6, //!< wxOS2, using OS/2 Presentation Manager
wxPORT_MAC = 1 << 7, //!< wxMac, using Carbon or Classic Mac API
wxPORT_COCOA = 1 << 8, //!< wxCocoa, using Cocoa NextStep/Mac API
- wxPORT_WINCE = 1 << 9, //!< wxWinCE, toolkit is WinCE SDK API
- wxPORT_PALMOS = 1 << 10, //!< wxPalmOS, toolkit is PalmOS API
- wxPORT_DFB = 1 << 11 //!< wxDFB, using wxUniversal
+ wxPORT_WINCE = 1 << 9 //!< wxWinCE, toolkit is WinCE SDK API
};
/**
The architecture of the operating system
- (regardless of the build environment of wxWidgets library - see ::wxIsPlatform64bit()
+ (regardless of the build environment of wxWidgets library - see ::wxIsPlatform64Bit()
documentation for more info).
*/
enum wxArchitecture
wxARCH_INVALID = -1, //!< returned on error
wxARCH_32, //!< 32 bit
- wxARCH_64,
+ wxARCH_64, //!< 64 bit
wxARCH_MAX
};
wxENDIAN_MAX
};
+/**
+ A structure containing informations about a Linux distribution as returned
+ by the @c lsb_release utility.
+
+ See wxGetLinuxDistributionInfo() or wxPlatformInfo::GetLinuxDistributionInfo()
+ for more info.
+*/
+struct wxLinuxDistributionInfo
+{
+ wxString Id; //!< The id of the distribution; e.g. "Ubuntu"
+ wxString Release; //!< The version of the distribution; e.g. "9.04"
+ wxString CodeName; //!< The code name of the distribution; e.g. "jaunty"
+ wxString Description; //!< The description of the distribution; e.g. "Ubuntu 9.04"
+
+ bool operator==(const wxLinuxDistributionInfo& ldi) const;
+ bool operator!=(const wxLinuxDistributionInfo& ldi) const;
+};
+
/**
@class wxPlatformInfo
- This class holds informations about the operating system and the toolkit that
- the application is running under and some basic architecture info of the machine
- where it's running.
+ This class holds informations about the operating system, the toolkit and the
+ basic architecture of the machine where the application is currently running.
+
+ This class does not only have @e getters for the informations above, it also has
+ @e setters. This allows you to e.g. save the current platform informations in a
+ data file (maybe in string form) so that when you later load it, you can easily
+ retrieve (see the static getters for string->enum conversion functions) and store
+ inside a wxPlatformInfo instance (using its setters) the signature of the system
+ which generated it.
+
+ In general however you only need to use the static Get() function and then
+ access the various informations for the current platform:
+ @code
+ wxLogMessage("This application is running under %s.",
+ wxPlatformInfo::Get().GetOperatingSystemIdName());
+ @endcode
@library{wxbase}
- @category{misc}
+ @category{cfg}
@see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(),
- wxAppTraits
+ wxAppTraits, @ref group_funcmacro_networkuseros
*/
-class wxPlatformInfo : public wxObject
+class wxPlatformInfo
{
public:
/**
Initializes the object using given values.
*/
- wxPlatformInfo(wxPortId pid = wxPORT_UNKNOWN,
+ wxPlatformInfo(wxPortId pid,
int tkMajor = -1,
int tkMinor = -1,
wxOperatingSystemId id = wxOS_UNKNOWN,
GetToolkitMinorVersion(), CheckOSVersion()
*/
bool CheckToolkitVersion(int major, int minor) const;
+
/**
- Returns the global wxPlatformInfo object, initialized with the values
- for the currently running platform.
+ Returns @true if this instance is fully initialized with valid values.
*/
- static const wxPlatformInfo& Get();
+ bool IsOk() const;
/**
- Converts the given string to a wxArchitecture enum value or to
- @c wxARCH_INVALID if the given string is not a valid architecture string
- (i.e. does not contain nor @c 32 nor @c 64 strings).
+ Returns @true if this wxPlatformInfo describes wxUniversal build.
*/
- static wxArchitecture GetArch(const wxString& arch);
+ bool IsUsingUniversalWidgets() const;
/**
- Returns the name for the given wxArchitecture enumeration value.
+ Inequality operator. Tests all class' internal variables.
*/
- static wxString GetArchName(wxArchitecture arch);
+ bool operator!=(const wxPlatformInfo& t) const;
/**
- Returns the name for the architecture of this wxPlatformInfo instance.
+ Equality operator. Tests all class' internal variables.
*/
- wxString GetArchName() const;
+ bool operator==(const wxPlatformInfo& t) const;
+
+ /**
+ Returns the global wxPlatformInfo object, initialized with the values
+ for the currently running platform.
+ */
+ static const wxPlatformInfo& Get();
+
+ /**
+ @name Static enum getters
+
+ These getters allow for easy string-to-enumeration-value conversion.
+ */
+ //@{
/**
- Returns the architecture ID of this wxPlatformInfo instance.
+ Converts the given string to a wxArchitecture enum value or to
+ @c wxARCH_INVALID if the given string is not a valid architecture string
+ (i.e. does not contain nor @c 32 nor @c 64 strings).
*/
- wxArchitecture GetArchitecture() const;
+ static wxArchitecture GetArch(const wxString& arch);
/**
Converts the given string to a wxEndianness enum value or to
static wxEndianness GetEndianness(const wxString& end);
/**
- Returns the endianness ID of this wxPlatformInfo instance.
+ Converts the given string to a wxOperatingSystemId enum value or to @c
+ wxOS_UNKNOWN if the given string is not a valid operating system name.
*/
- wxEndianness GetEndianness() const;
+ static wxOperatingSystemId GetOperatingSystemId(const wxString& name);
/**
- Returns name for the given wxEndianness enumeration value.
+ Converts the given string to a wxWidgets port ID value or to @c wxPORT_UNKNOWN
+ if the given string does not match any of the wxWidgets canonical name ports
+ ("wxGTK", "wxMSW", etc) nor any of the short wxWidgets name ports ("gtk", "msw", etc).
*/
- static wxString GetEndiannessName(wxEndianness end);
-
+ static wxPortId GetPortId(const wxString& portname);
+
+ //@}
+
+
/**
- Returns the name for the endianness of this wxPlatformInfo instance.
+ @name Static string-form getters
+
+ These getters allow for easy enumeration-value-to-string conversion.
*/
- wxString GetEndiannessName() const;
+ //@{
/**
- Returns the run-time major version of the OS associated with this
- wxPlatformInfo instance.
-
- @see ::wxGetOsVersion(), CheckOSVersion()
+ Returns the name for the given wxArchitecture enumeration value.
*/
- int GetOSMajorVersion() const;
+ static wxString GetArchName(wxArchitecture arch);
/**
- Returns the run-time minor version of the OS associated with this
- wxPlatformInfo instance.
-
- @see ::wxGetOsVersion(), CheckOSVersion()
+ Returns name for the given wxEndianness enumeration value.
*/
- int GetOSMinorVersion() const;
-
+ static wxString GetEndiannessName(wxEndianness end);
+
/**
Returns the operating system family name for the given wxOperatingSystemId
enumeration value: @c Unix for @c wxOS_UNIX, @c Macintosh for @c wxOS_MAC,
static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os);
/**
- Returns the operating system family name of the OS associated with this
- wxPlatformInfo instance.
- */
- wxString GetOperatingSystemFamilyName() const;
+ Returns the name for the given operating system ID value.
- /**
- Converts the given string to a wxOperatingSystemId enum value or to @c
- wxOS_UNKNOWN if the given string is not a valid operating system name.
+ This can be a long name (e.g. <tt>Microsoft Windows NT</tt>);
+ use GetOperatingSystemFamilyName() to retrieve a short, generic name.
*/
- static wxOperatingSystemId GetOperatingSystemId(const wxString& name);
+ static wxString GetOperatingSystemIdName(wxOperatingSystemId os);
/**
- Returns the operating system ID of this wxPlatformInfo instance.
+ Returns the name of the given wxWidgets port ID value.
+ The @a usingUniversal argument specifies whether the port is in its native
+ or wxUniversal variant.
+
+ The returned string always starts with the "wx" prefix and is a mixed-case string.
*/
- wxOperatingSystemId GetOperatingSystemId() const;
+ static wxString GetPortIdName(wxPortId port, bool usingUniversal);
/**
- Returns the name for the given operating system ID value.
+ Returns the short name of the given wxWidgets port ID value.
+ The @a usingUniversal argument specifies whether the port is in its native
+ or wxUniversal variant.
- This can be a long name (e.g. <tt>Microsoft Windows NT</tt>);
- use GetOperatingSystemFamilyName() to retrieve a short, generic name.
+ The returned string does not start with the "wx" prefix and is always lower case.
*/
- static wxString GetOperatingSystemIdName(wxOperatingSystemId os);
+ static wxString GetPortIdShortName(wxPortId port,
+ bool usingUniversal);
/**
- Returns the operating system name of the OS associated with this wxPlatformInfo
- instance.
+ Returns the operating system directory.
+
+ See wxGetOSDirectory() for more info.
*/
- wxString GetOperatingSystemIdName() const;
+ static wxString GetOperatingSystemDirectory();
+ //@}
+
+
+ /**
+ @name Getters
+ */
+ //@{
/**
- Converts the given string to a wxWidgets port ID value or to @c wxPORT_UNKNOWN
- if the given string does not match any of the wxWidgets canonical name ports
- ("wxGTK", "wxMSW", etc) nor any of the short wxWidgets name ports ("gtk", "msw", etc).
+ Returns the architecture ID of this wxPlatformInfo instance.
*/
- static wxPortId GetPortId(const wxString& portname);
+ wxArchitecture GetArchitecture() const;
/**
- Returns the wxWidgets port ID associated with this wxPlatformInfo instance.
+ Returns the endianness ID of this wxPlatformInfo instance.
*/
- wxPortId GetPortId() const;
+ wxEndianness GetEndianness() const;
/**
- Returns the name of the given wxWidgets port ID value.
- The @a usingUniversal argument specifies whether the port is in its native
- or wxUniversal variant.
+ Returns the run-time major version of the OS associated with this
+ wxPlatformInfo instance.
- The returned string always starts with the "wx" prefix and is a mixed-case string.
+ @see ::wxGetOsVersion(), CheckOSVersion()
*/
- static wxString GetPortIdName(wxPortId port, bool usingUniversal);
+ int GetOSMajorVersion() const;
/**
- Returns the name of the wxWidgets port ID associated with this wxPlatformInfo
- instance.
+ Returns the run-time minor version of the OS associated with this
+ wxPlatformInfo instance.
+
+ @see ::wxGetOsVersion(), CheckOSVersion()
*/
- wxString GetPortIdName() const;
+ int GetOSMinorVersion() const;
/**
- Returns the short name of the given wxWidgets port ID value.
- The @a usingUniversal argument specifies whether the port is in its native
- or wxUniversal variant.
-
- The returned string does not start with the "wx" prefix and is always lower case.
+ Returns the operating system ID of this wxPlatformInfo instance.
+
+ See wxGetOsVersion() for more info.
*/
- static wxString GetPortIdShortName(wxPortId port,
- bool usingUniversal);
+ wxOperatingSystemId GetOperatingSystemId() const;
+
+ /**
+ Returns the description of the operating system of this wxPlatformInfo instance.
+
+ See wxGetOSDescription() for more info.
+ */
+ wxString GetOperatingSystemDescription() const;
/**
- Returns the short name of the wxWidgets port ID associated with this
- wxPlatformInfo instance.
+ Returns the wxWidgets port ID associated with this wxPlatformInfo instance.
*/
- wxString GetPortIdShortName() const;
+ wxPortId GetPortId() const;
+
+ /**
+ Returns the Linux distribution info associated with this wxPlatformInfo instance.
+
+ See wxGetLinuxDistributionInfo() for more info.
+ */
+ wxLinuxDistributionInfo GetLinuxDistributionInfo() const;
+
+ /**
+ Returns the desktop environment associated with this wxPlatformInfo instance.
+
+ See wxAppTraits::GetDesktopEnvironment() for more info.
+ */
+ wxString GetDesktopEnvironment() const;
/**
Returns the run-time major version of the toolkit associated with this
@see CheckToolkitVersion()
*/
int GetToolkitMinorVersion() const;
+
+ //@}
+
/**
- Returns @true if this instance is fully initialized with valid values.
+ @name String-form getters
*/
- bool IsOk() const;
+ //@{
/**
- Returns @true if this wxPlatformInfo describes wxUniversal build.
+ Returns the name for the architecture of this wxPlatformInfo instance.
*/
- bool IsUsingUniversalWidgets() const;
+ wxString GetArchName() const;
+
+ /**
+ Returns the name for the endianness of this wxPlatformInfo instance.
+ */
+ wxString GetEndiannessName() const;
+
+ /**
+ Returns the operating system family name of the OS associated with this
+ wxPlatformInfo instance.
+ */
+ wxString GetOperatingSystemFamilyName() const;
+
+ /**
+ Returns the operating system name of the OS associated with this wxPlatformInfo
+ instance.
+ */
+ wxString GetOperatingSystemIdName() const;
+
+ /**
+ Returns the name of the wxWidgets port ID associated with this wxPlatformInfo
+ instance.
+ */
+ wxString GetPortIdName() const;
+
+ /**
+ Returns the short name of the wxWidgets port ID associated with this
+ wxPlatformInfo instance.
+ */
+ wxString GetPortIdShortName() const;
+
+ //@}
+
+
+ /**
+ @name Setters
+ */
+ //@{
+
/**
Sets the architecture enum value associated with this wxPlatformInfo instance.
*/
void SetToolkitVersion(int major, int minor);
/**
- Inequality operator. Tests all class' internal variables.
+ Sets the operating system description associated with this wxPlatformInfo instance.
*/
- bool operator!=(const wxPlatformInfo& t) const;
-
+ void SetOperatingSystemDescription(const wxString& desc);
+
/**
- Equality operator. Tests all class' internal variables.
+ Sets the desktop environment associated with this wxPlatformInfo instance.
*/
- bool operator==(const wxPlatformInfo& t) const;
+ void SetDesktopEnvironment(const wxString& de);
+
+ /**
+ Sets the linux distribution info associated with this wxPlatformInfo instance.
+ */
+ void SetLinuxDistributionInfo(const wxLinuxDistributionInfo& di);
+
+ //@}
};