X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32b8ec418aee4e38877d4cb79e2984c766dcc358..f05f427fc1d824521ed07297adfa9f2e4f8d02a5:/src/mgl/utils.cpp diff --git a/src/mgl/utils.cpp b/src/mgl/utils.cpp index 354f08d83f..21d02155ad 100644 --- a/src/mgl/utils.cpp +++ b/src/mgl/utils.cpp @@ -3,16 +3,23 @@ // Purpose: // Author: Vaclav Slavik // Id: $Id$ -// Copyright: (c) 2001 Vaclav Slavik +// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + #include "wx/utils.h" #include "wx/string.h" #include "wx/intl.h" +#include "wx/apptrait.h" #include "wx/log.h" - #include "wx/process.h" #include @@ -26,6 +33,8 @@ #include "wx/unix/execute.h" #endif +#include "wx/mgl/private.h" + //---------------------------------------------------------------------------- // misc. //---------------------------------------------------------------------------- @@ -35,56 +44,238 @@ 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) +{ + wxUsleep(1000 * nSecs); +} + +void wxUsleep(unsigned long milliseconds) +{ + PM_sleep(milliseconds); +} + + +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)) +{ + wxFAIL_MSG( wxT("wxGetFullHostName not implemented under MS-DOS!") ); + return FALSE; +} + +int wxKill(long WXUNUSED(pid), wxSignal WXUNUSED(sig), wxKillError *WXUNUSED(rc)) +{ + wxFAIL_MSG( wxT("wxKill not implemented under MS-DOS!") ); + return 0; +} + +long wxExecute(const wxString& WXUNUSED(command), int WXUNUSED(flags), wxProcess *WXUNUSED(process)) +{ + wxFAIL_MSG( wxT("wxExecute not implemented under MS-DOS!") ); + return 0; +} + +long wxExecute(char **WXUNUSED(argv), int WXUNUSED(flags), wxProcess *WXUNUSED(process)) +{ + wxFAIL_MSG( wxT("wxExecute not implemented under MS-DOS!") ); + return 0; +} + + +#endif + // ---------------------------------------------------------------------------- // display characterstics // ---------------------------------------------------------------------------- -extern MGLDevCtx *g_displayDC; +void wxDisplaySize(int *width, int *height) +{ + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); + if (width) *width = g_displayDC->sizex()+1; + if (height) *height = g_displayDC->sizey()+1; +} -void wxDisplaySize( int *width, int *height ) +void wxDisplaySizeMM(int *width, int *height) { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); - if (width) *width = g_displayDC->sizex(); - if (height) *height = g_displayDC->sizey(); + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); + + int xDPI, yDPI; + MGL_getDotsPerInch(&xDPI, &yDPI); + + if ( width ) + *width = (int)((g_displayDC->sizex()+1) * 25.4 / xDPI); + if ( height ) + *height = (int)((g_displayDC->sizey()+1) * 25.4 / yDPI); } -void wxGetMousePosition( int* x, int* y ) +void wxClientDisplayRect(int *x, int *y, int *width, int *height) { -#if 0 // FIXME_MGL - gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL ); -#endif + if ( x ) *x = 0; + if ( y ) *y = 0; + wxDisplaySize(width, height); + // FIXME_MGL - windowed version needs different handling } bool wxColourDisplay() { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); return (wxDisplayDepth() > 1); } int wxDisplayDepth() { - wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") ); + wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") ); return g_displayDC->getBitsPerPixel(); } -int wxGetOsVersion(int *majorVsn, int *minorVsn) +#if wxUSE_GUI + +wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo() { -#if 0 // FIXME_MGL - // FIXME_MGL : wxGetOsVersion, too - if (majorVsn) *majorVsn = GTK_MAJOR_VERSION; - if (minorVsn) *minorVsn = GTK_MINOR_VERSION; + 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; +} - return wxGTK; #endif + +wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo() +{ + 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; +} + +void wxGetMousePosition(int* x, int* y) +{ + MS_getPos(x, y); } +wxPoint wxGetMousePosition() +{ + wxPoint pt; + wxGetMousePosition(&pt.x, &pt.y); + return pt; +} + + #ifdef __UNIX__ 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,