| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: platinfo.h
- // Purpose: interface of wxPlatformInfo
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- The following are the operating systems which are recognized by wxWidgets and
- 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. @c wxOS_MAC and @c wxOS_UNIX.
-
- Note that you can obtain more detailed information 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_UNKNOWN = 0, //!< returned on error
- 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/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_WINDOWS_CE,
- wxOS_UNIX_LINUX = 1 << 6, //!< Linux
- wxOS_UNIX_FREEBSD = 1 << 7, //!< FreeBSD
- wxOS_UNIX_OPENBSD = 1 << 8, //!< OpenBSD
- wxOS_UNIX_NETBSD = 1 << 9, //!< NetBSD
- 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 |
- wxOS_UNIX_NETBSD |
- wxOS_UNIX_SOLARIS |
- wxOS_UNIX_AIX |
- wxOS_UNIX_HPUX,
- wxOS_DOS = 1 << 15, //!< Microsoft DOS
- wxOS_OS2 = 1 << 16 //!< OS/2
- };
- /**
- The list of wxWidgets ports.
- Some of them can be used with more than a single (native) toolkit;
- e.g. wxWinCE port sources can be used with smartphones, pocket PCs
- and handheld devices SDKs.
- */
- enum wxPortId
- {
- wxPORT_UNKNOWN = 0, //!< returned on error
- wxPORT_BASE = 1 << 0, //!< wxBase, no native toolkit used
- 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_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
- };
- /**
- The architecture of the operating system
- (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, //!< 64 bit
- wxARCH_MAX
- };
- /**
- The endian-ness of the machine.
- */
- enum wxEndianness
- {
- wxENDIAN_INVALID = -1, //!< returned on error
- wxENDIAN_BIG, //!< 4321
- wxENDIAN_LITTLE, //!< 1234
- wxENDIAN_PDP, //!< 3412
- wxENDIAN_MAX
- };
- /**
- A structure containing information 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 information 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 information above, it also has
- @e setters. This allows you to e.g. save the current platform information 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 information for the current platform:
- @code
- wxLogMessage("This application is running under %s.",
- wxPlatformInfo::Get().GetOperatingSystemIdName());
- @endcode
- @library{wxbase}
- @category{cfg}
- @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(),
- wxAppTraits, @ref group_funcmacro_networkuseros
- */
- class wxPlatformInfo
- {
- public:
- /**
- Initializes the instance with the values corresponding to the currently
- running platform.
- This is a fast operation because it only requires to copy the values
- internally cached for the currently running platform.
- @see Get()
- */
- wxPlatformInfo();
- /**
- Initializes the object using given values.
- */
- wxPlatformInfo(wxPortId pid,
- int tkMajor = -1,
- int tkMinor = -1,
- wxOperatingSystemId id = wxOS_UNKNOWN,
- int osMajor = -1,
- int osMinor = -1,
- wxArchitecture arch = wxARCH_INVALID,
- wxEndianness endian = wxENDIAN_INVALID);
- /**
- Returns @true if the OS version is at least @c major.minor.
- @see GetOSMajorVersion(), GetOSMinorVersion(),
- CheckToolkitVersion()
- */
- bool CheckOSVersion(int major, int minor) const;
- /**
- Returns @true if the toolkit version is at least @c major.minor.
- @see GetToolkitMajorVersion(),
- GetToolkitMinorVersion(), CheckOSVersion()
- */
- bool CheckToolkitVersion(int major, int minor) const;
-
- /**
- Returns @true if this instance is fully initialized with valid values.
- */
- bool IsOk() const;
- /**
- Returns @true if this wxPlatformInfo describes wxUniversal build.
- */
- bool IsUsingUniversalWidgets() const;
- /**
- Inequality operator. Tests all class' internal variables.
- */
- bool operator!=(const wxPlatformInfo& t) const;
- /**
- Equality operator. Tests all class' internal variables.
- */
- 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.
- */
- //@{
- /**
- 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).
- */
- static wxArchitecture GetArch(const wxString& arch);
- /**
- Converts the given string to a wxEndianness enum value or to
- @c wxENDIAN_INVALID if the given string is not a valid endianness
- string (i.e. does not contain nor little nor big strings).
- */
- static wxEndianness GetEndianness(const wxString& end);
- /**
- 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.
- */
- static wxOperatingSystemId GetOperatingSystemId(const wxString& name);
- /**
- 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 wxPortId GetPortId(const wxString& portname);
-
- //@}
-
-
- /**
- @name Static string-form getters
-
- These getters allow for easy enumeration-value-to-string conversion.
- */
- //@{
- /**
- Returns the name for the given wxArchitecture enumeration value.
- */
- static wxString GetArchName(wxArchitecture arch);
- /**
- Returns name for the given wxEndianness enumeration value.
- */
- 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,
- @c Windows for @c wxOS_WINDOWS, @c DOS for @c wxOS_DOS, @c OS/2 for @c wxOS_OS2.
- */
- static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os);
- /**
- Returns the name for the given operating system ID value.
- This can be a long name (e.g. <tt>Microsoft Windows NT</tt>);
- use GetOperatingSystemFamilyName() to retrieve a short, generic name.
- */
- static wxString GetOperatingSystemIdName(wxOperatingSystemId os);
- /**
- 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.
- */
- static wxString GetPortIdName(wxPortId port, bool usingUniversal);
- /**
- 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.
- */
- static wxString GetPortIdShortName(wxPortId port,
- bool usingUniversal);
- /**
- Returns the operating system directory.
-
- See wxGetOSDirectory() for more info.
- */
- static wxString GetOperatingSystemDirectory();
- //@}
-
-
- /**
- @name Getters
- */
- //@{
- /**
- Returns the architecture ID of this wxPlatformInfo instance.
- */
- wxArchitecture GetArchitecture() const;
- /**
- Returns the endianness ID of this wxPlatformInfo instance.
- */
- wxEndianness GetEndianness() const;
- /**
- Returns the run-time major version of the OS associated with this
- wxPlatformInfo instance.
- @see ::wxGetOsVersion(), CheckOSVersion()
- */
- int GetOSMajorVersion() const;
- /**
- Returns the run-time minor version of the OS associated with this
- wxPlatformInfo instance.
- @see ::wxGetOsVersion(), CheckOSVersion()
- */
- int GetOSMinorVersion() const;
- /**
- Returns the operating system ID of this wxPlatformInfo instance.
-
- See wxGetOsVersion() for more info.
- */
- wxOperatingSystemId GetOperatingSystemId() const;
-
- /**
- Returns the description of the operating system of this wxPlatformInfo instance.
-
- See wxGetOSDescription() for more info.
- */
- wxString GetOperatingSystemDescription() const;
- /**
- Returns the wxWidgets port ID associated with this wxPlatformInfo instance.
- */
- 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
- wxPlatformInfo instance.
- Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero
- (unless externally modified with SetToolkitVersion()); that is, no native
- toolkit is in use.
- See wxAppTraits::GetToolkitVersion() for more info.
- @see CheckToolkitVersion()
- */
- int GetToolkitMajorVersion() const;
- /**
- Returns the run-time minor version of the toolkit associated with this
- wxPlatformInfo instance.
- Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero
- (unless externally modified with SetToolkitVersion()); that is, no native
- toolkit is in use.
- See wxAppTraits::GetToolkitVersion() for more info.
- @see CheckToolkitVersion()
- */
- int GetToolkitMinorVersion() const;
-
- //@}
- /**
- @name String-form getters
- */
- //@{
- /**
- Returns the name for the architecture of this wxPlatformInfo instance.
- */
- 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 SetArchitecture(wxArchitecture n);
- /**
- Sets the endianness enum value associated with this wxPlatformInfo instance.
- */
- void SetEndianness(wxEndianness n);
- /**
- Sets the version of the operating system associated with this wxPlatformInfo
- instance.
- */
- void SetOSVersion(int major, int minor);
- /**
- Sets the operating system associated with this wxPlatformInfo instance.
- */
- void SetOperatingSystemId(wxOperatingSystemId n);
- /**
- Sets the wxWidgets port ID associated with this wxPlatformInfo instance.
- */
- void SetPortId(wxPortId n);
- /**
- Sets the version of the toolkit associated with this wxPlatformInfo instance.
- */
- void SetToolkitVersion(int major, int minor);
- /**
- Sets the operating system description associated with this wxPlatformInfo instance.
- */
- void SetOperatingSystemDescription(const wxString& desc);
-
- /**
- Sets the desktop environment associated with this wxPlatformInfo instance.
- */
- void SetDesktopEnvironment(const wxString& de);
-
- /**
- Sets the linux distribution info associated with this wxPlatformInfo instance.
- */
- void SetLinuxDistributionInfo(const wxLinuxDistributionInfo& di);
-
- //@}
- };
|