]> git.saurik.com Git - wxWidgets.git/commitdiff
replaced wxAppTraits::GetOSVersion with GetToolkitInfo with richer information that...
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 2 Aug 2003 15:14:17 +0000 (15:14 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 2 Aug 2003 15:14:17 +0000 (15:14 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

18 files changed:
include/wx/app.h
include/wx/apptrait.h
include/wx/mac/apptrait.h
include/wx/msw/apptbase.h
include/wx/msw/apptrait.h
include/wx/unix/apptrait.h
src/common/dynlib.cpp
src/common/utilscmn.cpp
src/gtk/utilsgtk.cpp
src/gtk1/utilsgtk.cpp
src/mac/carbon/utils.cpp
src/mac/utils.cpp
src/motif/utils.cpp
src/msw/app.cpp
src/msw/utils.cpp
src/unix/baseunix.cpp
src/unix/gsocket.c
src/x11/utils.cpp

index a06b1f7485600732db9d95c0ec02034750a75a0e..c95c47751cea6aba2aebfca8e3e242be4e7e544c 100644 (file)
@@ -75,6 +75,7 @@ private:
 };
 #endif // wxUSE_GUI
 
+
 // ----------------------------------------------------------------------------
 // wxAppConsole: wxApp for non-GUI applications
 // ----------------------------------------------------------------------------
index 0a169af8f0446b8a34f4395e4fa06fffbe8b07ec..7d81b46bee6abdae918530306c685869728cf539 100644 (file)
 #ifndef _WX_APPTRAIT_H_
 #define _WX_APPTRAIT_H_
 
-class WXDLLEXPORT wxObject;
+#include "wx/string.h"
+
+class WXDLLIMPEXP_BASE wxObject;
 class WXDLLEXPORT wxAppTraits;
 #if wxUSE_FONTMAP
     class WXDLLEXPORT wxFontMapper;
 #endif // wxUSE_FONTMAP
-class WXDLLEXPORT wxLog;
-class WXDLLEXPORT wxMessageOutput;
+class WXDLLIMPEXP_BASE wxLog;
+class WXDLLIMPEXP_BASE wxMessageOutput;
 class WXDLLEXPORT wxRendererNative;
-class WXDLLEXPORT wxString;
+class WXDLLIMPEXP_BASE wxString;
+struct WXDLLIMPEXP_BASE wxToolkitInfo;
+
+// ----------------------------------------------------------------------------
+// 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
@@ -85,13 +107,14 @@ public:
     virtual void RemoveFromPendingDelete(wxObject *object) = 0;
 
 
-    // other miscellaneous helpers
-    // ---------------------------
-
-    // 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
-    virtual int GetOSVersion(int *verMaj, int *verMin) = 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;
 };
 
 // ----------------------------------------------------------------------------
index e6d6bdfed9c55fda39e1fc8c040fbce08cf8186b..7cae381e3765e498068bb360244415561e3dfb61 100644 (file)
@@ -22,7 +22,7 @@ public:
     // other miscellaneous helpers
     // ---------------------------
 
-    virtual int GetOSVersion(int *verMaj, int *verMin);
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #if wxUSE_GUI
@@ -33,7 +33,7 @@ public:
     // other miscellaneous helpers
     // ---------------------------
 
-    virtual int GetOSVersion(int *verMaj, int *verMin);
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #endif // wxUSE_GUI
index ce0dc36d10beb39d360b7a35e630f52ee9ab4c29..ef8db45012798a1461ee450545282971c0b9dba0 100644 (file)
@@ -44,9 +44,10 @@ public:
     // other miscellaneous helpers
     // ---------------------------
 
-    // under MSW this function does the same thing for console and GUI
-    // applications so we can implement it directly in the base class
-    virtual int GetOSVersion(int *verMaj, int *verMin);
+    // under MSW this function returns same version for both console and GUI
+    // applications so we can implement it directly in the base class and only
+    // override it wxGUIAppTraits to fill in toolkit information
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #endif // _WX_MSW_APPTBASE_H_
index a85f992051d7429ae292f93c37b33699bf53a4cc..41789eda05a7cf4d9a0560c934f7329f30506ee6 100644 (file)
@@ -36,6 +36,7 @@ public:
     virtual void AfterChildWaitLoop(void *data);
 
     virtual bool DoMessageFromThreadWait();
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #endif // wxUSE_GUI
index 13b25fcbc695451637d97b880a9cbb0933d58df9..598b4b4d807849cabc794d86c90b2104352dfbea 100644 (file)
@@ -24,7 +24,7 @@ public:
     virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
     virtual int WaitForChild(wxExecuteData& execData);
 
-    virtual int GetOSVersion(int *verMaj, int *verMin);
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #if wxUSE_GUI
@@ -37,7 +37,7 @@ public:
     virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
     virtual int WaitForChild(wxExecuteData& execData);
 
-    virtual int GetOSVersion(int *verMaj, int *verMin);
+    virtual wxToolkitInfo *GetToolkitInfo();
 };
 
 #endif // wxUSE_GUI
index f537a51adf16a8c34d7bcfbf19ce63d8887696c7..1ba9660c9f86334a0d7f6e2c87dab98e013157e5 100644 (file)
@@ -39,6 +39,8 @@
 #include "wx/log.h"
 #include "wx/utils.h"
 #include "wx/filename.h"        // for SplitPath()
+#include "wx/app.h"
+#include "wx/apptrait.h"
 
 #if defined(__WXMAC__)
     #include "wx/mac/private.h"
@@ -409,31 +411,11 @@ wxString wxDynamicLibrary::CanonicalizePluginName(const wxString& name,
     wxString suffix;
     if ( cat == wxDL_PLUGIN_GUI )
     {
-        suffix = wxString::FromAscii(
-#if defined(__WXMSW__)
-                "msw"
-#elif defined(__WXGTK__)
-                "gtk"
-#elif defined(__WXMGL__)
-                "mgl"
-#elif defined(__WXMOTIF__)
-                "motif"
-#elif defined(__WXOS2__)
-                "pm"
-#elif defined(__WXX11__)
-                "x11"
-#elif defined(__WXMAC__)
-                "mac"
-#elif defined(__WXCOCOA__)
-                "cocoa"
-#else // FIXME - wrong!
-                ""
-#endif
-       );
-
-#ifdef __WXUNIVERSAL__
-        suffix << _T("univ");
-#endif
+        wxAppTraits *traits = wxAppConsole::GetInstance() ?
+                              wxAppConsole::GetInstance()->GetTraits() : NULL;
+        wxASSERT_MSG( traits, 
+               _("can't query for GUI plugins name in console applications") );
+        suffix = traits->GetToolkitInfo()->shortName;
     }
 #if wxUSE_UNICODE
     suffix << _T('u');
index 3e960784076853e618de0a95188e535fe3355802..f6195cfeb2af67fe79531458c149a35652ba8bf6 100644 (file)
@@ -293,7 +293,12 @@ int wxGetOsVersion(int *verMaj, int *verMin)
     if ( ! traits )
         traits = &traitsConsole;
 
-    return traits->GetOSVersion(verMaj, verMin);
+    wxToolkitInfo *info = traits->GetToolkitInfo();
+    if ( verMaj )
+        *verMaj = info->versionMajor;
+    if ( verMin )
+        *verMin = info->versionMinor;
+    return info->os;
 }
 
 // ----------------------------------------------------------------------------
index 75972bb8b603e4fe63e9c10ac1b120ad6c34ac7a..1e0d4dccc1d0e4e796103bddf6984eb640887d6f 100644 (file)
@@ -122,14 +122,23 @@ int wxDisplayDepth()
     return gdk_window_get_visual( wxGetRootWindow()->window )->depth;
 }
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
-    if (majorVsn)
-        *majorVsn = GTK_MAJOR_VERSION;
-    if (minorVsn)
-        *minorVsn = GTK_MINOR_VERSION;
-
-    return wxGTK;
+    static wxToolkitInfo info;
+#ifdef __WXGTK20__
+    info.shortName = _T("gtk2");
+#else
+    info.shortName = _T("gtk");
+#endif
+    info.name = _T("wxGTK");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
+    info.versionMajor = GTK_MAJOR_VERSION;
+    info.versionMinor = GTK_MINOR_VERSION;
+    info.os = wxGTK;
+    return &info;
 }
 
 wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
index 75972bb8b603e4fe63e9c10ac1b120ad6c34ac7a..1e0d4dccc1d0e4e796103bddf6984eb640887d6f 100644 (file)
@@ -122,14 +122,23 @@ int wxDisplayDepth()
     return gdk_window_get_visual( wxGetRootWindow()->window )->depth;
 }
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
-    if (majorVsn)
-        *majorVsn = GTK_MAJOR_VERSION;
-    if (minorVsn)
-        *minorVsn = GTK_MINOR_VERSION;
-
-    return wxGTK;
+    static wxToolkitInfo info;
+#ifdef __WXGTK20__
+    info.shortName = _T("gtk2");
+#else
+    info.shortName = _T("gtk");
+#endif
+    info.name = _T("wxGTK");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
+    info.versionMajor = GTK_MAJOR_VERSION;
+    info.versionMinor = GTK_MINOR_VERSION;
+    info.os = wxGTK;
+    return &info;
 }
 
 wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
index ae2d5b4140a04fedf438299fb7ec8126417d9274..6e1bd0d1b41a714b83c9bfdc4afe87ce4e5932de 100644 (file)
@@ -218,18 +218,29 @@ static int DoGetOSVersion(int *majorVsn, int *minorVsn)
 #endif
 }
 
-int wxConsoleAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxConsoleAppTraits::GetToolkitInfo()
 {
-    return DoGetOSVersion(majorVsn, minorVsn);
+    static wxToolkitInfo info;
+    info.os = DoGetOSVersion(&info.majorVersion, &info.minorVersion);
+    info.name = _T("wxBase");
+    return &info;
 }
 
 #endif // wxUSE_BASE
 
 #if wxUSE_GUI
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
-    return DoGetOSVersion(majorVsn, minorVsn);
+    static wxToolkitInfo info;
+    info.os = DoGetOSVersion(&info.majorVersion, &info.minorVersion);
+    info.shortName = _T("mac");
+    info.name = _T("wxMac");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
+    return &info;
 }
 
 // Reading and writing resources (eg WIN.INI, .Xdefaults)
index ae2d5b4140a04fedf438299fb7ec8126417d9274..6e1bd0d1b41a714b83c9bfdc4afe87ce4e5932de 100644 (file)
@@ -218,18 +218,29 @@ static int DoGetOSVersion(int *majorVsn, int *minorVsn)
 #endif
 }
 
-int wxConsoleAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxConsoleAppTraits::GetToolkitInfo()
 {
-    return DoGetOSVersion(majorVsn, minorVsn);
+    static wxToolkitInfo info;
+    info.os = DoGetOSVersion(&info.majorVersion, &info.minorVersion);
+    info.name = _T("wxBase");
+    return &info;
 }
 
 #endif // wxUSE_BASE
 
 #if wxUSE_GUI
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
-    return DoGetOSVersion(majorVsn, minorVsn);
+    static wxToolkitInfo info;
+    info.os = DoGetOSVersion(&info.majorVersion, &info.minorVersion);
+    info.shortName = _T("mac");
+    info.name = _T("wxMac");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
+    return &info;
 }
 
 // Reading and writing resources (eg WIN.INI, .Xdefaults)
index 01c0719c0c7e32c21b59c91adc3d256a8f17beaa..ab645457b26b4ae1f481b626054bdf6adda48d67 100644 (file)
@@ -133,19 +133,24 @@ void wxBell()
     XBell (wxGlobalDisplay(), 0);
 }
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
+    wxToolkitInfo info;
+    info.shortName = _T("motif");
+    info.name = _T("wxMotif");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
     // FIXME TODO
     // This code is WRONG!! Does NOT return the
     // Motif version of the libs but the X protocol
     // version!
     Display *display = wxGlobalDisplay();
-    if (majorVsn)
-        *majorVsn = ProtocolVersion (display);
-    if (minorVsn)
-        *minorVsn = ProtocolRevision (display);
-
-    return wxMOTIF_X;
+    info.versionMajor = ProtocolVersion (display);
+    info.versionMinor = ProtocolRevision (display);
+    info.os = wxMOTIF_X;
+    return &info;
 }
 
 // ----------------------------------------------------------------------------
index 2b12d8ebb074cda3fdfbece78c99cdff2c12fe63..8d2c220f95c44e439b91163c3f05a01424af6e77 100644 (file)
@@ -229,6 +229,22 @@ bool wxGUIAppTraits::DoMessageFromThreadWait()
     return !wxTheApp || wxTheApp->DoMessage();
 }
 
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
+{
+    static wxToolkitInfo info;    
+    wxToolkitInfo *baseInfo = wxAppTraits::GetToolkitInfo();
+    info.versionMajor = baseInfo->versionMajor;
+    info.versionMinor = baseInfo->versionMinor;
+    info.os = baseInfo->os;
+    info.shortName = _T("msw");
+    info.name = _T("wxMSW");
+#ifdef __WXUNIVERSAL__
+    info.shortName << _T("univ");
+    info.name << _T("/wxUniversal");
+#endif
+    return &info;
+}
+
 // ===========================================================================
 // wxApp implementation
 // ===========================================================================
index e53cdcbfcbdb09bc73626917e10c76ee56ed0b99..3a3f03a76c50cf65ce1a7ac09acf12b46ad75586 100644 (file)
@@ -1012,7 +1012,7 @@ wxString wxGetOsDescription()
 #endif // Win32/16
 }
 
-int wxAppTraits::GetOSVersion(int *verMaj, int *verMin)
+wxToolkitInfo *wxAppTraits::GetToolkitInfo()
 {
     // cache the version info, it's not going to change
     //
@@ -1056,12 +1056,12 @@ int wxAppTraits::GetOSVersion(int *verMaj, int *verMin)
         }
     }
 
-    if ( verMaj )
-        *verMaj = s_major;
-    if ( verMin )
-        *verMin = s_minor;
-
-    return s_ver;
+    static wxToolkitInfo info;    
+    info.versionMajor = s_major;
+    info.versionMinor = s_minor;
+    info.os = s_ver;
+    info.name = _T("wxBase");
+    return &info;
 }
 
 // ----------------------------------------------------------------------------
index b265339a06d00621b0ceea033b37d4e9b15fd36c..630ad555a03f7dcc145d847ecf18a945f8392ad3 100644 (file)
@@ -88,8 +88,9 @@ wxConsoleAppTraits::WaitForChild(wxExecuteData& execData)
 // this is in mac/utils.cpp under Mac
 #ifndef __WXMAC__
 
-int wxConsoleAppTraits::GetOSVersion(int *verMaj, int *verMin)
+wxToolkitInfo *wxConsoleAppTraits::GetToolkitInfo()
 {
+    static wxToolkitInfo info;
     int major, minor;
     char name[256];
 
@@ -100,12 +101,12 @@ int wxConsoleAppTraits::GetOSVersion(int *verMaj, int *verMin)
         minor = -1;
     }
 
-    if ( verMaj )
-        *verMaj = major;
-    if ( verMin )
-        *verMin = minor;
+    info.versionMajor = major;
+    info.versionMinor = minor;
+    info.name = _T("wxBase");
+    info.os = wxUNIX;
 
-    return wxUNIX;
+    return &info;
 }
 
 #endif // __WXMAC__
index 3c5fa00ed00cced0c1d8ecc4b289b2b80fc35143..09924de2267ef8f945a230f963d944f97af957ee 100644 (file)
@@ -111,7 +111,8 @@ struct sockaddr_un
 #endif /* __GSOCKET_STANDALONE__ */
 
 /* redefine some GUI-only functions to do nothing in console mode */
-#if defined(wxUSE_GUI) && !wxUSE_GUI
+#if 1 //defined(wxUSE_GUI) && !wxUSE_GUI
+      // FIXME -- temporary measure
 #  define _GSocket_GUI_Init(socket) (1)
 #  define _GSocket_GUI_Destroy(socket)
 #  define _GSocket_Enable_Events(socket)
index 0dedaec50522d6ed5db3fc625d26fb6320919458..0bdd4ed3dca3c8623bf2524abceeaded8b989e17 100644 (file)
@@ -98,15 +98,15 @@ void wxBell()
     XBell ((Display*) wxGetDisplay(), 0);
 }
 
-int wxGUIAppTraits::GetOSVersion(int *majorVsn, int *minorVsn)
+wxToolkitInfo *wxGUIAppTraits::GetToolkitInfo()
 {
-    if (majorVsn)
-        *majorVsn = 0;
-        
-    if (minorVsn)
-        *minorVsn = 0;
-        
-    return wxX11;
+    static wxToolkitInfo info;
+    info.shortName = _T("x11univ");
+    info.name = _T("wxX11");
+    info.versionMajor = 0;
+    info.versionMinor = 0;
+    info.os = wxX11;
+    return &info;
 }
 
 // ----------------------------------------------------------------------------