From d3fc1755150fd63134568285f2433544fa51af53 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 6 Jun 2005 23:35:40 +0000 Subject: [PATCH] added wxLogBuffer which collects all log messages in a string buffer git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/log.h | 26 ++++++++++++++++++++++++-- src/common/log.cpp | 16 ++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/include/wx/log.h b/include/wx/log.h index eef804d039..4f23682b55 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -288,11 +288,31 @@ private: // "trivial" derivations of wxLog // ---------------------------------------------------------------------------- +// log everything to a buffer +class WXDLLIMPEXP_BASE wxLogBuffer : public wxLog +{ +public: + wxLogBuffer() { } + + // get the string contents with all messages logged + const wxString& GetBuffer() const { return m_str; } + + // show the buffer contents to the user in the best possible way (this uses + // wxMessageOutputMessageBox) and clear it + virtual void Flush(); + +protected: + virtual void DoLogString(const wxChar *szString, time_t t); + +private: + wxString m_str; + + DECLARE_NO_COPY_CLASS(wxLogBuffer) +}; + // log everything to a "FILE *", stderr by default class WXDLLIMPEXP_BASE wxLogStderr : public wxLog { - DECLARE_NO_COPY_CLASS(wxLogStderr) - public: // redirect log output to a FILE wxLogStderr(FILE *fp = (FILE *) NULL); @@ -302,6 +322,8 @@ protected: virtual void DoLogString(const wxChar *szString, time_t t); FILE *m_fp; + + DECLARE_NO_COPY_CLASS(wxLogStderr) }; #if wxUSE_STD_IOSTREAM diff --git a/src/common/log.cpp b/src/common/log.cpp index 476f39db24..6397766ef6 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -522,6 +522,22 @@ void wxLog::Flush() return false; } +// ---------------------------------------------------------------------------- +// wxLogBuffer implementation +// ---------------------------------------------------------------------------- + +void wxLogBuffer::Flush() +{ + wxMessageOutputBest out; + out.Printf(_T("%s"), m_str.c_str()); + m_str.clear(); +} + +void wxLogBuffer::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) +{ + m_str << szString << _T("\n"); +} + // ---------------------------------------------------------------------------- // wxLogStderr class implementation // ---------------------------------------------------------------------------- -- 2.45.2