git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54824 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			319 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/platinfo.h
 | 
						|
// Purpose:     declaration of the wxPlatformInfo class
 | 
						|
// Author:      Francesco Montorsi
 | 
						|
// Modified by:
 | 
						|
// Created:     07.07.2006 (based on wxToolkitInfo)
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) 2006 Francesco Montorsi
 | 
						|
// License:     wxWindows license
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_PLATINFO_H_
 | 
						|
#define _WX_PLATINFO_H_
 | 
						|
 | 
						|
#include "wx/string.h"
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// wxPlatformInfo
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
// VERY IMPORTANT: when changing these enum values, also change the relative
 | 
						|
//                 string tables in src/common/platinfo.cpp
 | 
						|
 | 
						|
 | 
						|
// families & sub-families of operating systems
 | 
						|
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
 | 
						|
    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_MICRO  = 1 << 4,     // MicroWindows
 | 
						|
    wxOS_WINDOWS_CE     = 1 << 5,     // Windows CE (Window Mobile)
 | 
						|
    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
 | 
						|
    wxOS_UNIX = wxOS_UNIX_LINUX     |
 | 
						|
                wxOS_UNIX_FREEBSD   |
 | 
						|
                wxOS_UNIX_OPENBSD   |
 | 
						|
                wxOS_UNIX_NETBSD    |
 | 
						|
                wxOS_UNIX_SOLARIS   |
 | 
						|
                wxOS_UNIX_AIX       |
 | 
						|
                wxOS_UNIX_HPUX,
 | 
						|
 | 
						|
    // 1<<13 and 1<<14 available for other Unix flavours
 | 
						|
 | 
						|
    wxOS_DOS            = 1 << 15,      // Microsoft DOS
 | 
						|
    wxOS_OS2            = 1 << 16,       // OS/2
 | 
						|
 | 
						|
    wxOS_PALM_OS        = 1 << 17,       // Pure Palm OS
 | 
						|
    wxOS_PALM_LINUX     = 1 << 18,       // Palm over linux
 | 
						|
    wxOS_PALM = wxOS_PALM_OS | wxOS_PALM_LINUX
 | 
						|
};
 | 
						|
 | 
						|
// list of wxWidgets ports - some of them can be used with more than
 | 
						|
// a single toolkit.
 | 
						|
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_MGL      = 1 << 4,       // wxMGL, using wxUniversal
 | 
						|
    wxPORT_X11      = 1 << 5,       // wxX11, using wxUniversal
 | 
						|
    wxPORT_PM       = 1 << 6,       // wxOS2, using OS/2 Presentation Manager
 | 
						|
    wxPORT_OS2      = wxPORT_PM,    // wxOS2, using OS/2 Presentation Manager
 | 
						|
    wxPORT_MAC      = 1 << 7,       // wxOSX (former wxMac), using Cocoa, Carbon or iPhone API
 | 
						|
    wxPORT_OSX      = wxPORT_MAC,   // wxOSX, using Cocoa, Carbon or iPhone 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
 | 
						|
};
 | 
						|
 | 
						|
// 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,
 | 
						|
 | 
						|
    wxARCH_MAX
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// endian-ness of the machine
 | 
						|
enum wxEndianness
 | 
						|
{
 | 
						|
    wxENDIAN_INVALID = -1,      // returned on error
 | 
						|
 | 
						|
    wxENDIAN_BIG,               // 4321
 | 
						|
    wxENDIAN_LITTLE,            // 1234
 | 
						|
    wxENDIAN_PDP,               // 3412
 | 
						|
 | 
						|
    wxENDIAN_MAX
 | 
						|
};
 | 
						|
 | 
						|
// Information about the toolkit that the app is running under and some basic
 | 
						|
// platform and architecture info
 | 
						|
class WXDLLIMPEXP_BASE wxPlatformInfo
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxPlatformInfo();
 | 
						|
    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,
 | 
						|
                   bool usingUniversal = false);
 | 
						|
 | 
						|
    // default copy ctor, assignment operator and dtor are ok
 | 
						|
 | 
						|
    bool operator==(const wxPlatformInfo &t) const;
 | 
						|
 | 
						|
    bool operator!=(const wxPlatformInfo &t) const
 | 
						|
        { return !(*this == t); }
 | 
						|
 | 
						|
    // Gets a wxPlatformInfo already initialized with the values for
 | 
						|
    // the currently running platform.
 | 
						|
    static const wxPlatformInfo& Get();
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    // string -> enum conversions
 | 
						|
    // ---------------------------------
 | 
						|
 | 
						|
    static wxOperatingSystemId GetOperatingSystemId(const wxString &name);
 | 
						|
    static wxPortId GetPortId(const wxString &portname);
 | 
						|
 | 
						|
    static wxArchitecture GetArch(const wxString &arch);
 | 
						|
    static wxEndianness GetEndianness(const wxString &end);
 | 
						|
 | 
						|
    // enum -> string conversions
 | 
						|
    // ---------------------------------
 | 
						|
 | 
						|
    static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os);
 | 
						|
    static wxString GetOperatingSystemIdName(wxOperatingSystemId os);
 | 
						|
    static wxString GetPortIdName(wxPortId port, bool usingUniversal);
 | 
						|
    static wxString GetPortIdShortName(wxPortId port, bool usingUniversal);
 | 
						|
 | 
						|
    static wxString GetArchName(wxArchitecture arch);
 | 
						|
    static wxString GetEndiannessName(wxEndianness end);
 | 
						|
 | 
						|
    // getters
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    int GetOSMajorVersion() const
 | 
						|
        { return m_osVersionMajor; }
 | 
						|
    int GetOSMinorVersion() const
 | 
						|
        { return m_osVersionMinor; }
 | 
						|
 | 
						|
    // return true if the OS version >= major.minor
 | 
						|
    bool CheckOSVersion(int major, int minor) const
 | 
						|
    {
 | 
						|
        return DoCheckVersion(GetOSMajorVersion(),
 | 
						|
                              GetOSMinorVersion(),
 | 
						|
                              major,
 | 
						|
                              minor);
 | 
						|
    }
 | 
						|
 | 
						|
    int GetToolkitMajorVersion() const
 | 
						|
        { return m_tkVersionMajor; }
 | 
						|
    int GetToolkitMinorVersion() const
 | 
						|
        { return m_tkVersionMinor; }
 | 
						|
 | 
						|
    bool CheckToolkitVersion(int major, int minor) const
 | 
						|
    {
 | 
						|
        return DoCheckVersion(GetToolkitMajorVersion(),
 | 
						|
                              GetToolkitMinorVersion(),
 | 
						|
                              major,
 | 
						|
                              minor);
 | 
						|
    }
 | 
						|
 | 
						|
    bool IsUsingUniversalWidgets() const
 | 
						|
        { return m_usingUniversal; }
 | 
						|
 | 
						|
    wxOperatingSystemId GetOperatingSystemId() const
 | 
						|
        { return m_os; }
 | 
						|
    wxPortId GetPortId() const
 | 
						|
        { return m_port; }
 | 
						|
    wxArchitecture GetArchitecture() const
 | 
						|
        { return m_arch; }
 | 
						|
    wxEndianness GetEndianness() const
 | 
						|
        { return m_endian; }
 | 
						|
 | 
						|
 | 
						|
    // string getters
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    wxString GetOperatingSystemFamilyName() const
 | 
						|
        { return GetOperatingSystemFamilyName(m_os); }
 | 
						|
    wxString GetOperatingSystemIdName() const
 | 
						|
        { return GetOperatingSystemIdName(m_os); }
 | 
						|
    wxString GetPortIdName() const
 | 
						|
        { return GetPortIdName(m_port, m_usingUniversal); }
 | 
						|
    wxString GetPortIdShortName() const
 | 
						|
        { return GetPortIdShortName(m_port, m_usingUniversal); }
 | 
						|
    wxString GetArchName() const
 | 
						|
        { return GetArchName(m_arch); }
 | 
						|
    wxString GetEndiannessName() const
 | 
						|
        { return GetEndiannessName(m_endian); }
 | 
						|
 | 
						|
    // setters
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    void SetOSVersion(int major, int minor)
 | 
						|
        { m_osVersionMajor=major; m_osVersionMinor=minor; }
 | 
						|
    void SetToolkitVersion(int major, int minor)
 | 
						|
        { m_tkVersionMajor=major; m_tkVersionMinor=minor; }
 | 
						|
 | 
						|
    void SetOperatingSystemId(wxOperatingSystemId n)
 | 
						|
        { m_os = n; }
 | 
						|
    void SetPortId(wxPortId n)
 | 
						|
        { m_port = n; }
 | 
						|
    void SetArchitecture(wxArchitecture n)
 | 
						|
        { m_arch = n; }
 | 
						|
    void SetEndianness(wxEndianness n)
 | 
						|
        { m_endian = n; }
 | 
						|
 | 
						|
    // miscellaneous
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    bool IsOk() const
 | 
						|
    {
 | 
						|
        return m_osVersionMajor != -1 && m_osVersionMinor != -1 &&
 | 
						|
               m_os != wxOS_UNKNOWN &&
 | 
						|
               m_tkVersionMajor != -1 && m_tkVersionMinor != -1 &&
 | 
						|
               m_port != wxPORT_UNKNOWN &&
 | 
						|
               m_arch != wxARCH_INVALID && m_endian != wxENDIAN_INVALID;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
protected:
 | 
						|
    static bool DoCheckVersion(int majorCur, int minorCur, int major, int minor)
 | 
						|
    {
 | 
						|
        return majorCur > major || (majorCur == major && minorCur >= minor);
 | 
						|
    }
 | 
						|
 | 
						|
    void InitForCurrentPlatform();
 | 
						|
 | 
						|
 | 
						|
    // OS stuff
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    // Version of the OS; valid if m_os != wxOS_UNKNOWN
 | 
						|
    // (-1 means not initialized yet).
 | 
						|
    int m_osVersionMajor,
 | 
						|
        m_osVersionMinor;
 | 
						|
 | 
						|
    // Operating system ID.
 | 
						|
    wxOperatingSystemId m_os;
 | 
						|
 | 
						|
 | 
						|
    // toolkit
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    // Version of the underlying toolkit
 | 
						|
    // (-1 means not initialized yet; zero means no toolkit).
 | 
						|
    int m_tkVersionMajor, m_tkVersionMinor;
 | 
						|
 | 
						|
    // name of the wxWidgets port
 | 
						|
    wxPortId m_port;
 | 
						|
 | 
						|
    // is using wxUniversal widgets?
 | 
						|
    bool m_usingUniversal;
 | 
						|
 | 
						|
 | 
						|
    // others
 | 
						|
    // -----------------
 | 
						|
 | 
						|
    // architecture of the OS
 | 
						|
    wxArchitecture m_arch;
 | 
						|
 | 
						|
    // endianness of the machine
 | 
						|
    wxEndianness m_endian;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
#if WXWIN_COMPATIBILITY_2_6
 | 
						|
    #define wxUNKNOWN_PLATFORM      wxOS_UNKNOWN
 | 
						|
    #define wxUnix                  wxOS_UNIX
 | 
						|
    #define wxWin95                 wxOS_WINDOWS_9X
 | 
						|
    #define wxWIN95                 wxOS_WINDOWS_9X
 | 
						|
    #define wxWINDOWS_NT            wxOS_WINDOWS_NT
 | 
						|
    #define wxMSW                   wxOS_WINDOWS
 | 
						|
    #define wxWinCE                 wxOS_WINDOWS_CE
 | 
						|
    #define wxWIN32S                wxOS_WINDOWS_9X
 | 
						|
 | 
						|
    #define wxPalmOS                wxPORT_PALMOS
 | 
						|
    #define wxOS2                   wxPORT_OS2
 | 
						|
    #define wxMGL                   wxPORT_MGL
 | 
						|
    #define wxCocoa                 wxPORT_MAC
 | 
						|
    #define wxMac                   wxPORT_MAC
 | 
						|
    #define wxMotif                 wxPORT_MOTIF
 | 
						|
    #define wxGTK                   wxPORT_GTK
 | 
						|
#endif // WXWIN_COMPATIBILITY_2_6
 | 
						|
 | 
						|
#endif // _WX_PLATINFO_H_
 |