X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5fc5e442f39e37b9672e5c119954bde48228e9fe..037267e1560a48434bd4e553389c679283500f1c:/src/common/log.cpp?ds=sidebyside diff --git a/src/common/log.cpp b/src/common/log.cpp index db45214b9e..25016cd325 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -29,13 +29,13 @@ // wxWindows #ifndef WX_PRECOMP + #include #include #include #include #include #include - - #include + #include #include #include #endif //WX_PRECOMP @@ -239,7 +239,14 @@ void WXDLLEXPORT wxLogSysError(long lErrCode, const char *szFormat, ...) wxLog::wxLog() { m_bHasMessages = FALSE; - m_bVerbose = FALSE; + + // enable verbose messages by default in the debug builds +#ifdef __WXDEBUG__ + m_bVerbose = TRUE; +#else // release + m_bVerbose = FALSE; +#endif // debug/release + m_szTimeFormat = "[%d/%b/%y %H:%M:%S] "; } @@ -330,8 +337,8 @@ void wxLog::DoLog(wxLogLevel level, const char *szString) break; case wxLOG_Info: - if ( GetVerbose() ) case wxLOG_Message: + if ( GetVerbose() ) DoLogString(str + szString); // fall through @@ -389,6 +396,7 @@ void wxLogStderr::DoLogString(const char *szString) // wxLogStream implementation // ---------------------------------------------------------------------------- +#if wxUSE_STD_IOSTREAM wxLogStream::wxLogStream(ostream *ostr) { if ( ostr == NULL ) @@ -401,15 +409,17 @@ void wxLogStream::DoLogString(const char *szString) { (*m_ostr) << szString << endl << flush; } +#endif #ifndef wxUSE_NOGUI + // ---------------------------------------------------------------------------- // wxLogTextCtrl implementation // ---------------------------------------------------------------------------- -wxLogTextCtrl::wxLogTextCtrl(wxTextCtrl *pTextCtrl) -// @@@ TODO: in wxGTK wxTextCtrl doesn't derive from streambuf -// Also, in DLL mode in wxMSW, can't use it. +#if wxUSE_STD_IOSTREAM +wxLogTextCtrl::wxLogTextCtrl(wxTextCtrl *pTextCtrl) +// DLL mode in wxMSW, can't use it. #if defined(NO_TEXT_WINDOW_STREAM) #else : wxLogStream(new ostream(pTextCtrl)) @@ -421,6 +431,7 @@ wxLogTextCtrl::~wxLogTextCtrl() { delete m_ostr; } +#endif // ---------------------------------------------------------------------------- // wxLogGui implementation @@ -689,7 +700,14 @@ void wxLogFrame::OnSave(wxCommandEvent& WXUNUSED(event)) // ------------------------- int nLines = m_pTextCtrl->GetNumberOfLines(); for ( int nLine = 0; bOk && nLine < nLines; nLine++ ) { - bOk = file.Write(m_pTextCtrl->GetLineText(nLine) + wxTextFile::GetEOL()); + bOk = file.Write(m_pTextCtrl->GetLineText(nLine) + +// we're not going to pull in the whole wxTextFile if all we need is this... +#if wxUSE_TEXTFILE + wxTextFile::GetEOL() +#else // !wxUSE_TEXTFILE + '\n' +#endif // wxUSE_TEXTFILE + ); } if ( bOk ) @@ -944,6 +962,12 @@ void Trap() DebugBreak(); #elif defined(__WXSTUBS__) // TODO + #elif defined(__WXMAC__) + #if __powerc + Debugger(); + #else + SysBreak(); + #endif #else // Unix raise(SIGTRAP); #endif // Win/Unix @@ -966,7 +990,16 @@ void wxOnAssert(const char *szFile, int nLine, const char *szMsg) s_bInAssert = TRUE; char szBuf[LOG_BUFFER_SIZE]; + + // make life easier for people using VC++ IDE: clicking on the message will + // take us immediately to the place of the failed assert +#ifdef __VISUALC__ + sprintf(szBuf, _("%s(%d): assert failed"), szFile, nLine); +#else // !VC++ + // make the error message more clear for all the others sprintf(szBuf, _("Assert failed in file %s at line %d"), szFile, nLine); +#endif // VC/!VC + if ( szMsg != NULL ) { strcat(szBuf, ": "); strcat(szBuf, szMsg); @@ -979,7 +1012,7 @@ void wxOnAssert(const char *szFile, int nLine, const char *szMsg) // send it to the normal log destination wxLogDebug(szBuf); - #ifdef wxUSE_NOGUI + #if wxUSE_NOGUI Trap(); #else strcat(szBuf, _("\nDo you want to stop the program?"