]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/utilsgui.cpp
wxControl::SetLabel no longer strips out codes so do it here
[wxWidgets.git] / src / os2 / utilsgui.cpp
index 492cfa2e61d743bba45a2be2e3f347bcc0ed16ec..66647fcd2eb98f964091067fb522d937c66b49ae 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        os2/utilsgui.cpp
+// Name:        src/os2/utilsgui.cpp
 // Purpose:     Various utility functions only available in GUI
 // Author:      David Webster
 // Modified by:
 #endif
 
 #ifndef WX_PRECOMP
-    #include "wx/setup.h"
     #include "wx/utils.h"
     #include "wx/app.h"
     #include "wx/cursor.h"
 #endif //WX_PRECOMP
 
+#include "wx/apptrait.h"
+#include "wx/timer.h"
+
 #include "wx/os2/private.h"     // includes <windows.h>
 
 // ============================================================================
@@ -54,8 +56,6 @@ public:
     }
 };
 
-static wxTimer*                     wxTheSleepTimer = NULL;
-
 // Reading and writing resources (eg WIN.INI, .Xdefaults)
 #if wxUSE_RESOURCES
 bool wxWriteResource(
@@ -68,7 +68,7 @@ bool wxWriteResource(
     HAB                             hab = 0;
     HINI                            hIni = 0;
 
-    if (rFile != "")
+    if (!rFile.empty())
     {
         hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile);
         if (hIni != 0L)
@@ -152,7 +152,7 @@ bool wxGetResource(
     wxChar                          zDefunkt[] = _T("$$default");
     char                            zBuf[1000];
 
-    if (rFile != "")
+    if (!rFile.empty())
     {
         hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile);
         if (hIni != 0L)
@@ -332,7 +332,6 @@ bool wxCheckForInterrupt(
         QMSG                        vMsg;
         HAB                         hab = 0;
         HWND                        hwndFilter = NULLHANDLE;
-        HWND                        hwndWin= (HWND) pWnd->GetHWND();
 
         while(::WinPeekMsg(hab, &vMsg, hwndFilter, 0, 0, PM_REMOVE))
         {
@@ -428,8 +427,10 @@ void wxDisplaySize(
         ::DevCloseDC(hdcScreen);
         ::WinReleasePS(hpsScreen);
     }
-    *pWidth = (int)lWidth;
-    *pHeight = (int)lHeight;
+    if (pWidth)
+        *pWidth = (int)lWidth;
+    if (pHeight)
+        *pHeight = (int)lHeight;
 }
 
 void wxDisplaySizeMM(
@@ -470,35 +471,70 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height)
     wxDisplaySize(width, height);
 }
 
+void wxGUIAppTraits::InitializeGui(unsigned long &ulHab)
+{
+    ulHab = ::WinInitialize(0);
+}
+
+void wxGUIAppTraits::TerminateGui(unsigned long ulHab)
+{
+    ::WinTerminate(ulHab);
+}
+
+wxToolkitInfo & wxGUIAppTraits::GetToolkitInfo()
+{
+    static wxToolkitInfo vInfo;
+    ULONG                           ulSysInfo[QSV_MAX] = {0};
+    APIRET                          ulrc;
+
+    vInfo.shortName = _T("PM");
+    vInfo.name = _T("wxOS2");
+#ifdef __WXUNIVERSAL__
+    vInfo.shortName << _T("univ");
+    vInfo.name << _T("/wxUniversal");
+#endif
+    ulrc = ::DosQuerySysInfo( 1L
+                             ,QSV_MAX
+                             ,(PVOID)ulSysInfo
+                             ,sizeof(ULONG) * QSV_MAX
+                            );
+    if (ulrc == 0L)
+    {
+        vInfo.versionMajor = ulSysInfo[QSV_VERSION_MAJOR] / 10;
+        vInfo.versionMinor = ulSysInfo[QSV_VERSION_MINOR];
+    }
+    vInfo.os = wxOS2_PM;
+    return vInfo;
+}
+
 // ---------------------------------------------------------------------------
 // window information functions
 // ---------------------------------------------------------------------------
 
-wxString WXDLLEXPORT wxGetWindowText(
-  WXHWND                            hWnd
-)
+wxString WXDLLEXPORT wxGetWindowText( WXHWND hWnd )
 {
-    wxString                        vStr;
-    long                            lLen = ::WinQueryWindowTextLength((HWND)hWnd) + 1;
+    wxString vStr;
 
-    ::WinQueryWindowText((HWND)hWnd, lLen, vStr.GetWriteBuf((int)lLen));
-    vStr.UngetWriteBuf();
+    if ( hWnd )
+    {
+        long lLen = ::WinQueryWindowTextLength((HWND)hWnd) + 1;
+        ::WinQueryWindowText((HWND)hWnd, lLen, (PSZ)(wxChar*)wxStringBuffer(vStr, lLen));
+    }
 
     return vStr;
 }
 
-wxString WXDLLEXPORT wxGetWindowClass(
-  WXHWND                            hWnd
-)
+wxString WXDLLEXPORT wxGetWindowClass( WXHWND hWnd )
 {
-    wxString                        vStr;
-    int                             nLen = 256; // some starting value
+    wxString vStr;
+    if ( hWnd )
+    {
+        int nLen = 256; // some starting value
 
     for ( ;; )
     {
-        int                         nCount = ::WinQueryClassName((HWND)hWnd, nLen, vStr.GetWriteBuf(nLen));
+        int                     nCount = ::WinQueryClassName((HWND)hWnd, nLen, (PSZ)(wxChar*)wxStringBuffer(vStr, nLen));
 
-        vStr.UngetWriteBuf();
         if (nCount == nLen )
         {
             // the class name might have been truncated, retry with larger
@@ -509,6 +545,7 @@ wxString WXDLLEXPORT wxGetWindowClass(
         {
             break;
         }
+        }
     }
     return vStr;
 }
@@ -899,7 +936,7 @@ wxBitmap wxDisableBitmap(
     int                             j;
 
     //
-    // Bitmap must be ina double-word alligned address so we may
+    // Bitmap must be in a double-word aligned address so we may
     // have some padding to worry about
     //
     if (nLineBoundary > 0)