X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed12f1dd6d40be5dcbd61140d63eec435f88e096..4175794e0361c78ad63984cd01e4378677803dbc:/src/common/utilscmn.cpp diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 1867cc1d44..92dabe4d64 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -36,6 +36,7 @@ #include "wx/log.h" #if wxUSE_GUI + #include "wx/app.h" #include "wx/window.h" #include "wx/frame.h" #include "wx/menu.h" @@ -67,10 +68,10 @@ #if wxUSE_GUI #include "wx/colordlg.h" + #include "wx/fontdlg.h" #include "wx/notebook.h" #include "wx/frame.h" #include "wx/statusbr.h" - #include "wx/toolbar.h" #endif // wxUSE_GUI #include @@ -88,6 +89,15 @@ #include "wx/msw/private.h" #endif +// ---------------------------------------------------------------------------- +// common data +// ---------------------------------------------------------------------------- + +#if WXWIN_COMPATIBILITY_2_2 + const wxChar *wxInternalErrorStr = wxT("wxWindows Internal Error"); + const wxChar *wxFatalErrorStr = wxT("wxWindows Fatal Error"); +#endif // WXWIN_COMPATIBILITY_2_2 + // ---------------------------------------------------------------------------- // function protoypes // ---------------------------------------------------------------------------- @@ -105,7 +115,7 @@ // string functions // ---------------------------------------------------------------------------- -#if defined(__WXMAC__) && !defined(__DARWIN) +#if defined(__WXMAC__) && !defined(__DARWIN__) int strcasecmp(const char *str_1, const char *str_2) { register char c1, c2; @@ -216,6 +226,11 @@ extern "C" #define strncasecmp strnicmp #endif +#ifdef __WATCOMC__ +#define strcasecmp stricmp +#define strncasecmp strnicmp +#endif + wxChar * copystring (const wxChar *s) { @@ -248,14 +263,14 @@ wxRegisterId (long id) } void -StringToFloat (wxChar *s, float *number) +StringToFloat (const wxChar *s, float *number) { if (s && *s && number) *number = (float) wxStrtod (s, (wxChar **) NULL); } void -StringToDouble (wxChar *s, double *number) +StringToDouble (const wxChar *s, double *number) { if (s && *s && number) *number = wxStrtod (s, (wxChar **) NULL); @@ -280,14 +295,14 @@ DoubleToString (double number, const wxChar *fmt) } void -StringToInt (wxChar *s, int *number) +StringToInt (const wxChar *s, int *number) { if (s && *s && number) *number = (int) wxStrtol (s, (wxChar **) NULL, 10); } void -StringToLong (wxChar *s, long *number) +StringToLong (const wxChar *s, long *number) { if (s && *s && number) *number = wxStrtol (s, (wxChar **) NULL, 10); @@ -352,7 +367,7 @@ wxString wxDecToHex(int dec) // Match a string INDEPENDENT OF CASE bool -StringMatch (char *str1, char *str2, bool subString, bool exact) +StringMatch (const char *str1, const char *str2, bool subString, bool exact) { if (str1 == NULL || str2 == NULL) return FALSE; @@ -408,7 +423,7 @@ wxString wxNow() // Menu accelerators related functions // ---------------------------------------------------------------------------- -wxChar *wxStripMenuCodes(wxChar *in, wxChar *out) +wxChar *wxStripMenuCodes(const wxChar *in, wxChar *out) { wxString s = wxMenuItem::GetLabelFromText(in); if ( out ) @@ -605,6 +620,7 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt) // Hack for wxNotebook case: at least in wxGTK, all pages // claim to be shown, so we must only deal with the selected one. +#if wxUSE_NOTEBOOK if (win->IsKindOf(CLASSINFO(wxNotebook))) { wxNotebook* nb = (wxNotebook*) win; @@ -617,6 +633,8 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt) return foundWin; } } +#endif + /* Doesn't work // Frame case else if (win->IsKindOf(CLASSINFO(wxFrame))) @@ -738,7 +756,7 @@ whereami(name) t = imagedir; if (!absolute_pathname(name)) { -#if defined(DOS) || defined(__WIN32__) +#if defined(__DOS__) || defined(__WIN32__) int drive; char *newrbuf; @@ -953,36 +971,59 @@ wxString wxGetPasswordFromUser(const wxString& message, wxColour wxGetColourFromUser(wxWindow *parent, const wxColour& colInit) { - wxColourData data; - data.SetChooseFull(TRUE); - if ( colInit.Ok() ) - { - data.SetColour((wxColour &)colInit); // const_cast - } + wxColourData data; + data.SetChooseFull(TRUE); + if ( colInit.Ok() ) + { + data.SetColour((wxColour &)colInit); // const_cast + } - wxColour colRet; - wxColourDialog dialog(parent, &data); - if ( dialog.ShowModal() == wxID_OK ) - { - colRet = dialog.GetColourData().GetColour(); - } - //else: leave it invalid + wxColour colRet; + wxColourDialog dialog(parent, &data); + if ( dialog.ShowModal() == wxID_OK ) + { + colRet = dialog.GetColourData().GetColour(); + } + //else: leave it invalid - return colRet; + return colRet; } #endif // wxUSE_COLOURDLG +#if wxUSE_FONTDLG + +wxFont wxGetFontFromUser(wxWindow *parent, const wxFont& fontInit) +{ + wxFontData data; + if ( fontInit.Ok() ) + { + data.SetInitialFont(fontInit); + } + + wxFont fontRet; + wxFontDialog dialog(parent, &data); + if ( dialog.ShowModal() == wxID_OK ) + { + fontRet = dialog.GetFontData().GetChosenFont(); + } + //else: leave it invalid + + return fontRet; +} + +#endif // wxUSE_FONTDLG // ---------------------------------------------------------------------------- // missing C RTL functions (FIXME shouldn't be here at all) // ---------------------------------------------------------------------------- #ifdef __MWERKS__ +#if __MSL__ < 0x7000 char *strdup(const char *s) { return strcpy( (char*) malloc( strlen( s ) + 1 ) , s ) ; } - +#endif int isascii( int c ) { return ( c >= 0 && c < 128 ) ; @@ -1076,7 +1117,7 @@ const wxChar *wxGetInstallPrefix() { wxString prefix; - if ( wxGetEnv(wxT("WX_PREFIX"), &prefix) ) + if ( wxGetEnv(wxT("WXPREFIX"), &prefix) ) return prefix.c_str(); #ifdef wxINSTALL_PREFIX @@ -1086,6 +1127,18 @@ const wxChar *wxGetInstallPrefix() #endif } +wxString wxGetDataDir() +{ + wxString format = wxGetInstallPrefix(); + format << wxFILE_SEP_PATH + << wxT("share") << wxFILE_SEP_PATH + << wxT("wx") << wxFILE_SEP_PATH + << wxT("%i.%i"); + wxString dir; + dir.Printf(format.c_str(), wxMAJOR_VERSION, wxMINOR_VERSION); + return dir; +} + // ---------------------------------------------------------------------------- // network and user id functions @@ -1241,7 +1294,7 @@ static long wxDoExecuteWithCapture(const wxString& command, wxProcess *process = new wxProcess; process->Redirect(); - long rc = wxExecute(command, TRUE /* sync */, process); + long rc = wxExecute(command, wxEXEC_SYNC, process); #if wxUSE_STREAMS if ( rc != -1 ) @@ -1312,4 +1365,25 @@ long wxExecute(const wxString& command, return wxDoExecuteWithCapture(command, output, &error); } +// ---------------------------------------------------------------------------- +// wxApp::Yield() wrappers for backwards compatibility +// ---------------------------------------------------------------------------- + +bool wxYield() +{ +#if wxUSE_GUI + return wxTheApp && wxTheApp->Yield(); +#else + return FALSE; +#endif +} + +bool wxYieldIfNeeded() +{ +#if wxUSE_GUI + return wxTheApp && wxTheApp->Yield(TRUE); +#else + return FALSE; +#endif +}