X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd3b171d3f45b0d30d6c1f7586dad5721b145650..23c085422e55c79bc40cb402be6a7d956b7d1190:/src/os2/utilsgui.cpp diff --git a/src/os2/utilsgui.cpp b/src/os2/utilsgui.cpp index 492cfa2e61..dc2651beef 100644 --- a/src/os2/utilsgui.cpp +++ b/src/os2/utilsgui.cpp @@ -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: @@ -25,12 +25,15 @@ #endif #ifndef WX_PRECOMP - #include "wx/setup.h" #include "wx/utils.h" #include "wx/app.h" #include "wx/cursor.h" + #include "wx/font.h" + #include "wx/timer.h" #endif //WX_PRECOMP +#include "wx/apptrait.h" + #include "wx/os2/private.h" // includes // ============================================================================ @@ -42,33 +45,29 @@ // ---------------------------------------------------------------------------- // Sleep for nSecs seconds. Attempt a Windows implementation using timers. -static bool inTimer = FALSE; +static bool inTimer = false; class wxSleepTimer: public wxTimer { public: inline void Notify() { - inTimer = FALSE; + inTimer = false; Stop(); } }; -static wxTimer* wxTheSleepTimer = NULL; - // Reading and writing resources (eg WIN.INI, .Xdefaults) #if wxUSE_RESOURCES -bool wxWriteResource( - const wxString& rSection -, const wxString& rEntry -, const wxString& rValue -, const wxString& rFile -) +bool wxWriteResource( const wxString& rSection, + const wxString& rEntry, + const wxString& rValue, + const wxString& rFile ) { - HAB hab = 0; - HINI hIni = 0; + HAB hab = 0; + HINI hIni = 0; - if (rFile != "") + if (!rFile.empty()) { hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile); if (hIni != 0L) @@ -86,7 +85,7 @@ bool wxWriteResource( ,(PSZ)WXSTRINGCAST rEntry ,(PSZ)WXSTRINGCAST rValue )); - return FALSE; + return false; } bool wxWriteResource( @@ -123,36 +122,28 @@ bool wxWriteResource( ); } -bool wxWriteResource( - const wxString& rSection -, const wxString& rEntry -, int lValue -, const wxString& rFile -) +bool wxWriteResource( const wxString& rSection, + const wxString& rEntry, + int lValue, + const wxString& rFile ) { - wxChar zBuf[50]; + wxChar zBuf[50]; wxSprintf(zBuf, "%d", lValue); - return wxWriteResource( rSection - ,rEntry - ,zBuf - ,rFile - ); + return wxWriteResource( rSection, rEntry, zBuf, rFile ); } -bool wxGetResource( - const wxString& rSection -, const wxString& rEntry -, wxChar** ppValue -, const wxString& rFile -) +bool wxGetResource( const wxString& rSection, + const wxString& rEntry, + wxChar** ppValue, + const wxString& rFile ) { - HAB hab = 0; - HINI hIni = 0; - wxChar zDefunkt[] = _T("$$default"); - char zBuf[1000]; + HAB hab = 0; + HINI hIni = 0; + wxChar zDefunkt[] = _T("$$default"); + char zBuf[1000]; - if (rFile != "") + if (!rFile.empty()) { hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile); if (hIni != 0L) @@ -165,13 +156,13 @@ bool wxGetResource( ,1000 ); if (zBuf == NULL) - return FALSE; + return false; if (n == 0L || wxStrcmp(zBuf, zDefunkt) == 0) - return FALSE; + return false; zBuf[n-1] = '\0'; } else - return FALSE; + return false; } else { @@ -183,100 +174,70 @@ bool wxGetResource( ,1000 ); if (zBuf == NULL) - return FALSE; + return false; if (n == 0L || wxStrcmp(zBuf, zDefunkt) == 0) - return FALSE; + return false; zBuf[n-1] = '\0'; } strcpy((char*)*ppValue, zBuf); - return TRUE; + return true; } -bool wxGetResource( - const wxString& rSection -, const wxString& rEntry -, float* pValue -, const wxString& rFile -) +bool wxGetResource( const wxString& rSection, + const wxString& rEntry, + float* pValue, + const wxString& rFile ) { - wxChar* zStr = NULL; + wxChar* zStr = NULL; zStr = new wxChar[1000]; - bool bSucc = wxGetResource( rSection - ,rEntry - ,(wxChar **)&zStr - ,rFile - ); + bool bSucc = wxGetResource( rSection, rEntry, (wxChar **)&zStr, rFile ); if (bSucc) { *pValue = (float)wxStrtod(zStr, NULL); - delete[] zStr; - return TRUE; - } - else - { - delete[] zStr; - return FALSE; } + + delete[] zStr; + return bSucc; } -bool wxGetResource( - const wxString& rSection -, const wxString& rEntry -, long* pValue -, const wxString& rFile -) +bool wxGetResource( const wxString& rSection, + const wxString& rEntry, + long* pValue, + const wxString& rFile ) { - wxChar* zStr = NULL; + wxChar* zStr = NULL; zStr = new wxChar[1000]; - bool bSucc = wxGetResource( rSection - ,rEntry - ,(wxChar **)&zStr - ,rFile - ); + bool bSucc = wxGetResource( rSection, rEntry, (wxChar **)&zStr, rFile ); if (bSucc) { *pValue = wxStrtol(zStr, NULL, 10); - delete[] zStr; - return TRUE; - } - else - { - delete[] zStr; - return FALSE; } + + delete[] zStr; + return bSucc; } -bool wxGetResource( - const wxString& rSection -, const wxString& rEntry -, int* pValue -, const wxString& rFile -) +bool wxGetResource( const wxString& rSection, + const wxString& rEntry, + int* pValue, + const wxString& rFile ) { - wxChar* zStr = NULL; + wxChar* zStr = NULL; zStr = new wxChar[1000]; - bool bSucc = wxGetResource( rSection - ,rEntry - ,(wxChar **)&zStr - ,rFile - ); + bool bSucc = wxGetResource( rSection, rEntry, (wxChar **)&zStr, rFile ); if (bSucc) { *pValue = (int)wxStrtol(zStr, NULL, 10); - delete[] zStr; - return TRUE; - } - else - { - delete[] zStr; - return FALSE; } + + delete[] zStr; + return bSucc; } #endif // wxUSE_RESOURCES @@ -289,9 +250,7 @@ HCURSOR gs_wxBusyCursorOld = 0; // old cursor static int gs_wxBusyCursorCount = 0; // Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor( - wxCursor* pCursor -) +void wxBeginBusyCursor(const wxCursor* pCursor) { if ( gs_wxBusyCursorCount++ == 0 ) { @@ -315,7 +274,7 @@ void wxEndBusyCursor() } } -// TRUE if we're between the above two calls +// true if we're between the above two calls bool wxIsBusy() { return (gs_wxBusyCursorCount > 0); @@ -323,27 +282,24 @@ bool wxIsBusy() // Check whether this window wants to process messages, e.g. Stop button // in long calculations. -bool wxCheckForInterrupt( - wxWindow* pWnd -) +bool wxCheckForInterrupt( wxWindow* pWnd ) { if(pWnd) { - QMSG vMsg; - HAB hab = 0; - HWND hwndFilter = NULLHANDLE; - HWND hwndWin= (HWND) pWnd->GetHWND(); + QMSG vMsg; + HAB hab = 0; + HWND hwndFilter = NULLHANDLE; while(::WinPeekMsg(hab, &vMsg, hwndFilter, 0, 0, PM_REMOVE)) { ::WinDispatchMsg(hab, &vMsg); } - return TRUE;//*** temporary? + return true;//*** temporary? } else { wxFAIL_MSG(_T("pWnd==NULL !!!")); - return FALSE;//*** temporary? + return false;//*** temporary? } } @@ -365,7 +321,7 @@ void wxGetMousePosition( *pY = vPt.y; }; -// Return TRUE if we have a colour display +// Return true if we have a colour display bool wxColourDisplay() { #if 0 @@ -380,7 +336,7 @@ bool wxColourDisplay() #else // I don't see how the PM display could not be color. Besides, this // was leaking DCs and PSs!!! MN - return TRUE; + return true; #endif } @@ -428,8 +384,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 +428,52 @@ 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); +} + +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +{ + // How to get version of PM ? I guess, just reusing the OS version is OK. + (void) wxGetOsVersion(verMaj, verMin); + return wxPORT_OS2; +} + + // --------------------------------------------------------------------------- // 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 +484,7 @@ wxString WXDLLEXPORT wxGetWindowClass( { break; } + } } return vStr; } @@ -899,7 +875,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)