]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxLogBuffer which collects all log messages in a string buffer
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 6 Jun 2005 23:35:40 +0000 (23:35 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 6 Jun 2005 23:35:40 +0000 (23:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/log.h
src/common/log.cpp

index eef804d039944775069cbbb5c1d72d5fdd8a4fb5..4f23682b55cbd27b9f6a5d3936bad8f81813b4cd 100644 (file)
@@ -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
index 476f39db249f9d629a0b59ca0ccc4d7f7648f539..6397766ef68b90d3f38d48fccdb0bc805b8dcd86 100644 (file)
@@ -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
 // ----------------------------------------------------------------------------