diff --git a/src/Base/Console.cpp b/src/Base/Console.cpp index 7c5c82535..197594364 100644 --- a/src/Base/Console.cpp +++ b/src/Base/Console.cpp @@ -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::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) + for(std::set::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::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) + for(std::set::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::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) + for(std::set::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::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) + for(std::set::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::iterator Iter=_aclObservers.begin();Iter!=_aclObservers.end();Iter++) - { + for(std::set::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)"); diff --git a/src/Base/Console.h b/src/Base/Console.h index b51183b13..8b2e04eac 100644 --- a/src/Base/Console.h +++ b/src/Base/Console.h @@ -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[];