X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4055ed8281971e3d35bf04177193c27043d42ed1..d5dc103fd4afb197f48d6a87f67f6b82dd7f56fe:/include/wx/apptrait.h diff --git a/include/wx/apptrait.h b/include/wx/apptrait.h index 6ef915d9b1..1de2cfea7d 100644 --- a/include/wx/apptrait.h +++ b/include/wx/apptrait.h @@ -13,6 +13,7 @@ #define _WX_APPTRAIT_H_ #include "wx/string.h" +#include "wx/platinfo.h" class WXDLLIMPEXP_BASE wxObject; class WXDLLEXPORT wxAppTraits; @@ -26,24 +27,6 @@ class WXDLLIMPEXP_BASE wxString; class GSocketGUIFunctionsTable; -// ---------------------------------------------------------------------------- -// toolkit information -// ---------------------------------------------------------------------------- - -// Information about the toolkit that the app is running under (e.g. wxMSW): -struct WXDLLIMPEXP_BASE wxToolkitInfo -{ - // Short name of the toolkit (e.g. "msw" or "mswuniv"); empty for console: - wxString shortName; - // Descriptive name of the toolkit, human readable (e.g. "wxMSW" or - // "wxMSW/Universal"); "wxBase" for console apps: - wxString name; - // Version of the underlying toolkit or of the OS for console apps: - int versionMajor, versionMinor; - // OS mnenomics, e.g. wxGTK or wxMSW: - int os; -}; - // ---------------------------------------------------------------------------- // wxAppTraits: this class defines various configurable aspects of wxApp @@ -54,6 +37,9 @@ class WXDLLIMPEXP_BASE wxStandardPathsBase; class WXDLLIMPEXP_BASE wxAppTraitsBase { public: + // needed since this class declares virtual members + virtual ~wxAppTraitsBase() { } + // hooks for creating the global objects, may be overridden by the user // ------------------------------------------------------------------------ @@ -77,11 +63,11 @@ public: // NB: returned pointer will be deleted by the caller virtual wxRendererNative *CreateRenderer() = 0; +#if wxUSE_STDPATHS // wxStandardPaths object is normally the same for wxBase and wxGUI // except in the case of wxMac and wxCocoa -#ifndef __WXPALMOS__ virtual wxStandardPathsBase& GetStandardPaths(); -#endif +#endif // wxUSE_STDPATHS // functions abstracting differences between GUI and console modes // ------------------------------------------------------------------------ @@ -124,26 +110,25 @@ public: virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0; #endif + // return information about the (native) toolkit currently used; + // returns wxPORT_BASE for console applications and one of the remaining + // wxPORT_* values for GUI applications. + virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const = 0; - // return information about what toolkit is running; we need for two things - // that are both contained in wxBase: - // - wxGetOsVersion() behaves differently in GUI and non-GUI builds under - // Unix: in the former case it returns the information about the toolkit - // and in the latter -- about the OS, so we need to virtualize it - // - wxDynamicLibrary::CanonicalizePluginName() must embed toolkit - // signature in DLL name - virtual wxToolkitInfo& GetToolkitInfo() = 0; + // return true if the port is using wxUniversal for the GUI, false if not + virtual bool IsUsingUniversalWidgets() const = 0; }; // ---------------------------------------------------------------------------- // include the platform-specific version of the class // ---------------------------------------------------------------------------- -// NB: test for __UNIX__ before __WXMAC__ as under Darwin we want to use the -// Unix code (and otherwise __UNIX__ wouldn't be defined) +// NB: test for __UNIX__ before __WXMAC__ as under Darwin we want to use the +// Unix code (and otherwise __UNIX__ wouldn't be defined) +// ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port #if defined(__WXPALMOS__) #include "wx/palmos/apptbase.h" -#elif defined(__WXMSW__) +#elif defined(__WIN32__) #include "wx/msw/apptbase.h" #elif defined(__UNIX__) && !defined(__EMX__) #include "wx/unix/apptbase.h" @@ -188,6 +173,19 @@ public: virtual void ScheduleForDestroy(wxObject *object); virtual void RemoveFromPendingDelete(wxObject *object); + + // the GetToolkitVersion for console application is always the same + virtual wxPortId GetToolkitVersion(int *verMaj, int *verMin) const + { + // no toolkits (wxBase is for console applications without GUI support) + // NB: zero means "no toolkit", -1 means "not initialized yet" + // so we must use zero here! + if (verMaj) *verMaj = 0; + if (verMin) *verMin = 0; + return wxPORT_BASE; + } + + virtual bool IsUsingUniversalWidgets() const { return false; } }; // ---------------------------------------------------------------------------- @@ -218,6 +216,15 @@ public: virtual void ScheduleForDestroy(wxObject *object); virtual void RemoveFromPendingDelete(wxObject *object); + + virtual bool IsUsingUniversalWidgets() const + { + #ifdef __WXUNIVERSAL__ + return true; + #else + return false; + #endif + } }; #endif // wxUSE_GUI @@ -226,9 +233,10 @@ public: // include the platform-specific version of the classes above // ---------------------------------------------------------------------------- +// ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port #if defined(__WXPALMOS__) #include "wx/palmos/apptrait.h" -#elif defined(__WXMSW__) +#elif defined(__WIN32__) #include "wx/msw/apptrait.h" #elif defined(__UNIX__) && !defined(__EMX__) #include "wx/unix/apptrait.h" @@ -236,17 +244,16 @@ public: #include "wx/mac/apptrait.h" #elif defined(__WXPM__) #include "wx/os2/apptrait.h" +#elif defined(__DOS__) + #include "wx/msdos/apptrait.h" #else - // at least, we need an implementation of GetToolkitInfo ! #if wxUSE_GUI class wxGUIAppTraits : public wxGUIAppTraitsBase { - virtual wxToolkitInfo& GetToolkitInfo(); }; #endif // wxUSE_GUI class wxConsoleAppTraits: public wxConsoleAppTraitsBase { - virtual wxToolkitInfo& GetToolkitInfo(); }; #endif // platform