X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c1edaaeac6ca93b4bc88f99f116d49ed15bfd283..8cbc59fe84f046685b873cf58f6c56debe59de1c:/src/mgl/utils.cpp diff --git a/src/mgl/utils.cpp b/src/mgl/utils.cpp index ec8ed4ff07..25618fdb3c 100644 --- a/src/mgl/utils.cpp +++ b/src/mgl/utils.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp +// Name: src/mgl/utils.cpp // Purpose: // Author: Vaclav Slavik // Id: $Id$ @@ -15,12 +15,16 @@ #endif #include "wx/utils.h" -#include "wx/string.h" -#include "wx/intl.h" +#ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/intl.h" + #include "wx/log.h" +#endif + #include "wx/apptrait.h" -#include "wx/log.h" #include "wx/process.h" +#include "wx/evtloop.h" #include #include @@ -39,133 +43,30 @@ // misc. //---------------------------------------------------------------------------- -void wxBell() -{ - // FIXME_MGL -} - - -#ifdef __DOS__ -// VS: this should be in utilsdos.cpp, but since there will hardly ever -// be a non-MGL MS-DOS port... - -void wxSleep(int nSecs) +// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) +wxMemorySize wxGetFreeMemory() { - wxMilliSleep(1000 * nSecs); + // TODO - probably should be extracted to + // src/msdos/utilsdos.cpp and src/unix/utilsunx.cpp + // to avoid code duplication + return -1; } -void wxMilliSleep(unsigned long milliseconds) -{ - PM_sleep(milliseconds); -} - -void wxMicroSleep(unsigned long microseconds) -{ - wxMilliSleep(microseconds/1000); -} - -bool wxGetEnv(const wxString& var, wxString *value) -{ - // wxGetenv is defined as getenv() - wxChar *p = wxGetenv(var); - if ( !p ) - return FALSE; - - if ( value ) - *value = p; - - return TRUE; -} - -bool wxSetEnv(const wxString& variable, const wxChar *value) -{ - wxString s = variable; - if ( value ) - s << _T('=') << value; - - // transform to ANSI - const char *p = s.mb_str(); - - // the string will be free()d by libc - char *buf = (char *)malloc(strlen(p) + 1); - strcpy(buf, p); - - return putenv(buf) == 0; -} - -const wxChar* wxGetHomeDir(wxString *home) -{ - *home = wxT("."); - return home->c_str(); -} - -const wxChar* wxGetUserHomeDir(wxString *home) -{ - *home = wxT("."); - return home->c_str(); -} - -#if wxUSE_UNICODE -const wxMB2WXbuf wxGetUserHome(const wxString &user) -#else // just for binary compatibility -- there is no 'const' here -wxChar *wxGetUserHome(const wxString &user) -#endif -{ - return wxT("."); -} - -void wxFatalError(const wxString &msg, const wxString &title) -{ - if (!title.IsNull()) - wxFprintf( stderr, wxT("%s "), WXSTRINGCAST(title)); - PM_fatalError(msg.c_str()); -} - -bool wxGetUserId(wxChar *WXUNUSED(buf), int WXUNUSED(sz)) -{ - wxFAIL_MSG( wxT("wxGetUserId not implemented under MS-DOS!") ); - return FALSE; -} - -bool wxGetUserName(wxChar *WXUNUSED(buf), int WXUNUSED(sz)) -{ - wxFAIL_MSG( wxT("wxGetUserName not implemented under MS-DOS!") ); - return FALSE; -} - -bool wxGetHostName(wxChar *WXUNUSED(buf), int WXUNUSED(sz)) -{ - wxFAIL_MSG( wxT("wxGetHostName not implemented under MS-DOS!") ); - return FALSE; -} - -bool wxGetFullHostName(wxChar *WXUNUSED(buf), int WXUNUSED(sz)) +void wxBell() { - wxFAIL_MSG( wxT("wxGetFullHostName not implemented under MS-DOS!") ); - return FALSE; + // FIXME_MGL } -int wxKill(long WXUNUSED(pid), wxSignal WXUNUSED(sig), wxKillError *WXUNUSED(rc), int WXUNUSED(flags)) +bool wxGetKeyState(wxKeyCode key) { - wxFAIL_MSG( wxT("wxKill not implemented under MS-DOS!") ); - return 0; -} + wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != + WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); -long wxExecute(const wxString& WXUNUSED(command), int WXUNUSED(flags), wxProcess *WXUNUSED(process)) -{ - wxFAIL_MSG( wxT("wxExecute not implemented under MS-DOS!") ); - return 0; -} + // TODO -long wxExecute(char **WXUNUSED(argv), int WXUNUSED(flags), wxProcess *WXUNUSED(process)) -{ - wxFAIL_MSG( wxT("wxExecute not implemented under MS-DOS!") ); - return 0; + return false; } - -#endif - // ---------------------------------------------------------------------------- // display characterstics // ---------------------------------------------------------------------------- @@ -182,11 +83,11 @@ void wxDisplaySizeMM(int *width, int *height) wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); int xDPI, yDPI; - MGL_getDotsPerInch(&xDPI, &yDPI); - - if ( width ) + MGL_getDotsPerInch(&xDPI, &yDPI); + + if ( width ) *width = (int)((g_displayDC->sizex()+1) * 25.4 / xDPI); - if ( height ) + if ( height ) *height = (int)((g_displayDC->sizey()+1) * 25.4 / yDPI); } @@ -201,7 +102,7 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height) bool wxColourDisplay() { wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); - + return (wxDisplayDepth() > 1); } @@ -212,54 +113,22 @@ int wxDisplayDepth() return g_displayDC->getBitsPerPixel(); } -#if wxUSE_GUI - -wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo() +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const { - static wxToolkitInfo info; - info.shortName = _T("mgluniv"); - info.name = _T("wxMGL"); - info.versionMajor = MGL_RELEASE_MAJOR; - info.versionMinor = MGL_RELEASE_MINOR; - info.os = wxGTK; -#if defined(__UNIX__) - info.os = wxMGL_UNIX; -#elif defined(__OS2__) - info.os = wxMGL_OS2; -#elif defined(__WIN32__) - info.os = wxMGL_WIN32; -#elif defined(__DOS__) - info.os = wxMGL_DOS; -#else - #error Platform not supported by wxMGL! -#endif - return info; -} + if ( verMaj ) + *verMaj = MGL_RELEASE_MAJOR; + if ( verMin ) + *verMin = MGL_RELEASE_MINOR; -#endif + return wxPORT_MGL; +} -wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo() +wxEventLoopBase* wxGUIAppTraits::CreateEventLoop() { - static wxToolkitInfo info; - info.shortName = _T("mglbase"); - info.versionMajor = MGL_RELEASE_MAJOR; - info.versionMinor = MGL_RELEASE_MINOR; - info.name = _T("wxBase"); - info.os = wxGTK; -#if defined(__UNIX__) - info.os = wxMGL_UNIX; -#elif defined(__OS2__) - info.os = wxMGL_OS2; -#elif defined(__WIN32__) - info.os = wxMGL_WIN32; -#elif defined(__DOS__) - info.os = wxMGL_DOS; -#else - #error Platform not supported by wxMGL! -#endif - return info; + return new wxEventLoop; } + void wxGetMousePosition(int* x, int* y) { MS_getPos(x, y); @@ -272,22 +141,26 @@ wxPoint wxGetMousePosition() return pt; } +wxMouseState wxGetMouseState() +{ + wxMouseState ms; + int x, y; + wxGetMousePosition(&x, &y); -#ifdef __UNIX__ + ms.SetX(x); + ms.SetY(y); -int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) -{ - wxFAIL_MSG(wxT("wxAddProcessCallback not implemented in wxMGL!")); - return 0; -#if 0 // FIXME_MGL -do we need it at all? - int tag = gdk_input_add(fd, - GDK_INPUT_READ, - GTK_EndProcessDetector, - (gpointer)proc_data); - - return tag; -#endif + extern unsigned long g_buttonState; + ms.SetLeftDown(g_buttonState & EVT_LEFTBUT); + ms.SetMiddleDown(g_buttonState & EVT_MIDDLEBUT); + ms.SetRightDown(g_buttonState & EVT_RIGHTBUT); + + ms.SetControlDown(EVT_isKeyDown(KB_leftCtrl) || EVT_isKeyDown(KB_rightCtrl)); + ms.SetShiftDown(EVT_isKeyDown(KB_leftShift) || EVT_isKeyDown(KB_rightShift)); + ms.SetAltDown(EVT_isKeyDown(KB_leftAlt)); + ms.SetMetaDown(EVT_isKeyDown(KB_rightAlt)); + + return ms; } -#endif