X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/184b5d99a5382cd7a19888c85aff11f8a21af2f6..cce4b3fe2b05e1d928d7a5930c33c624b2f3a667:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index fb2b01148f..f28e32fc80 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 @@ -52,6 +52,8 @@ #ifdef __WXMSW__ #include + // Redefines OutputDebugString if necessary + #include "wx/msw/private.h" #else //Unix #include #endif //Win/Unix @@ -256,6 +258,8 @@ wxLog *wxLog::GetActiveTarget() // ask the application to create a log target for us if ( wxTheApp != NULL ) ms_pLogger = wxTheApp->CreateLogTarget(); + else + ms_pLogger = new wxLogStderr; #endif s_bInGetActiveTarget = FALSE; @@ -326,8 +330,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 @@ -338,8 +342,11 @@ void wxLog::DoLog(wxLogLevel level, const char *szString) case wxLOG_Trace: case wxLOG_Debug: #ifdef __WXDEBUG__ - DoLogString(str << (level == wxLOG_Trace ? _("Trace") : _("Debug")) - << ": " << szString); + // DoLogString(str << (level == wxLOG_Trace ? _("Trace") : _("Debug")) + // << ": " << szString); + // JACS: we don't really want to prefix with 'Debug'. It's just extra + // verbiage. + DoLogString(szString); #endif break; @@ -382,6 +389,7 @@ void wxLogStderr::DoLogString(const char *szString) // wxLogStream implementation // ---------------------------------------------------------------------------- +#if wxUSE_STD_IOSTREAM wxLogStream::wxLogStream(ostream *ostr) { if ( ostr == NULL ) @@ -394,15 +402,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)) @@ -414,6 +424,7 @@ wxLogTextCtrl::~wxLogTextCtrl() { delete m_ostr; } +#endif // ---------------------------------------------------------------------------- // wxLogGui implementation @@ -470,8 +481,8 @@ void wxLogGui::DoLog(wxLogLevel level, const char *szString) { switch ( level ) { case wxLOG_Info: - if ( GetVerbose() ) case wxLOG_Message: + if ( GetVerbose() ) if ( !m_bErrors ) { m_aMessages.Add(szString); m_bHasMessages = TRUE; @@ -500,18 +511,22 @@ void wxLogGui::DoLog(wxLogLevel level, const char *szString) { wxString strTime = TimeStamp(); - #if (defined(__WIN32__) || defined(__WIN16__)) && !defined(__WXSTUBS__) + #ifdef __WXMSW__ // don't prepend debug/trace here: it goes to the debug window // anyhow, but do put a timestamp OutputDebugString(strTime + szString + "\n\r"); - #else //!WIN32 + #else // send them to stderr + /* fprintf(stderr, "%s %s: %s\n", strTime.c_str(), level == wxLOG_Trace ? _("Trace") : _("Debug"), szString); + */ + fprintf(stderr, "%s\n", + szString); fflush(stderr); - #endif // WIN32 + #endif } #endif break; @@ -676,22 +691,26 @@ void wxLogFrame::OnSave(wxCommandEvent& WXUNUSED(event)) // retrieve text and save it // ------------------------- -#ifdef __WXGTK__ - // @@@@ TODO: no GetNumberOfLines and GetLineText in wxGTK yet - wxLogError(_("Sorry, this function is not implemented under GTK")); -#else 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 + ); } -#endif //GTK if ( bOk ) bOk = file.Close(); if ( !bOk ) { wxLogError(_("Can't save log contents to file.")); - return; + } + else { + wxLogStatus(this, _("Log saved to the file '%s'."), szFileName); } } @@ -795,11 +814,11 @@ wxFrame *wxLogWindow::GetFrame() const return m_pLogFrame; } -void wxLogWindow::OnFrameCreate(wxFrame *WXUNUSED(frame)) +void wxLogWindow::OnFrameCreate(wxFrame * WXUNUSED(frame)) { } -void wxLogWindow::OnFrameDelete(wxFrame *WXUNUSED(frame)) +void wxLogWindow::OnFrameDelete(wxFrame * WXUNUSED(frame)) { m_pLogFrame = (wxLogFrame *)NULL; } @@ -936,6 +955,12 @@ void Trap() DebugBreak(); #elif defined(__WXSTUBS__) // TODO + #elif defined(__WXMAC__) + #if __powerc + Debugger(); + #else + SysBreak(); + #endif #else // Unix raise(SIGTRAP); #endif // Win/Unix @@ -971,7 +996,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?"