Add method to check if console mode is on/off

This commit is contained in:
wmayer 2013-07-23 13:27:02 +02:00
parent 42b06e48a8
commit ba21383e0c
2 changed files with 41 additions and 14 deletions

View File

@ -133,6 +133,28 @@ ConsoleMsgFlags ConsoleSingleton::SetEnabledMsgType(const char* sObs, ConsoleMsg
}
}
bool ConsoleSingleton::IsMsgTypeEnabled(const char* sObs, FreeCAD_ConsoleMsgType type) const
{
ConsoleObserver* pObs = Get(sObs);
if (pObs) {
switch (type) {
case MsgType_Txt:
return pObs->bMsg;
case MsgType_Log:
return pObs->bLog;
case MsgType_Wrn:
return pObs->bWrn;
case MsgType_Err:
return pObs->bErr;
default:
return false;
}
}
else {
return false;
}
}
/** Prints a Message
* This method issues a Message.
* Messages are used show some non vital information. That means in the
@ -207,7 +229,7 @@ void ConsoleSingleton::Error( const char *pMsg, ... )
/** Prints a Message
* this method is more for devlopment and tracking purpos.
* It can be used to track execution of algorithems and functions
* It can be used to track execution of algorithms and functions
* and put it in files. The normal user dont need to see it, its more
* for developers and experinced users. So in normal user modes the
* logging is switched of.
@ -282,37 +304,40 @@ void ConsoleSingleton::DetachObserver(ConsoleObserver *pcObserver)
void ConsoleSingleton::NotifyMessage(const char *sMsg)
{
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++)
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) {
if((*Iter)->bMsg)
(*Iter)->Message(sMsg); // send string to the listener
}
}
void ConsoleSingleton::NotifyWarning(const char *sMsg)
{
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++)
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) {
if((*Iter)->bWrn)
(*Iter)->Warning(sMsg); // send string to the listener
}
}
void ConsoleSingleton::NotifyError(const char *sMsg)
{
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++)
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) {
if((*Iter)->bErr)
(*Iter)->Error(sMsg); // send string to the listener
}
}
void ConsoleSingleton::NotifyLog(const char *sMsg)
{
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++)
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) {
if((*Iter)->bLog)
(*Iter)->Log(sMsg); // send string to the listener
}
}
ConsoleObserver *ConsoleSingleton::Get(const char *Name)
ConsoleObserver *ConsoleSingleton::Get(const char *Name) const
{
const char* OName;
for(std::set<ConsoleObserver * >::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++)
{
for(std::set<ConsoleObserver * >::const_iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) {
OName = (*Iter)->Name(); // get the name
if(OName && strcmp(OName,Name) == 0)
return *Iter;
@ -539,13 +564,13 @@ PyObject *ConsoleSingleton::sPySetStatus(PyObject * /*self*/, PyObject *args, Py
if(pObs)
{
if(strcmp(pstr2,"Log") == 0)
pObs->bLog = (Bool==0)?false:true;
pObs->bLog = (Bool==0)?false:true;
else if(strcmp(pstr2,"Wrn") == 0)
pObs->bWrn = (Bool==0)?false:true;
pObs->bWrn = (Bool==0)?false:true;
else if(strcmp(pstr2,"Msg") == 0)
pObs->bMsg = (Bool==0)?false:true;
pObs->bMsg = (Bool==0)?false:true;
else if(strcmp(pstr2,"Err") == 0)
pObs->bErr = (Bool==0)?false:true;
pObs->bErr = (Bool==0)?false:true;
else
Py_Error(PyExc_Exception,"Unknown Message Type (use Log,Err,Msg or Wrn)");

View File

@ -56,7 +56,7 @@ class ConsoleSingleton;
typedef Base::ConsoleSingleton ConsoleMsgType;
typedef unsigned int ConsoleMsgFlags;
namespace Base {
/** The console observer class
@ -141,12 +141,14 @@ public:
void UnsetMode(ConsoleMode m);
/// Enables or disables message types of a cetain console observer
ConsoleMsgFlags SetEnabledMsgType(const char* sObs, ConsoleMsgFlags type, bool b);
/// Enables or disables message types of a cetain console observer
bool IsMsgTypeEnabled(const char* sObs, FreeCAD_ConsoleMsgType type) const;
/// singleton
static ConsoleSingleton &Instance(void);
// retrieval of an observer by name
ConsoleObserver *Get(const char *Name);
ConsoleObserver *Get(const char *Name) const;
static PyMethodDef Methods[];