X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/164db92c14e9f1a7343259826da3653aeec945db..8a4e043aef904eda398249dde995b6ddcc01a4ce:/src/common/utilscmn.cpp diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 5176c5236f..13f052e7d9 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -52,6 +52,7 @@ #include "wx/uri.h" #include "wx/mimetype.h" #include "wx/config.h" +#include "wx/versioninfo.h" #if defined(__WXWINCE__) && wxUSE_DATETIME #include "wx/datetime.h" @@ -547,16 +548,45 @@ wxString wxGetCurrentDir() // Environment // ---------------------------------------------------------------------------- +#ifdef __WXOSX__ +#if wxOSX_USE_COCOA_OR_CARBON + #include +#endif +#endif + bool wxGetEnvMap(wxEnvVariableHashMap *map) { wxCHECK_MSG( map, false, wxS("output pointer can't be NULL") ); #if defined(__VISUALC__) wxChar **env = _tenviron; -#else // non-MSVC +#elif defined(__VMS) + // Now this routine wil give false for OpenVMS + // TODO : should we do something with logicals? + char **env=NULL; +#elif defined(__WXOSX__) +#if wxOSX_USE_COCOA_OR_CARBON + // Under Mac shared libraries don't have access to the global environ + // variable so use this Mac-specific function instead as advised by + // environ(7) under Darwin + char ***penv = _NSGetEnviron(); + if ( !penv ) + return false; + char **env = *penv; +#else + char **env=NULL; + // todo translate NSProcessInfo environment into map +#endif +#else // non-MSVC non-Mac // Not sure if other compilers have _tenviron so use the (more standard) // ANSI version only for them. - char ** env = environ; + + // Both POSIX and Single UNIX Specification say that this variable must + // exist but not that it must be declared anywhere and, indeed, it's not + // declared in several common systems (some BSDs, Solaris with native CC). + extern char **environ; + + char **env = environ; #endif if ( env ) @@ -784,8 +814,8 @@ typedef struct smaller partition. This *guarantees* no more than log (n) stack size is needed (actually O(1) in this case)! */ -void wxQsort(void *const pbase, size_t total_elems, - size_t size, CMPFUNCDATA cmp, const void* user_data) +void wxQsort(void* pbase, size_t total_elems, + size_t size, wxSortCallback cmp, const void* user_data) { register char *base_ptr = (char *) pbase; const size_t max_thresh = MAX_THRESH * size; @@ -1333,6 +1363,8 @@ int wxMessageBox(const wxString& message, const wxString& caption, long style, return wxNO; case wxID_CANCEL: return wxCANCEL; + case wxID_HELP: + return wxHELP; } wxFAIL_MSG( wxT("unexpected return code from wxMessageDialog") ); @@ -1340,7 +1372,7 @@ int wxMessageBox(const wxString& message, const wxString& caption, long style, return wxCANCEL; } -void wxInfoMessageBox(wxWindow* parent) +wxVersionInfo wxGetLibraryVersionInfo() { // don't translate these strings, they're for diagnostics purposes only wxString msg; @@ -1373,7 +1405,20 @@ void wxInfoMessageBox(wxWindow* parent) GTK_MICRO_VERSION); #endif // __WXGTK__ - msg += wxS("\nCopyright (c) 1995-2010 wxWidgets team"); + return wxVersionInfo(wxS("wxWidgets"), + wxMAJOR_VERSION, + wxMINOR_VERSION, + wxRELEASE_NUMBER, + msg, + wxS("Copyright (c) 1995-2011 wxWidgets team")); +} + +void wxInfoMessageBox(wxWindow* parent) +{ + wxVersionInfo info = wxGetLibraryVersionInfo(); + wxString msg = info.ToString(); + + msg << wxS("\n") << info.GetCopyright(); wxMessageBox(msg, wxT("wxWidgets information"), wxICON_INFORMATION | wxOK, @@ -1495,7 +1540,7 @@ wxColour wxGetColourFromUser(wxWindow *parent, wxFont wxGetFontFromUser(wxWindow *parent, const wxFont& fontInit, const wxString& caption) { wxFontData data; - if ( fontInit.Ok() ) + if ( fontInit.IsOk() ) { data.SetInitialFont(fontInit); } @@ -1526,6 +1571,12 @@ void wxEnableTopLevelWindows(bool enable) node->GetData()->Enable(enable); } +#if defined(__WXOSX__) && wxOSX_USE_COCOA + +// defined in evtloop.mm + +#else + wxWindowDisabler::wxWindowDisabler(bool disable) { m_disabled = disable; @@ -1588,6 +1639,8 @@ wxWindowDisabler::~wxWindowDisabler() delete m_winDisabled; } +#endif + // Yield to other apps/messages and disable user input to all windows except // the given one bool wxSafeYield(wxWindow *win, bool onlyIfNeeded)