]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/platinfo.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / platinfo.h
index 88b6a68d8653740db7da5729b4a87b27607b8cbc..711ab9bd054e85104c77fab4d9e7ac3d50f9ee3b 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        platinfo.h
 // Purpose:     interface of wxPlatformInfo
 // Author:      wxWidgets team
 // 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;
     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
 {
 */
 enum wxOperatingSystemId
 {
@@ -20,12 +24,16 @@ 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
 
     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_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)
     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 = wxOS_WINDOWS_9X       |
                     wxOS_WINDOWS_NT      |
                     wxOS_WINDOWS_MICRO   |
@@ -38,6 +46,8 @@ enum wxOperatingSystemId
     wxOS_UNIX_SOLARIS   = 1 << 10,      //!< SunOS
     wxOS_UNIX_AIX       = 1 << 11,      //!< AIX
     wxOS_UNIX_HPUX      = 1 << 12,      //!< HP/UX
     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 = wxOS_UNIX_LINUX     |
                 wxOS_UNIX_FREEBSD   |
                 wxOS_UNIX_OPENBSD   |
@@ -66,20 +76,18 @@ enum wxPortId
     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_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_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
 };
 
 
 /**
     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
     documentation for more info).
 */
 enum wxArchitecture
@@ -107,6 +115,24 @@ enum wxEndianness
     wxENDIAN_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
 
 /**
     @class wxPlatformInfo
@@ -117,8 +143,16 @@ enum wxEndianness
     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
     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) the 
-    signature of the system which generated it.
+    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{cfg}
 
     @library{wxbase}
     @category{cfg}
@@ -126,7 +160,7 @@ enum wxEndianness
     @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(),
          wxAppTraits, @ref group_funcmacro_networkuseros
 */
     @see ::wxGetOsVersion(), wxIsPlatformLittleEndian(), wxIsPlatform64Bit(),
          wxAppTraits, @ref group_funcmacro_networkuseros
 */
-class wxPlatformInfo : public wxObject
+class wxPlatformInfo 
 {
 public:
 
 {
 public:
 
@@ -144,7 +178,7 @@ public:
     /**
         Initializes the object using given values.
     */
     /**
         Initializes the object using given values.
     */
-    wxPlatformInfo(wxPortId pid = wxPORT_UNKNOWN,
+    wxPlatformInfo(wxPortId pid,
                    int tkMajor = -1,
                    int tkMinor = -1,
                    wxOperatingSystemId id = wxOS_UNKNOWN,
                    int tkMajor = -1,
                    int tkMinor = -1,
                    wxOperatingSystemId id = wxOS_UNKNOWN,
@@ -285,6 +319,13 @@ public:
     static wxString GetPortIdShortName(wxPortId port,
                                        bool usingUniversal);
 
     static wxString GetPortIdShortName(wxPortId port,
                                        bool usingUniversal);
 
+    /**
+        Returns the operating system directory.
+        
+        See wxGetOSDirectory() for more info.
+    */
+    static wxString GetOperatingSystemDirectory();
+
     //@}
     
     
     //@}
     
     
@@ -321,13 +362,36 @@ public:
 
     /**
         Returns the operating system ID of this wxPlatformInfo instance.
 
     /**
         Returns the operating system ID of this wxPlatformInfo instance.
+        
+        See wxGetOsVersion() for more info.
     */
     wxOperatingSystemId GetOperatingSystemId() const;
     */
     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 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
 
     /**
         Returns the run-time major version of the toolkit associated with this
@@ -436,8 +500,22 @@ public:
         Sets the version of the toolkit associated with this wxPlatformInfo instance.
     */
     void SetToolkitVersion(int major, int minor);
         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);
     
     
+    //@}
 };
 
 };