X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/697c5f51487087e8113176d83a0d44e5a1c2f042..d62144c98d1625172918fc66fa77cb5d788a74ee:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index 17cb51c088..665e19c19a 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -41,6 +41,11 @@ #include "wx/thread.h" #include "wx/confbase.h" #include "wx/tokenzr.h" +#include "wx/utils.h" + +#if wxUSE_GUI + #include "wx/artprov.h" +#endif // wxUSE_GUI #if !defined(__WXMSW__) || defined(__WXMICROWIN__) #include // for SIGTRAP used by wxTrap() @@ -54,6 +59,11 @@ #include "wx/mac/private.h" // includes mac headers #endif +// private functions prototypes +#ifdef __WXDEBUG__ + static void LINKAGEMODE SetTraceMasks(); +#endif // __WXDEBUG__ + // =========================================================================== // implementation // =========================================================================== @@ -62,25 +72,13 @@ // initialization and termination // ---------------------------------------------------------------------------- -#ifdef __WXDEBUG__ -static void LINKAGEMODE SetTraceMasks() -{ - wxString mask; - if ( wxGetEnv(wxT("WXTRACE"), &mask) ) - { - wxStringTokenizer tkn(mask, wxT(",")); - while ( tkn.HasMoreTokens() ) - wxLog::AddTraceMask(tkn.GetNextToken()); - } -} -#endif - wxAppBase::wxAppBase() { wxTheApp = (wxApp *)this; - // VZ: what's this? is it obsolete? +#if WXWIN_COMPATIBILITY_2_2 m_wantDebugOutput = FALSE; +#endif // WXWIN_COMPATIBILITY_2_2 #if wxUSE_GUI m_topWindow = (wxWindow *)NULL; @@ -105,6 +103,9 @@ bool wxAppBase::OnInitGui() #ifdef __WXUNIVERSAL__ if ( !wxTheme::Get() && !wxTheme::CreateDefault() ) return FALSE; + wxArtProvider *art = wxTheme::Get()->GetArtProvider(); + if ( art ) + wxArtProvider::PushProvider(art); #endif // __WXUNIVERSAL__ return TRUE; @@ -181,6 +182,12 @@ void wxAppBase::SetActive(bool active, wxWindow * WXUNUSED(lastFocus)) #endif // wxUSE_GUI +int wxAppBase::FilterEvent(wxEvent& WXUNUSED(event)) +{ + // process the events normally by default + return -1; +} + // ---------------------------------------------------------------------------- // cmd line parsing // ---------------------------------------------------------------------------- @@ -240,7 +247,9 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) wxCMD_LINE_SWITCH, _T(""), OPTION_VERBOSE, - gettext_noop("generate verbose log messages") + gettext_noop("generate verbose log messages"), + wxCMD_LINE_VAL_NONE, + 0x0 }, #endif // wxUSE_LOG @@ -250,7 +259,8 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) _T(""), OPTION_THEME, gettext_noop("specify the theme to use"), - wxCMD_LINE_VAL_STRING + wxCMD_LINE_VAL_STRING, + 0x0 }, #endif // __WXUNIVERSAL__ @@ -263,12 +273,20 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) _T(""), OPTION_MODE, gettext_noop("specify display mode to use (e.g. 640x480-16)"), - wxCMD_LINE_VAL_STRING + wxCMD_LINE_VAL_STRING, + 0x0 }, #endif // __WXMGL__ // terminator - { wxCMD_LINE_NONE } + { + wxCMD_LINE_NONE, + _T(""), + _T(""), + _T(""), + wxCMD_LINE_VAL_NONE, + 0x0 + } }; parser.SetDesc(cmdLineDesc); @@ -339,8 +357,47 @@ bool wxAppBase::OnCmdLineError(wxCmdLineParser& parser) // debugging support // ---------------------------------------------------------------------------- +/* static */ +bool wxAppBase::CheckBuildOptions(const wxBuildOptions& opts) +{ +#define wxCMP(what) (what == opts.m_ ## what) + + bool +#ifdef __WXDEBUG__ + isDebug = TRUE; +#else + isDebug = FALSE; +#endif + + int verMaj = wxMAJOR_VERSION, + verMin = wxMINOR_VERSION; + + if ( !(wxCMP(isDebug) && wxCMP(verMaj) && wxCMP(verMin)) ) + { + wxLogFatalError(_T("Mismatch between the program and library build ") + _T("versions detected.")); + + // normally wxLogFatalError doesn't return + return FALSE; + } +#undef wxCMP + + return TRUE; +} + #ifdef __WXDEBUG__ +static void LINKAGEMODE SetTraceMasks() +{ + wxString mask; + if ( wxGetEnv(wxT("WXTRACE"), &mask) ) + { + wxStringTokenizer tkn(mask, wxT(",")); + while ( tkn.HasMoreTokens() ) + wxLog::AddTraceMask(tkn.GetNextToken()); + } +} + // wxASSERT() helper bool wxAssertIsEqual(int x, int y) { @@ -367,23 +424,22 @@ void wxTrap() // show the assert modal dialog static -void ShowAssertDialog(const wxChar *szFile, int nLine, const wxChar *szMsg) +void ShowAssertDialog(const wxChar *szFile, + int nLine, + const wxChar *szCond, + const wxChar *szMsg) { // this variable can be set to true to suppress "assert failure" messages static bool s_bNoAsserts = FALSE; wxChar szBuf[4096]; - // make life easier for people using VC++ IDE: clicking on the message - // will take us immediately to the place of the failed assert + // make life easier for people using VC++ IDE by using this format: like + // this, clicking on the message will take us immediately to the place of + // the failed assert wxSnprintf(szBuf, WXSIZEOF(szBuf), -#ifdef __VISUALC__ - wxT("%s(%d): assert failed"), -#else // !VC++ - // make the error message more clear for all the others - wxT("Assert failed in file %s at line %d"), -#endif // VC/!VC - szFile, nLine); + wxT("%s(%d): assert \"%s\" failed"), + szFile, nLine, szCond); if ( szMsg != NULL ) { @@ -444,7 +500,10 @@ void ShowAssertDialog(const wxChar *szFile, int nLine, const wxChar *szMsg) } // this function is called when an assert fails -void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) +void wxOnAssert(const wxChar *szFile, + int nLine, + const wxChar *szCond, + const wxChar *szMsg) { // FIXME MT-unsafe static bool s_bInAssert = FALSE; @@ -465,20 +524,23 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) { // by default, show the assert dialog box - we can't customize this // behaviour - ShowAssertDialog(szFile, nLine, szMsg); + ShowAssertDialog(szFile, nLine, szCond, szMsg); } else { // let the app process it as it wants - wxTheApp->OnAssert(szFile, nLine, szMsg); + wxTheApp->OnAssert(szFile, nLine, szCond, szMsg); } s_bInAssert = FALSE; } -void wxAppBase::OnAssert(const wxChar *file, int line, const wxChar *msg) +void wxAppBase::OnAssert(const wxChar *file, + int line, + const wxChar *cond, + const wxChar *msg) { - ShowAssertDialog(file, line, msg); + ShowAssertDialog(file, line, cond, msg); } #endif //WXDEBUG