From 432bd6b1a2ad258c1ccb250b2bb03e65ee6e0916 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 31 Oct 2012 12:55:52 +0000 Subject: [PATCH] Revert "Split documentation of the GUI wxLog classes in a separate file." This reverts r72818 as it resulted in wrong header files being generated in the documentation for the GUI wxLog classes. See #14784. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72832 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- interface/wx/generic/logg.h | 300 --------------- interface/wx/log.h | 738 +++++++++++++++++++++++++----------- 2 files changed, 514 insertions(+), 524 deletions(-) delete mode 100644 interface/wx/generic/logg.h diff --git a/interface/wx/generic/logg.h b/interface/wx/generic/logg.h deleted file mode 100644 index 0380483e1b..0000000000 --- a/interface/wx/generic/logg.h +++ /dev/null @@ -1,300 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: logg.h -// Purpose: interface of GUI wxLog* classes -// Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -/** - @class wxLogWindow - - This class represents a background log window: to be precise, it collects all - log messages in the log frame which it manages but also passes them on to the - log target which was active at the moment of its creation. This allows you, for - example, to show all the log messages in a frame but still continue to process - them normally by showing the standard log dialog. - - @library{wxcore} - @category{logging} - @header{wx/log.h} - - @see wxLogTextCtrl -*/ -class wxLogWindow : public wxLogInterposer -{ -public: - /** - Creates the log frame window and starts collecting the messages in it. - - @param pParent - The parent window for the log frame, may be @NULL - @param szTitle - The title for the log frame - @param show - @true to show the frame initially (default), otherwise - Show() must be called later. - @param passToOld - @true to process the log messages normally in addition to logging them - in the log frame (default), @false to only log them in the log frame. - Note that if no targets were set using wxLog::SetActiveTarget() then - wxLogWindow simply becomes the active one and messages won't be passed - to other targets. - */ - wxLogWindow(wxWindow* pParent, const wxString& szTitle, bool show = true, - bool passToOld = true); - - /** - Returns the associated log frame window. This may be used to position or resize - it but use Show() to show or hide it. - */ - wxFrame* GetFrame() const; - - /** - Called if the user closes the window interactively, will not be - called if it is destroyed for another reason (such as when program - exits). - - Return @true from here to allow the frame to close, @false to - prevent this from happening. - - @see OnFrameDelete() - */ - virtual bool OnFrameClose(wxFrame* frame); - - /** - Called immediately after the log frame creation allowing for - any extra initializations. - */ - virtual void OnFrameCreate(wxFrame* frame); - - /** - Called right before the log frame is going to be deleted: will - always be called unlike OnFrameClose(). - */ - virtual void OnFrameDelete(wxFrame* frame); - - /** - Shows or hides the frame. - */ - void Show(bool show = true); -}; - - - -/** - @class wxLogGui - - This is the default log target for the GUI wxWidgets applications. - - Please see @ref overview_log_customize for explanation of how to change the - default log target. - - An object of this class is used by default to show the log messages created - by using wxLogMessage(), wxLogError() and other logging functions. It - doesn't display the messages logged by them immediately however but - accumulates all messages logged during an event handler execution and then - shows them all at once when its Flush() method is called during the idle - time processing. This has the important advantage of showing only a single - dialog to the user even if several messages were logged because of a single - error as it often happens (e.g. a low level function could log a message - because it failed to open a file resulting in its caller logging another - message due to the failure of higher level operation requiring the use of - this file). If you need to force the display of all previously logged - messages immediately you can use wxLog::FlushActive() to force the dialog - display. - - Also notice that if an error message is logged when several informative - messages had been already logged before, the informative messages are - discarded on the assumption that they are not useful -- and may be - confusing and hence harmful -- any more after the error. The warning - and error messages are never discarded however and any informational - messages logged after the first error one are also kept (as they may - contain information about the error recovery). You may override DoLog() - method to change this behaviour. - - At any rate, it is possible that that several messages were accumulated - before this class Flush() method is called. If this is the case, Flush() - uses a custom dialog which shows the last message directly and allows the - user to view the previously logged ones by expanding the "Details" - wxCollapsiblePane inside it. This custom dialog also provides the buttons - for copying the log messages to the clipboard and saving them to a file. - - However if only a single message is present when Flush() is called, just a - wxMessageBox() is used to show it. This has the advantage of being closer - to the native behaviour but it doesn't give the user any possibility to - copy or save the message (except for the recent Windows versions where @c - Ctrl-C may be pressed in the message box to copy its contents to the - clipboard) so you may want to override DoShowSingleLogMessage() to - customize wxLogGui -- the dialogs sample shows how to do this. - - @library{wxcore} - @category{logging} - @header{wx/log.h} -*/ -class wxLogGui : public wxLog -{ -public: - /** - Default constructor. - */ - wxLogGui(); - - /** - Presents the accumulated log messages, if any, to the user. - - This method is called during the idle time and should show any messages - accumulated in wxLogGui#m_aMessages field to the user. - */ - virtual void Flush(); - -protected: - /** - Returns the appropriate title for the dialog. - - The title is constructed from wxApp::GetAppDisplayName() and the - severity string (e.g. "error" or "warning") appropriate for the current - wxLogGui#m_bErrors and wxLogGui#m_bWarnings values. - */ - wxString GetTitle() const; - - /** - Returns wxICON_ERROR, wxICON_WARNING or wxICON_INFORMATION depending on - the current maximal severity. - - This value is suitable to be used in the style parameter of - wxMessageBox() function. - */ - int GetSeverityIcon() const; - - /** - Forgets all the currently stored messages. - - If you override Flush() (and don't call the base class version), you - must call this method to avoid messages being logged over and over - again. - */ - void Clear(); - - - /** - All currently accumulated messages. - - This array may be empty if no messages were logged. - - @see m_aSeverity, m_aTimes - */ - wxArrayString m_aMessages; - - /** - The severities of each logged message. - - This array is synchronized with wxLogGui#m_aMessages, i.e. the n-th - element of this array corresponds to the severity of the n-th message. - The possible severity values are @c wxLOG_XXX constants, e.g. - wxLOG_Error, wxLOG_Warning, wxLOG_Message etc. - */ - wxArrayInt m_aSeverity; - - /** - The time stamps of each logged message. - - The elements of this array are time_t values corresponding to the time - when the message was logged. - */ - wxArrayLong m_aTimes; - - /** - True if there any error messages. - */ - bool m_bErrors; - - /** - True if there any warning messages. - - If both wxLogGui#m_bErrors and this member are false, there are only - informational messages to be shown. - */ - bool m_bWarnings; - - /** - True if there any messages to be shown to the user. - - This variable is used instead of simply checking whether - wxLogGui#m_aMessages array is empty to allow blocking further calls to - Flush() while a log dialog is already being shown, even if the messages - array hasn't been emptied yet. - */ - bool m_bHasMessages; - -private: - /** - Method called by Flush() to show a single log message. - - This function can be overridden to show the message in a different way. - By default a simple wxMessageBox() call is used. - - @param message - The message to show (it can contain multiple lines). - @param title - The suggested title for the dialog showing the message, see - GetTitle(). - @param style - One of @c wxICON_XXX constants, see GetSeverityIcon(). - */ - virtual void DoShowSingleLogMessage(const wxString& message, - const wxString& title, - int style); - - /** - Method called by Flush() to show multiple log messages. - - This function can be overridden to show the messages in a different way. - By default a special log dialog showing the most recent message and - allowing the user to expand it to view the previously logged ones is - used. - - @param messages - Array of messages to show; it contains more than one element. - @param severities - Array of message severities containing @c wxLOG_XXX values. - @param times - Array of time_t values indicating when each message was logged. - @param title - The suggested title for the dialog showing the message, see - GetTitle(). - @param style - One of @c wxICON_XXX constants, see GetSeverityIcon(). - */ - virtual void DoShowMultipleLogMessages(const wxArrayString& messages, - const wxArrayInt& severities, - const wxArrayLong& times, - const wxString& title, - int style); -}; - - - -/** - @class wxLogTextCtrl - - Using these target all the log messages can be redirected to a text control. - The text control must have been created with @c wxTE_MULTILINE style by the - caller previously. - - @library{wxcore} - @category{logging} - @header{wx/log.h} - - @see wxTextCtrl, wxStreamToTextRedirector -*/ -class wxLogTextCtrl : public wxLog -{ -public: - /** - Constructs a log target which sends all the log messages to the given text - control. The @a textctrl parameter cannot be @NULL. - */ - wxLogTextCtrl(wxTextCtrl* pTextCtrl); -}; diff --git a/interface/wx/log.h b/interface/wx/log.h index c440515b0e..db420030f5 100644 --- a/interface/wx/log.h +++ b/interface/wx/log.h @@ -68,6 +68,520 @@ public: wxThreadIdType threadId; }; +/** + @class wxLogWindow + + This class represents a background log window: to be precise, it collects all + log messages in the log frame which it manages but also passes them on to the + log target which was active at the moment of its creation. This allows you, for + example, to show all the log messages in a frame but still continue to process + them normally by showing the standard log dialog. + + @library{wxcore} + @category{logging} + + @see wxLogTextCtrl +*/ +class wxLogWindow : public wxLogInterposer +{ +public: + /** + Creates the log frame window and starts collecting the messages in it. + + @param pParent + The parent window for the log frame, may be @NULL + @param szTitle + The title for the log frame + @param show + @true to show the frame initially (default), otherwise + Show() must be called later. + @param passToOld + @true to process the log messages normally in addition to logging them + in the log frame (default), @false to only log them in the log frame. + Note that if no targets were set using wxLog::SetActiveTarget() then + wxLogWindow simply becomes the active one and messages won't be passed + to other targets. + */ + wxLogWindow(wxWindow* pParent, const wxString& szTitle, bool show = true, + bool passToOld = true); + + /** + Returns the associated log frame window. This may be used to position or resize + it but use Show() to show or hide it. + */ + wxFrame* GetFrame() const; + + /** + Called if the user closes the window interactively, will not be + called if it is destroyed for another reason (such as when program + exits). + + Return @true from here to allow the frame to close, @false to + prevent this from happening. + + @see OnFrameDelete() + */ + virtual bool OnFrameClose(wxFrame* frame); + + /** + Called immediately after the log frame creation allowing for + any extra initializations. + */ + virtual void OnFrameCreate(wxFrame* frame); + + /** + Called right before the log frame is going to be deleted: will + always be called unlike OnFrameClose(). + */ + virtual void OnFrameDelete(wxFrame* frame); + + /** + Shows or hides the frame. + */ + void Show(bool show = true); +}; + + + +/** + @class wxLogInterposerTemp + + A special version of wxLogChain which uses itself as the new log target. + It forwards log messages to the previously installed one in addition to + processing them itself. Unlike wxLogInterposer, it doesn't delete the old + target which means it can be used to temporarily redirect log output. + + As per wxLogInterposer, this class must be derived from to implement + wxLog::DoLog and/or wxLog::DoLogString methods. + + @library{wxbase} + @category{logging} +*/ +class wxLogInterposerTemp : public wxLogChain +{ +public: + /** + The default constructor installs this object as the current active log target. + */ + wxLogInterposerTemp(); +}; + + + +/** + @class wxLogChain + + This simple class allows you to chain log sinks, that is to install a new sink but + keep passing log messages to the old one instead of replacing it completely as + wxLog::SetActiveTarget does. + + It is especially useful when you want to divert the logs somewhere (for + example to a file or a log window) but also keep showing the error messages + using the standard dialogs as wxLogGui does by default. + + Example of usage: + + @code + wxLogChain *logChain = new wxLogChain(new wxLogStderr); + + // all the log messages are sent to stderr and also processed as usually + ... + + // don't delete logChain directly as this would leave a dangling + // pointer as active log target, use SetActiveTarget() instead + delete wxLog::SetActiveTarget(...something else or NULL...); + @endcode + + @library{wxbase} + @category{logging} +*/ +class wxLogChain : public wxLog +{ +public: + /** + Sets the specified @c logger (which may be @NULL) as the default log + target but the log messages are also passed to the previous log target if any. + */ + wxLogChain(wxLog* logger); + + /** + Destroys the previous log target. + */ + virtual ~wxLogChain(); + + /** + Detaches the old log target so it won't be destroyed when the wxLogChain object + is destroyed. + */ + void DetachOldLog(); + + /** + Returns the pointer to the previously active log target (which may be @NULL). + */ + wxLog* GetOldLog() const; + + /** + Returns @true if the messages are passed to the previously active log + target (default) or @false if PassMessages() had been called. + */ + bool IsPassingMessages() const; + + /** + By default, the log messages are passed to the previously active log target. + Calling this function with @false parameter disables this behaviour + (presumably temporarily, as you shouldn't use wxLogChain at all otherwise) and + it can be reenabled by calling it again with @a passMessages set to @true. + */ + void PassMessages(bool passMessages); + + /** + Sets another log target to use (may be @NULL). + + The log target specified in the wxLogChain(wxLog*) constructor or in a + previous call to this function is deleted. + This doesn't change the old log target value (the one the messages are + forwarded to) which still remains the same as was active when wxLogChain + object was created. + */ + void SetLog(wxLog* logger); +}; + + + +/** + @class wxLogGui + + This is the default log target for the GUI wxWidgets applications. + + Please see @ref overview_log_customize for explanation of how to change the + default log target. + + An object of this class is used by default to show the log messages created + by using wxLogMessage(), wxLogError() and other logging functions. It + doesn't display the messages logged by them immediately however but + accumulates all messages logged during an event handler execution and then + shows them all at once when its Flush() method is called during the idle + time processing. This has the important advantage of showing only a single + dialog to the user even if several messages were logged because of a single + error as it often happens (e.g. a low level function could log a message + because it failed to open a file resulting in its caller logging another + message due to the failure of higher level operation requiring the use of + this file). If you need to force the display of all previously logged + messages immediately you can use wxLog::FlushActive() to force the dialog + display. + + Also notice that if an error message is logged when several informative + messages had been already logged before, the informative messages are + discarded on the assumption that they are not useful -- and may be + confusing and hence harmful -- any more after the error. The warning + and error messages are never discarded however and any informational + messages logged after the first error one are also kept (as they may + contain information about the error recovery). You may override DoLog() + method to change this behaviour. + + At any rate, it is possible that that several messages were accumulated + before this class Flush() method is called. If this is the case, Flush() + uses a custom dialog which shows the last message directly and allows the + user to view the previously logged ones by expanding the "Details" + wxCollapsiblePane inside it. This custom dialog also provides the buttons + for copying the log messages to the clipboard and saving them to a file. + + However if only a single message is present when Flush() is called, just a + wxMessageBox() is used to show it. This has the advantage of being closer + to the native behaviour but it doesn't give the user any possibility to + copy or save the message (except for the recent Windows versions where @c + Ctrl-C may be pressed in the message box to copy its contents to the + clipboard) so you may want to override DoShowSingleLogMessage() to + customize wxLogGui -- the dialogs sample shows how to do this. + + @library{wxcore} + @category{logging} +*/ +class wxLogGui : public wxLog +{ +public: + /** + Default constructor. + */ + wxLogGui(); + + /** + Presents the accumulated log messages, if any, to the user. + + This method is called during the idle time and should show any messages + accumulated in wxLogGui#m_aMessages field to the user. + */ + virtual void Flush(); + +protected: + /** + Returns the appropriate title for the dialog. + + The title is constructed from wxApp::GetAppDisplayName() and the + severity string (e.g. "error" or "warning") appropriate for the current + wxLogGui#m_bErrors and wxLogGui#m_bWarnings values. + */ + wxString GetTitle() const; + + /** + Returns wxICON_ERROR, wxICON_WARNING or wxICON_INFORMATION depending on + the current maximal severity. + + This value is suitable to be used in the style parameter of + wxMessageBox() function. + */ + int GetSeverityIcon() const; + + /** + Forgets all the currently stored messages. + + If you override Flush() (and don't call the base class version), you + must call this method to avoid messages being logged over and over + again. + */ + void Clear(); + + + /** + All currently accumulated messages. + + This array may be empty if no messages were logged. + + @see m_aSeverity, m_aTimes + */ + wxArrayString m_aMessages; + + /** + The severities of each logged message. + + This array is synchronized with wxLogGui#m_aMessages, i.e. the n-th + element of this array corresponds to the severity of the n-th message. + The possible severity values are @c wxLOG_XXX constants, e.g. + wxLOG_Error, wxLOG_Warning, wxLOG_Message etc. + */ + wxArrayInt m_aSeverity; + + /** + The time stamps of each logged message. + + The elements of this array are time_t values corresponding to the time + when the message was logged. + */ + wxArrayLong m_aTimes; + + /** + True if there any error messages. + */ + bool m_bErrors; + + /** + True if there any warning messages. + + If both wxLogGui#m_bErrors and this member are false, there are only + informational messages to be shown. + */ + bool m_bWarnings; + + /** + True if there any messages to be shown to the user. + + This variable is used instead of simply checking whether + wxLogGui#m_aMessages array is empty to allow blocking further calls to + Flush() while a log dialog is already being shown, even if the messages + array hasn't been emptied yet. + */ + bool m_bHasMessages; + +private: + /** + Method called by Flush() to show a single log message. + + This function can be overridden to show the message in a different way. + By default a simple wxMessageBox() call is used. + + @param message + The message to show (it can contain multiple lines). + @param title + The suggested title for the dialog showing the message, see + GetTitle(). + @param style + One of @c wxICON_XXX constants, see GetSeverityIcon(). + */ + virtual void DoShowSingleLogMessage(const wxString& message, + const wxString& title, + int style); + + /** + Method called by Flush() to show multiple log messages. + + This function can be overridden to show the messages in a different way. + By default a special log dialog showing the most recent message and + allowing the user to expand it to view the previously logged ones is + used. + + @param messages + Array of messages to show; it contains more than one element. + @param severities + Array of message severities containing @c wxLOG_XXX values. + @param times + Array of time_t values indicating when each message was logged. + @param title + The suggested title for the dialog showing the message, see + GetTitle(). + @param style + One of @c wxICON_XXX constants, see GetSeverityIcon(). + */ + virtual void DoShowMultipleLogMessages(const wxArrayString& messages, + const wxArrayInt& severities, + const wxArrayLong& times, + const wxString& title, + int style); +}; + + + +/** + @class wxLogStream + + This class can be used to redirect the log messages to a C++ stream. + + Please note that this class is only available if wxWidgets was compiled with + the standard iostream library support (@c wxUSE_STD_IOSTREAM must be on). + + @library{wxbase} + @category{logging} + + @see wxLogStderr, wxStreamToTextRedirector +*/ +class wxLogStream : public wxLog +{ +public: + /** + Constructs a log target which sends all the log messages to the given + output stream. If it is @NULL, the messages are sent to @c cerr. + */ + wxLogStream(std::ostream *ostr = NULL); +}; + + + +/** + @class wxLogStderr + + This class can be used to redirect the log messages to a C file stream (not to + be confused with C++ streams). + + It is the default log target for the non-GUI wxWidgets applications which + send all the output to @c stderr. + + @library{wxbase} + @category{logging} + + @see wxLogStream +*/ +class wxLogStderr : public wxLog +{ +public: + /** + Constructs a log target which sends all the log messages to the given + @c FILE. If it is @NULL, the messages are sent to @c stderr. + */ + wxLogStderr(FILE* fp = NULL); +}; + + + +/** + @class wxLogBuffer + + wxLogBuffer is a very simple implementation of log sink which simply collects + all the logged messages in a string (except the debug messages which are output + in the usual way immediately as we're presumably not interested in collecting + them for later). The messages from different log function calls are separated + by the new lines. + + All the messages collected so far can be shown to the user (and the current + buffer cleared) by calling the overloaded wxLogBuffer::Flush method. + + @library{wxbase} + @category{logging} +*/ +class wxLogBuffer : public wxLog +{ +public: + /** + The default ctor does nothing. + */ + wxLogBuffer(); + + /** + Shows all the messages collected so far to the user (using a message box in the + GUI applications or by printing them out to the console in text mode) and + clears the internal buffer. + */ + virtual void Flush(); + + /** + Returns the current buffer contains. Messages from different log function calls + are separated with the new lines in the buffer. + The buffer can be cleared by Flush() which will also show the current + contents to the user. + */ + const wxString& GetBuffer() const; +}; + + + +/** + @class wxLogInterposer + + A special version of wxLogChain which uses itself as the new log target. + It forwards log messages to the previously installed one in addition to + processing them itself. + + Unlike wxLogChain which is usually used directly as is, this class must be + derived from to implement wxLog::DoLog and/or wxLog::DoLogString methods. + + wxLogInterposer destroys the previous log target in its destructor. + If you don't want this to happen, use wxLogInterposerTemp instead. + + @library{wxbase} + @category{logging} +*/ +class wxLogInterposer : public wxLogChain +{ +public: + /** + The default constructor installs this object as the current active log target. + */ + wxLogInterposer(); +}; + + + +/** + @class wxLogTextCtrl + + Using these target all the log messages can be redirected to a text control. + The text control must have been created with @c wxTE_MULTILINE style by the + caller previously. + + @library{wxcore} + @category{logging} + + @see wxTextCtrl, wxStreamToTextRedirector +*/ +class wxLogTextCtrl : public wxLog +{ +public: + /** + Constructs a log target which sends all the log messages to the given text + control. The @a textctrl parameter cannot be @NULL. + */ + wxLogTextCtrl(wxTextCtrl* pTextCtrl); +}; + + /** @@ -606,230 +1120,6 @@ protected: -/** - @class wxLogChain - - This simple class allows you to chain log sinks, that is to install a new sink but - keep passing log messages to the old one instead of replacing it completely as - wxLog::SetActiveTarget does. - - It is especially useful when you want to divert the logs somewhere (for - example to a file or a log window) but also keep showing the error messages - using the standard dialogs as wxLogGui does by default. - - Example of usage: - - @code - wxLogChain *logChain = new wxLogChain(new wxLogStderr); - - // all the log messages are sent to stderr and also processed as usually - ... - - // don't delete logChain directly as this would leave a dangling - // pointer as active log target, use SetActiveTarget() instead - delete wxLog::SetActiveTarget(...something else or NULL...); - @endcode - - @library{wxbase} - @category{logging} -*/ -class wxLogChain : public wxLog -{ -public: - /** - Sets the specified @c logger (which may be @NULL) as the default log - target but the log messages are also passed to the previous log target if any. - */ - wxLogChain(wxLog* logger); - - /** - Destroys the previous log target. - */ - virtual ~wxLogChain(); - - /** - Detaches the old log target so it won't be destroyed when the wxLogChain object - is destroyed. - */ - void DetachOldLog(); - - /** - Returns the pointer to the previously active log target (which may be @NULL). - */ - wxLog* GetOldLog() const; - - /** - Returns @true if the messages are passed to the previously active log - target (default) or @false if PassMessages() had been called. - */ - bool IsPassingMessages() const; - - /** - By default, the log messages are passed to the previously active log target. - Calling this function with @false parameter disables this behaviour - (presumably temporarily, as you shouldn't use wxLogChain at all otherwise) and - it can be reenabled by calling it again with @a passMessages set to @true. - */ - void PassMessages(bool passMessages); - - /** - Sets another log target to use (may be @NULL). - - The log target specified in the wxLogChain(wxLog*) constructor or in a - previous call to this function is deleted. - This doesn't change the old log target value (the one the messages are - forwarded to) which still remains the same as was active when wxLogChain - object was created. - */ - void SetLog(wxLog* logger); -}; - - - -/** - @class wxLogInterposerTemp - - A special version of wxLogChain which uses itself as the new log target. - It forwards log messages to the previously installed one in addition to - processing them itself. Unlike wxLogInterposer, it doesn't delete the old - target which means it can be used to temporarily redirect log output. - - As per wxLogInterposer, this class must be derived from to implement - wxLog::DoLog and/or wxLog::DoLogString methods. - - @library{wxbase} - @category{logging} -*/ -class wxLogInterposerTemp : public wxLogChain -{ -public: - /** - The default constructor installs this object as the current active log target. - */ - wxLogInterposerTemp(); -}; - - - -/** - @class wxLogStream - - This class can be used to redirect the log messages to a C++ stream. - - Please note that this class is only available if wxWidgets was compiled with - the standard iostream library support (@c wxUSE_STD_IOSTREAM must be on). - - @library{wxbase} - @category{logging} - - @see wxLogStderr, wxStreamToTextRedirector -*/ -class wxLogStream : public wxLog -{ -public: - /** - Constructs a log target which sends all the log messages to the given - output stream. If it is @NULL, the messages are sent to @c cerr. - */ - wxLogStream(std::ostream *ostr = NULL); -}; - - - -/** - @class wxLogStderr - - This class can be used to redirect the log messages to a C file stream (not to - be confused with C++ streams). - - It is the default log target for the non-GUI wxWidgets applications which - send all the output to @c stderr. - - @library{wxbase} - @category{logging} - - @see wxLogStream -*/ -class wxLogStderr : public wxLog -{ -public: - /** - Constructs a log target which sends all the log messages to the given - @c FILE. If it is @NULL, the messages are sent to @c stderr. - */ - wxLogStderr(FILE* fp = NULL); -}; - - - -/** - @class wxLogBuffer - - wxLogBuffer is a very simple implementation of log sink which simply collects - all the logged messages in a string (except the debug messages which are output - in the usual way immediately as we're presumably not interested in collecting - them for later). The messages from different log function calls are separated - by the new lines. - - All the messages collected so far can be shown to the user (and the current - buffer cleared) by calling the overloaded wxLogBuffer::Flush method. - - @library{wxbase} - @category{logging} -*/ -class wxLogBuffer : public wxLog -{ -public: - /** - The default ctor does nothing. - */ - wxLogBuffer(); - - /** - Shows all the messages collected so far to the user (using a message box in the - GUI applications or by printing them out to the console in text mode) and - clears the internal buffer. - */ - virtual void Flush(); - - /** - Returns the current buffer contains. Messages from different log function calls - are separated with the new lines in the buffer. - The buffer can be cleared by Flush() which will also show the current - contents to the user. - */ - const wxString& GetBuffer() const; -}; - - - -/** - @class wxLogInterposer - - A special version of wxLogChain which uses itself as the new log target. - It forwards log messages to the previously installed one in addition to - processing them itself. - - Unlike wxLogChain which is usually used directly as is, this class must be - derived from to implement wxLog::DoLog and/or wxLog::DoLogString methods. - - wxLogInterposer destroys the previous log target in its destructor. - If you don't want this to happen, use wxLogInterposerTemp instead. - - @library{wxbase} - @category{logging} -*/ -class wxLogInterposer : public wxLogChain -{ -public: - /** - The default constructor installs this object as the current active log target. - */ - wxLogInterposer(); -}; - - - /** @class wxLogNull