#include </home/zeitlin/src/wx/github/interface/wx/log.h>
これは GUI wxWidgets アプリケーションのデフォルトのログターゲットです。
Please see Logging Customization 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 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.
Public Member Functions | |
wxLogGui () | |
Default constructor. | |
virtual void | Flush () |
Presents the accumulated log messages, if any, to the user. | |
Protected Member Functions | |
wxString | GetTitle () const |
Returns the appropriate title for the dialog. | |
int | GetSeverityIcon () const |
Returns wxICON_ERROR, wxICON_WARNING or wxICON_INFORMATION depending on the current maximal severity. | |
void | Clear () |
Forgets all the currently stored messages. | |
Protected Attributes | |
wxArrayString | m_aMessages |
All currently accumulated messages. | |
wxArrayInt | m_aSeverity |
The severities of each logged message. | |
wxArrayLong | m_aTimes |
The time stamps of each logged message. | |
bool | m_bErrors |
True if there any error messages. | |
bool | m_bWarnings |
True if there any warning messages. | |
bool | m_bHasMessages |
True if there any messages to be shown to the user. |
wxLogGui::wxLogGui | ( | ) |
Default constructor.
void wxLogGui::Clear | ( | ) | [protected] |
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.
virtual void wxLogGui::Flush | ( | ) | [virtual] |
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.
Reimplemented from wxLog.
int wxLogGui::GetSeverityIcon | ( | ) | const [protected] |
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.
wxString wxLogGui::GetTitle | ( | ) | const [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.
wxArrayString wxLogGui::m_aMessages [protected] |
All currently accumulated messages.
This array may be empty if no messages were logged.
wxArrayInt wxLogGui::m_aSeverity [protected] |
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 wxLOG_XXX
constants, e.g. wxLOG_Error, wxLOG_Warning, wxLOG_Message etc.
wxArrayLong wxLogGui::m_aTimes [protected] |
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.
bool wxLogGui::m_bErrors [protected] |
True if there any error messages.
bool wxLogGui::m_bHasMessages [protected] |
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 wxLogGui::m_bWarnings [protected] |
True if there any warning messages.
If both wxLogGui::m_bErrors and this member are false, there are only informational messages to be shown.