// ----------------------------------------------------------------------------
#if wxUSE_GUI
- class WXDLLIMPEXP_CORE wxTextCtrl;
- class WXDLLIMPEXP_CORE wxLogFrame;
- class WXDLLIMPEXP_CORE wxFrame;
- class WXDLLIMPEXP_CORE wxWindow;
+ class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+ class WXDLLIMPEXP_FWD_CORE wxLogFrame;
+ class WXDLLIMPEXP_FWD_CORE wxFrame;
+ class WXDLLIMPEXP_FWD_CORE wxWindow;
#endif // wxUSE_GUI
// ----------------------------------------------------------------------------
// get string trace masks
static const wxArrayString &GetTraceMasks() { return ms_aTraceMasks; }
- // sets the timestamp string: this is used as strftime() format string
- // for the log targets which add time stamps to the messages - set it
- // to NULL to disable time stamping completely.
+ // sets the time stamp string format: this is used as strftime() format
+ // string for the log targets which add time stamps to the messages; set
+ // it to empty string to disable time stamping completely.
static void SetTimestamp(const wxString& ts) { ms_timestamp = ts; }
+ // disable time stamping of log messages
+ static void DisableTimestamp() { SetTimestamp(wxEmptyString); }
+
// accessors
time_t WXUNUSED(t)) {}
virtual void DoLogString(const wchar_t *WXUNUSED(szString),
time_t WXUNUSED(t)) {}
+#endif // WXWIN_COMPATIBILITY_2_8
+
+ // this macro should be used in the derived classes to avoid warnings about
+ // hiding the other DoLog() overloads when overriding DoLog(wxString) --
+ // but don't use it with MSVC which doesn't give this warning but does give
+ // warning when a deprecated function is overridden
+#if WXWIN_COMPATIBILITY_2_8 && !defined(__VISUALC__)
+ #define wxSUPPRESS_DOLOG_HIDE_WARNING() \
+ virtual void DoLog(wxLogLevel, const char *, time_t) { } \
+ virtual void DoLog(wxLogLevel, const wchar_t *, time_t) { }
+
+ #define wxSUPPRESS_DOLOGSTRING_HIDE_WARNING() \
+ virtual void DoLogString(const char *, time_t) { } \
+ virtual void DoLogString(const wchar_t *, time_t) { }
+#else
+ #define wxSUPPRESS_DOLOG_HIDE_WARNING()
+ #define wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
#endif
// log a line containing the number of times the previous message was
virtual void DoLog(wxLogLevel level, const wxString& szString, time_t t);
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOG_HIDE_WARNING()
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
private:
wxString m_str;
// implement sink function
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
FILE *m_fp;
DECLARE_NO_COPY_CLASS(wxLogStderr)
// implement sink function
virtual void DoLogString(const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOGSTRING_HIDE_WARNING()
+
// using ptr here to avoid including <iostream.h> from this file
wxSTD ostream *m_ostr;
};
// override base class version to flush the old logger as well
virtual void Flush();
+ // call to avoid destroying the old log target
+ void DetachOldLog() { m_logOld = NULL; }
+
protected:
// pass the chain to the old logger if needed
virtual void DoLog(wxLogLevel level, const wxString& szString, time_t t);
+ wxSUPPRESS_DOLOG_HIDE_WARNING()
+
private:
// the current log target
wxLog *m_logNew;
};
// a chain log target which uses itself as the new logger
-class WXDLLIMPEXP_BASE wxLogPassThrough : public wxLogChain
+
+#define wxLogPassThrough wxLogInterposer
+
+class WXDLLIMPEXP_BASE wxLogInterposer : public wxLogChain
+{
+public:
+ wxLogInterposer();
+
+private:
+ DECLARE_NO_COPY_CLASS(wxLogInterposer)
+};
+
+// a temporary interposer which doesn't destroy the old log target
+// (calls DetachOldLog)
+
+class WXDLLIMPEXP_BASE wxLogInterposerTemp : public wxLogChain
{
public:
- wxLogPassThrough();
+ wxLogInterposerTemp();
private:
- DECLARE_NO_COPY_CLASS(wxLogPassThrough)
+ DECLARE_NO_COPY_CLASS(wxLogInterposerTemp)
};
#if wxUSE_GUI
#if wxUSE_GUI
// this one is the same as previous except that it allows to explicitly
- class WXDLLEXPORT wxFrame;
+ class WXDLLIMPEXP_FWD_CORE wxFrame;
// specify the frame to which the output should go
DECLARE_LOG_FUNCTION2_EXP(Status, wxFrame *, pFrame, WXDLLIMPEXP_CORE);
#endif // wxUSE_GUI