X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaMessageManager.h;h=54dd93efcc954ff73cb1f9b7b81cf5397b4809b1;hb=9e7201b8488e634387f2ca91821f9964bbddc2ca;hp=9fbaae5be932bca8f282d99d4422039481da9c90;hpb=7afa3ebd8c9f99468d8de5683978bf602ffac4cb;p=crea.git diff --git a/src/creaMessageManager.h b/src/creaMessageManager.h index 9fbaae5..54dd93e 100644 --- a/src/creaMessageManager.h +++ b/src/creaMessageManager.h @@ -1,3 +1,30 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + /*! \file \brief Class creaMessageManager and Macros for outputing messages in crea There are 4 kinds of messages : @@ -34,6 +61,7 @@ \brief Manages the messages displayed by crea */ + #ifndef __creaMessageManager_h__ #define __creaMessageManager_h__ @@ -42,12 +70,64 @@ #include "creaSystem.h" #include "creaRTTI.h" // for CREA_GET_CURRENT_OBJECT_NAME // Signal/slot mechanism for message events -#include +#include #include #include #include #include #include + + + +namespace crea +{ + class CREA_EXPORT MessageManager + { + public: + //============================================= + typedef boost::signals2::signal MessageSignalType; + typedef MessageSignalType::slot_function_type MessageCallbackType; + //============================================= + MessageManager(); + ~MessageManager(); + static MessageManager* GetInstance(); + static void RegisterMessageType(const std::string& key, + const std::string& help, + unsigned char default_level = 9); + static void SetMessageLevel(const std::string& key, unsigned char level); + static int GetMessageLevel(const std::string& key); + static void HSendMessage(const std::string& key, const std::string& mess); + static void AddMessageObserver(const std::string& key, MessageCallbackType callback ); + static void SendMessagesToCout(bool v = true); + static std::string& GetTab() { static std::string s; return s; } + static std::string GetSpace(int n) { std::string s; s.insert(0," ",n); return s; } + static void IncTab() { GetTab() += std::string(" "); } + static void DecTab() { GetTab() = GetTab().substr(0,GetTab().length()-1); } + static void ResetTab() { GetTab() = std::string(""); } + static void PrintInfo(); +private: + struct MessageType + { + MessageType(int l, const std::string& h) : Level(l), Help(h) {} + int Level; + std::string Help; + MessageSignalType Signal; + }; + typedef std::map MessageMapType; + MessageMapType mMessageMap; + unsigned int mMaxMessageLength; + bool mSendToCout; + }; + //=========================================================== +} + + + + + + + + // Comment out these symbols to prevent compilation //#define CREA_COMPILE_MESSAGES //#define CREA_COMPILE_DEBUG_MESSAGES @@ -102,7 +182,7 @@ << creaMessageTab \ << creaMessageSpace(value) \ << MESSAGE; \ - crea::MessageManager::SendMessage(key,s.str()); \ + crea::MessageManager::HSendMessage(key,s.str()); \ } \ } \ while (0) @@ -118,7 +198,7 @@ { \ std::ostringstream s; \ s << MESSAGE; \ - crea::MessageManager::SendMessage(key,s.str()); \ + crea::MessageManager::HSendMessage(key,s.str()); \ } \ } \ while (0) @@ -132,7 +212,7 @@ << creaMessageTab \ << creaMessageSpace(value) \ << MESSAGE; \ - crea::MessageManager::SendMessage(key,s.str()); \ + crea::MessageManager::HSendMessage(key,s.str()); \ crea::MessageManager::IncTab(); \ } \ } \ @@ -150,7 +230,7 @@ << creaMessageTab \ << creaMessageSpace(value) \ << MESSAGE; \ - crea::MessageManager::SendMessage(key,s.str()); \ + crea::MessageManager::HSendMessage(key,s.str()); \ } \ } \ while (0) @@ -347,127 +427,6 @@ -namespace crea - -{ - - - - class CREA_EXPORT MessageManager - - { - - public: - - //============================================= - - typedef boost::signal MessageSignalType; - - typedef MessageSignalType::slot_function_type MessageCallbackType; - - //============================================= - - /// - - MessageManager(); - - /// - - ~MessageManager(); - - /// - - static MessageManager* GetInstance(); - - /// - - static void RegisterMessageType(const std::string& key, - - const std::string& help, - - unsigned char default_level = 9); - - /// - - static void SetMessageLevel(const std::string& key, unsigned char level); - - /// - - static int GetMessageLevel(const std::string& key); - - /// - - static void SendMessage(const std::string& key, const std::string& mess); - - /// - - static void AddMessageObserver(const std::string& key, MessageCallbackType callback ); - - /// - - static void SendMessagesToCout(bool v = true); - - /// - - static std::string& GetTab() { static std::string s; return s; } - - /// - - static std::string GetSpace(int n) { - - std::string s; s.insert(0," ",n); return s; } - - /// - - static void IncTab() { GetTab() += std::string(" "); } - - /// - - static void DecTab() { GetTab() = GetTab().substr(0,GetTab().length()-1); } - - /// - - static void ResetTab() { GetTab() = std::string(""); } - - /// - - static void PrintInfo(); - - /// - - - - private: - - struct MessageType - - { - - MessageType(int l, const std::string& h) : Level(l), Help(h) {} - - int Level; - - std::string Help; - - MessageSignalType Signal; - - }; - - typedef std::map MessageMapType; - - MessageMapType mMessageMap; - - unsigned int mMaxMessageLength; - - bool mSendToCout; - - }; - - //=========================================================== - - - -}