%% Created: some time ago
%% RCS-ID: $Id$
%% Copyright: (c) 1997-2001 Vadim Zeitlin
-%% License: wxWidgets license
+%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxLog}}\label{wxlog}
\latexignore{\rtfignore{\wxheading{Function groups}}}
-\membersection{Static functions}
+\membersection{Global functions}
The functions in this section work with and manipulate the active log target.
The \helpref{OnLog()}{wxlogonlog} is called by the {\it wxLogXXX()} functions
\helpref{Suspend}{wxlogsuspend}\\
\helpref{Resume}{wxlogresume}
-\membersection{Logging functions}
+\membersection{Logging functions}\label{loggingfunctions}
There are two functions which must be implemented by any derived class to
actually process the log messages: \helpref{DoLog}{wxlogdolog} and
\helpref{SetTimestamp}{wxlogsettimestamp}\\
\helpref{GetTimestamp}{wxloggettimestamp}\\
\helpref{SetTraceMask}{wxlogsettracemask}\\
-\helpref{GetTraceMask}{wxloggettracemask}
+\helpref{GetTraceMask}{wxloggettracemask}\\
+\helpref{SetRepetitionCounting}{wxlogsetrepetitioncounting}\\
+\helpref{GetRepetitionCounting}{wxloggetrepetitioncounting}
%%%%% MEMBERS HERE %%%%%
\helponly{\insertatlevel{2}{
\membersection{wxLog::OnLog}\label{wxlogonlog}
-\func{static void}{OnLog}{\param{wxLogLevel }{ level}, \param{const char * }{ message}}
+\func{static void}{OnLog}{\param{wxLogLevel }{ level}, \param{const wxString\& }{ message}}
Forwards the message at specified level to the {\it DoLog()} function of the
active log target if there is any, does nothing otherwise.
\func{static wxLog *}{SetActiveTarget}{\param{wxLog * }{ logtarget}}
Sets the specified log target as the active one. Returns the pointer to the
-previous active log target (may be NULL).
+previous active log target (may be NULL). To suppress logging use a new
+instance of wxLogNull not NULL. If the active log target is set to NULL a
+new default log target will be created when logging occurs.
\membersection{wxLog::Suspend}\label{wxlogsuspend}
\membersection{wxLog::DoLog}\label{wxlogdolog}
-\func{virtual void}{DoLog}{\param{wxLogLevel }{level}, \param{const wxChar }{*msg}, \param{time\_t }{timestamp}}
+\func{virtual void}{DoLog}{\param{wxLogLevel }{level}, \param{const wxString\& }{msg}, \param{time\_t }{timestamp}}
Called to process the message of the specified severity. {\it msg} is the text
of the message as specified in the call of {\it wxLogXXX()} function which
\membersection{wxLog::DoLogString}\label{wxlogdologstring}
-\func{virtual void}{DoLogString}{\param{const wxChar }{*msg}, \param{time\_t }{timestamp}}
+\func{virtual void}{DoLogString}{\param{const wxString\& }{msg}, \param{time\_t }{timestamp}}
-Called to log the specified string. The timestamp is already included into the
+Called to log the specified string. The timestamp is already included in the
string but still passed to this function.
A simple implementation may just send the string to {\tt stdout} or, better,
Returns the current log level limit.
+\membersection{wxLog::SetRepetitionCounting}\label{wxlogsetrepetitioncounting}
+
+\func{static void}{SetRepetitionCounting}{\param{bool }{ repetCounting = true}}
+
+Enables logging mode in which a log message is logged once, and in case exactly
+the same message successively repeats one or more times, only the number of
+repetitions is logged.
+
+\membersection{wxLog::GetRepetitionCounting}\label{wxloggetrepetitioncounting}
+
+\func{static bool}{GetRepetitionCounting}{\void}
+
+Returns whether the repetition counting mode is enabled.
+
+
\membersection{wxLog::SetTimestamp}\label{wxlogsettimestamp}
\func{void}{SetTimestamp}{\param{const char * }{ format}}
\membersection{wxLog::IsAllowedTraceMask}\label{wxlogisallowedtracemask}
-\func{static bool}{IsAllowedTraceMask}{\param{const wxChar *}{mask}}
+\func{static bool}{IsAllowedTraceMask}{\param{const wxString\& }{mask}}
Returns true if the {\it mask} is one of allowed masks for
\helpref{wxLogTrace}{wxlogtrace}.
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogChain::wxLogChain}\label{wxlogchainwxlogchain}
+\membersection{wxLogChain::wxLogChain}\label{wxlogchainctor}
\func{}{wxLogChain}{\param{wxLog *}{logger}}
Sets the specified {\tt logger} (which may be {\tt NULL}) as the default log
target but the log messages are also passed to the previous log target if any.
-\membersection{wxLogChain::\destruct{wxLogChain}}
+\membersection{wxLogChain::\destruct{wxLogChain}}\label{wxlogchaindtor}
\func{}{\destruct{wxLogChain}}{\void}
\func{void}{SetLog}{\param{wxLog *}{logger}}
Sets another log target to use (may be {\tt NULL}). The log target specified
-in the \helpref{constructor}{wxlogchainwxlogchain} or in a previous call to
+in the \helpref{constructor}{wxlogchainctor} or in a previous call to
this function is deleted.
This doesn't change the old log target value (the one the messages are
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogGui::wxLogGui}
+\membersection{wxLogGui::wxLogGui}\label{wxlogguictor}
\func{}{wxLogGui}{\void}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogNull::wxLogNull}
+\membersection{wxLogNull::wxLogNull}\label{wxlognullctor}
\func{}{wxLogNull}{\void}
Suspends logging.
-\membersection{wxLogNull::\destruct{wxLogNull}}
+\membersection{wxLogNull::\destruct{wxLogNull}}\label{wxlognulldtor}
Resumes logging.
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogStderr::wxLogStderr}
+\membersection{wxLogStderr::wxLogStderr}\label{wxlogstderrctor}
\func{}{wxLogStderr}{\param{FILE }{*fp = NULL}}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogStream::wxLogStream}
+\membersection{wxLogStream::wxLogStream}\label{wxlogstreamctor}
\func{}{wxLogStream}{\param{std::ostream }{*ostr = NULL}}
\wxheading{See also}
-\helpref{wxLogTextCtrl}{wxlogtextctrl},\\
+\helpref{wxTextCtrl}{wxtextctrl},\\
\helpref{wxStreamToTextRedirector}{wxstreamtotextredirector}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogTextCtrl::wxLogTextCtrl}
+\membersection{wxLogTextCtrl::wxLogTextCtrl}\label{wxlogtextctrlctor}
\func{}{wxLogTextCtrl}{\param{wxTextCtrl }{*textctrl}}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxLogWindow::wxLogWindow}
+\membersection{wxLogWindow::wxLogWindow}\label{wxlogwindowctor}
\func{}{wxLogWindow}{\param{wxFrame }{*parent}, \param{const wxChar }{*title}, \param{bool }{show = {\tt true}}, \param{bool }{passToOld = {\tt true}}}
Shows or hides the frame.
-\membersection{wxLogWindow::GetFrame}
+\membersection{wxLogWindow::GetFrame}\label{wxlogwindowgetframe}
\constfunc{wxFrame *}{GetFrame}{\void}
Returns the associated log frame window. This may be used to position or resize
it but use \helpref{wxLogWindow::Show}{wxlogwindowshow} to show or hide it.
-\membersection{wxLogWindow::OnFrameCreate}
+\membersection{wxLogWindow::OnFrameCreate}\label{wxlogwindowonframecreate}
\func{virtual void}{OnFrameCreate}{\param{wxFrame }{*frame}}
\membersection{wxLogWindow::OnFrameClose}\label{wxlogwindowonframeclose}
-\func{virtual void}{OnFrameClose}{\param{wxFrame }{*frame}}
+\func{virtual bool}{OnFrameClose}{\param{wxFrame }{*frame}}
Called if the user closes the window interactively, will not be
called if it is destroyed for another reason (such as when program