MeVisLab Toolbox Reference
|
Configurable logger and progress handler class which can be used as base class for logging, interruption checks and collection of messages in a user defined stream. More...
#include <mlProgressLogger.h>
Public Types | |
enum | FormatFlags { NoFlags = 0 , Bold = 1 , Green = 2 , Yellow = 4 , Red = 8 , Blue = 16 } |
Enumerator describing some formatting flags. More... | |
typedef bool(* | InterruptCheckFunc) (void *userData) |
Function type to check to for an interruption. | |
Public Member Functions | |
ProgressLogger (std::stringstream *outputStream=nullptr, NotifyField *intCheckField=nullptr, StringField *statusField=nullptr, bool useRichTextCoding=true) | |
Default and convenience constructor. | |
virtual | ~ProgressLogger () |
Destructor. | |
void | setAutoNewLineTermination (bool on) |
Enable/disable automatic newline termination of logged messages. | |
bool | isAutoNewLineTerminationOn () const |
Returns enabled/disabled automatic newline termination of logged messages. | |
virtual bool | messageHook (const ProgressLogger &, MLMessageType, const std::string *, const std::string *, MLErrorCode *, const std::string *, unsigned int *) |
All logging methods pass their function arguments through this hook which allows to collect all messages sent to the ProgressLogger. | |
void | logAnyMessage (std::string msg, unsigned int formatFlags=NoFlags) |
Log any string into the console. | |
void | logFatalError (const std::string &func, MLErrorCode err, const std::string &reason) |
Logs a fatal error, an error, warning or information to the defined output stream/console. | |
void | logError (const std::string &func, MLErrorCode err, const std::string &reason) |
See logFatalError() for details. | |
void | logWarning (const std::string &func, MLErrorCode err, const std::string &reason) |
See logFatalError() for details. | |
void | logInfo (const std::string &func, const std::string &reason="") |
Same as logFatalError, logError, and logWarning, but logging only information without error. | |
void | logFullFatalError (const std::string &func, MLErrorCode err, const std::string &reason) |
Logs a fatal error, an error, warning or information to the defined output stream/console and sends the information also to the MeVisLab error handler. | |
void | logFullError (const std::string &func, MLErrorCode err, const std::string &reason) |
See logFullFatalError() for details. | |
void | logFullWarning (const std::string &func, MLErrorCode err, const std::string &reason) |
See logFullFatalError() for details. | |
void | logFullInfo (const std::string &func, const std::string &reason) |
Same as logFullFatalError, logFullError, and logFullWarning, but logging only information without error. | |
bool | getRichTextCodingFlag () const |
If enabled (the default) then outputs newlines are always converted to hyper/rich text line separators ( ) and different message types get different colors; if false then contents they are always converted to normal newline characters and rich/hypertext color statements are not inserted. | |
void | setRichTextCodingFlag (bool useRichTextCoding) |
See getRichTextCodingFlag() for details. | |
bool | getUpdateProgressDuringInterruptChecksFlag () const |
If enabled then progress updates are performed on each interrupt check; this is useful to enable the busy cursor together with interrupt checks. | |
void | setUpdateProgressDuringInterruptChecksFlag (bool callUpdateProgressDuringInterruptChecks) |
See getUpdateProgressDuringInterruptChecksFlag() for details. | |
void | setStatusUpdateTimeIntervalInSeconds (double checkIntervalInSeconds) |
Sets a time interval which is used to avoid that too many Module::updateProgress() calls are performed to update the user interfaces (which usually are very expensive); default is 1 second. | |
double | getStatusUpdateTimeIntervalInSeconds () const |
Returns the currently set Module::updateProgress() call time interval when status fields are updated. | |
void | setCheckTimeIntervalInSeconds (double checkIntervalInSeconds) |
Sets a time interval which is used to avoid that too many interruption checks are performed which usually are very expensive, default is 1 second. | |
double | getCheckTimeIntervalInSeconds () const |
Returns the currently set interrupt check time interval. | |
void | setInterruptCheckFunction (InterruptCheckFunc checkFunc, void *userData) |
Set a function which actually does a check for interrupts and its user data. | |
InterruptCheckFunc | getInterruptCheckFunction () const |
Returns the currently set function for interrupt checks. | |
void * | getInterruptCheckFunctionUserData () const |
Returns the currently set user data pointer for interrupt checks. | |
void | setInterruptCheckField (NotifyField *interruptField=nullptr) |
Set a NotifyField which shall be checked for button presses which mean interruptions; ignored if nullptr. | |
NotifyField * | getInterruptCheckField () const |
Return the currently set NotifyField pointer which shall be checked for button presses; default is nullptr. | |
void | setStatusField (StringField *statusField) |
Set a StringField which always shall be updated with all logged messages; ignored if nullptr. | |
StringField * | getStatusField () const |
Return the currently set StringField pointer which is updated on logged messages; default is nullptr. | |
virtual bool | wasInterrupted () |
If the interruption flag is already set then immediately true is returned. | |
virtual bool | getInterruptedFlag () const |
Returns current state of interruption flag (but does not check for interruption). | |
virtual void | setInterruptedFlag (bool wasInterrupted) |
Sets current state of interruption flag (but does not check for interruption). | |
virtual bool | orToInterruptedFlag (bool wasInterrupted) |
Update interruption flag by ORing the passed flag to the internal flag and then returning the flag (but does not check for interruption). | |
virtual void | updateProgressIndicator (const std::string &, float) |
Update a progress indicator which shows the message info and the percentage percState. | |
void | setHadFlags (bool hadFlag) |
Sets all had*Flags to hadFlag. | |
void | setFatalErrorMessagePrefix (const std::string &msg) |
Set/get prefixes for messages. | |
void | setErrorMessagePrefix (const std::string &msg) |
void | setWarningMessagePrefix (const std::string &msg) |
void | setInfoMessagePrefix (const std::string &msg) |
std::string | getFatalErrorMessagePrefix () const |
std::string | getErrorMessagePrefix () const |
std::string | getWarningMessagePrefix () const |
std::string | getInfoMessagePrefix () const |
bool | hadFatalError () const |
Returns true if any fatal error, error, warning or info was logged; can be reset with corresponding setHad*Flag(). | |
bool | hadError () const |
bool | hadWarning () const |
bool | hadInfo () const |
void | setHadFatalErrorFlag (bool hadFatalErrorFlag) |
Sets the state of the corresponding _had* member; used to clear recent logging states. | |
void | setHadErrorFlag (bool hadErrorFlag) |
void | setHadWarningFlag (bool hadWarningFlag) |
void | setHadInfoFlag (bool hadInfoFlag) |
Static Public Member Functions | |
static bool | isPressedField (NotifyField *fieldToCheck) |
Convenience implementation of an interrupt check function if user of this class does not want to implement his own check callback but only wants to check a NotifyField for presses. | |
Protected Member Functions | |
std::string | _doAutoNewLineTerminate (const std::string &msg) const |
Helper to terminate msg with newline at end according. | |
virtual bool | _isStopPressed () const |
Checks for interruption with currently set _checkFunc or _interruptCheckField or returns false if not available. | |
virtual void | _updateConsole (bool=true) |
Updates the output console if there is any. | |
Static Protected Member Functions | |
static void | _updateProgressIndicatorCB (void *userData, const std::string &info, float state) |
Static callback version to update a progress indicator about the current import state. | |
Configurable logger and progress handler class which can be used as base class for logging, interruption checks and collection of messages in a user defined stream.
Definition at line 32 of file mlProgressLogger.h.
Function type to check to for an interruption.
Definition at line 37 of file mlProgressLogger.h.
Enumerator describing some formatting flags.
Enumerator | |
---|---|
NoFlags | |
Bold | |
Green | |
Yellow | |
Red | |
Blue |
Definition at line 40 of file mlProgressLogger.h.
ml::ProgressLogger::ProgressLogger | ( | std::stringstream * | outputStream = nullptr, |
NotifyField * | intCheckField = nullptr, | ||
StringField * | statusField = nullptr, | ||
bool | useRichTextCoding = true ) |
Default and convenience constructor.
outputStream | If non-nullptr (default is nullptr) this is the stream into which all messages are posted which are sent to the logger instance. |
intCheckField | If non-nullptr (default is nullptr) then this NotifyField is checked for presses for interrupt handling when the logger is asked for this and the getCheckTimeIntervalInSeconds() is exceeded. |
statusField | If non-nullptr (default is nullptr) then this is the StringField which is set to the current output message received by the logger. If getStatusUpdateTimeIntervalInSeconds() are exceeded Module::updateProgress() is called to refresh the GUI. |
useRichTextCoding | Enables coding out outputs as rich text if enabled (the default) otherwise it is disabled; see setRichTextCodingFlag() for more information. |
|
virtual |
Destructor.
|
protected |
Helper to terminate msg with newline at end according.
Checks for interruption with currently set _checkFunc or _interruptCheckField or returns false if not available.
Updates the output console if there is any.
If fullUpdate is true the the console is surely updated, if false then a time saving sloppy update is made. Does nothing, recommended to be reimplemented by subclasses.
Reimplemented in ml::DirectDicomImportImporterBase.
Definition at line 251 of file mlProgressLogger.h.
|
staticprotected |
Static callback version to update a progress indicator about the current import state.
This is usually used by derived classes to call the overridden updateProgressIndicator method conveniently.
double ml::ProgressLogger::getCheckTimeIntervalInSeconds | ( | ) | const |
Returns the currently set interrupt check time interval.
|
inline |
Definition at line 212 of file mlProgressLogger.h.
|
inline |
Definition at line 211 of file mlProgressLogger.h.
|
inline |
Definition at line 214 of file mlProgressLogger.h.
NotifyField * ml::ProgressLogger::getInterruptCheckField | ( | ) | const |
Return the currently set NotifyField pointer which shall be checked for button presses; default is nullptr.
InterruptCheckFunc ml::ProgressLogger::getInterruptCheckFunction | ( | ) | const |
Returns the currently set function for interrupt checks.
void * ml::ProgressLogger::getInterruptCheckFunctionUserData | ( | ) | const |
Returns the currently set user data pointer for interrupt checks.
Returns current state of interruption flag (but does not check for interruption).
bool ml::ProgressLogger::getRichTextCodingFlag | ( | ) | const |
If enabled (the default) then outputs newlines are always converted to hyper/rich text line separators (
) and different message types get different colors; if false then
contents they are always converted to normal newline characters and rich/hypertext color statements are not inserted.
StringField * ml::ProgressLogger::getStatusField | ( | ) | const |
Return the currently set StringField pointer which is updated on logged messages; default is nullptr.
double ml::ProgressLogger::getStatusUpdateTimeIntervalInSeconds | ( | ) | const |
Returns the currently set Module::updateProgress() call time interval when status fields are updated.
bool ml::ProgressLogger::getUpdateProgressDuringInterruptChecksFlag | ( | ) | const |
If enabled then progress updates are performed on each interrupt check; this is useful to enable the busy cursor together with interrupt checks.
If disabled then the busy cursor must be controlled by the application itself.
|
inline |
Definition at line 213 of file mlProgressLogger.h.
bool ml::ProgressLogger::hadError | ( | ) | const |
bool ml::ProgressLogger::hadFatalError | ( | ) | const |
Returns true if any fatal error, error, warning or info was logged; can be reset with corresponding setHad*Flag().
bool ml::ProgressLogger::hadInfo | ( | ) | const |
bool ml::ProgressLogger::hadWarning | ( | ) | const |
bool ml::ProgressLogger::isAutoNewLineTerminationOn | ( | ) | const |
Returns enabled/disabled automatic newline termination of logged messages.
|
static |
Convenience implementation of an interrupt check function if user of this class does not want to implement his own check callback but only wants to check a NotifyField for presses.
Log any string into the console.
void ml::ProgressLogger::logError | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
See logFatalError() for details.
void ml::ProgressLogger::logFatalError | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
Logs a fatal error, an error, warning or information to the defined output stream/console.
func | String name of class and function. |
err | ML Error code describing the nature of the problem or message. |
reason | String description of the handling and the cause of the message/problem. |
void ml::ProgressLogger::logFullError | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
See logFullFatalError() for details.
void ml::ProgressLogger::logFullFatalError | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
Logs a fatal error, an error, warning or information to the defined output stream/console and sends the information also to the MeVisLab error handler.
func | String name of class and function. |
err | ML Error code describing the nature of the problem or message. |
reason | String description of the handling and the cause of the message/problem. |
Same as logFullFatalError, logFullError, and logFullWarning, but logging only information without error.
func | String name of class and function. |
reason | String description of the handling and the cause of the message/problem. |
void ml::ProgressLogger::logFullWarning | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
See logFullFatalError() for details.
Same as logFatalError, logError, and logWarning, but logging only information without error.
func | String name of class and function. |
reason | String description of the handling and the cause of the message/problem. |
void ml::ProgressLogger::logWarning | ( | const std::string & | func, |
MLErrorCode | err, | ||
const std::string & | reason ) |
See logFatalError() for details.
|
inlinevirtual |
All logging methods pass their function arguments through this hook which allows to collect all messages sent to the ProgressLogger.
All pointer arguments will be only valid if they are available in the actually called method, otherwise they will be nullptr. If this message returns true the message will be formatted and logged according to the current instance state, if false then it will completely be skipped and not further handled nor logged. The default implementation is empty and just returning true.
Definition at line 84 of file mlProgressLogger.h.
Update interruption flag by ORing the passed flag to the internal flag and then returning the flag (but does not check for interruption).
Enable/disable automatic newline termination of logged messages.
Sets a time interval which is used to avoid that too many interruption checks are performed which usually are very expensive, default is 1 second.
Definition at line 207 of file mlProgressLogger.h.
References mlrange_cast().
Set/get prefixes for messages.
Definition at line 206 of file mlProgressLogger.h.
References mlrange_cast().
Sets the state of the corresponding _had* member; used to clear recent logging states.
Definition at line 209 of file mlProgressLogger.h.
References mlrange_cast().
void ml::ProgressLogger::setInterruptCheckField | ( | NotifyField * | interruptField = nullptr | ) |
Set a NotifyField which shall be checked for button presses which mean interruptions; ignored if nullptr.
void ml::ProgressLogger::setInterruptCheckFunction | ( | InterruptCheckFunc | checkFunc, |
void * | userData ) |
Set a function which actually does a check for interrupts and its user data.
Can be reset with nullptr in both arguments to have no function.
Sets current state of interruption flag (but does not check for interruption).
See getRichTextCodingFlag() for details.
void ml::ProgressLogger::setStatusField | ( | StringField * | statusField | ) |
Set a StringField which always shall be updated with all logged messages; ignored if nullptr.
Sets a time interval which is used to avoid that too many Module::updateProgress() calls are performed to update the user interfaces (which usually are very expensive); default is 1 second.
void ml::ProgressLogger::setUpdateProgressDuringInterruptChecksFlag | ( | bool | callUpdateProgressDuringInterruptChecks | ) |
See getUpdateProgressDuringInterruptChecksFlag() for details.
Definition at line 208 of file mlProgressLogger.h.
References mlrange_cast().
|
inlinevirtual |
Update a progress indicator which shows the message info and the percentage percState.
Does nothing, recommended to be reimplemented by subclasses.
Reimplemented in ml::DirectDicomImportImporterBase, and ml::DICOMFileListFilter.
Definition at line 203 of file mlProgressLogger.h.
If the interruption flag is already set then immediately true is returned.
If not then check for interruption if passed time interval is exceeded (see setCheckTimeIntervalInSeconds to avoid that too many expensive checks are performed), ORs the state to the internal interruption state and returns the state. For interruption checks the method _isStopPressed() is called which always returns false and which therefore should be reimplemented by subclasses.