Salome HOME
updated copyright message
[modules/gui.git] / src / Qtx / QtxMsgHandler.cxx
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 #include "QtxMsgHandler.h"
24
25 /*!
26   \brief Custom Qt messages handler.
27   
28   To install message handler use qInstallMessageHandler() function:
29
30   \code
31   #include <QtxMsgHandler.h>
32   qInstallMessageHandler(QtxMsgHandler);
33   \code
34
35   To process Qt message implement a callback class by inheriting from
36   QtxMsgHandlerCallback and override its qtMessage() function.
37
38   \sa QtxMsgHandlerCallback
39 */
40 void QtxMsgHandler(QtMsgType type, const QMessageLogContext& context, const QString& message)
41 {
42   foreach(QtxMsgHandlerCallback* callback, QtxMsgHandlerCallback::callbacks)
43   {
44     callback->qtMessage( type, context, message );
45   }
46 }
47
48 /*!
49   \class QtxMsgHandlerCallback
50   \brief A callback object to handle Qt messages.
51
52   The QtxMsgHandlerCallback class works in conjunction with QtxMsgHandler()
53   function which is a message handler itself. 
54
55   Implement your own callback class by inheriting from QtxMsgHandlerCallback
56   and override its qtMessage() function. Default implementation does nothing.
57
58   \sa QtxMsgHandler()
59 */
60
61 QList<QtxMsgHandlerCallback*> QtxMsgHandlerCallback::callbacks;
62
63 /*!
64   \brief Create new callback instance and activate it \a on is \c true.
65   \param on Automatically activate callback on creation. Defaults to \c true.
66   \sa activate()
67 */
68 QtxMsgHandlerCallback::QtxMsgHandlerCallback(bool on)
69 {
70   if ( on )
71     activate();
72 }
73
74 /*!
75   \brief Deactivate and destroy callback instance.
76   \sa deactivate()
77 */
78 QtxMsgHandlerCallback::~QtxMsgHandlerCallback()
79 {
80   deactivate();
81 }
82
83 /*!
84   \brief Activate this callback instance in the message handler.
85   \sa deactivate()
86 */
87 void QtxMsgHandlerCallback::activate()
88 {
89   if ( !callbacks.contains( this ) )
90     callbacks.push_back( this );
91 }
92
93 /*!
94   \brief Deactivate this callback instance from the message handler.
95   \sa activate()
96 */
97 void QtxMsgHandlerCallback::deactivate()
98 {
99   if ( callbacks.contains( this ) )
100     callbacks.removeAll( this );
101 }
102
103 /*!
104   \brief This function is called when a new Qt message is reported.
105
106   Override this method in your custom callback class to handle Qt
107   messages.
108
109   Default implementation does nothing.
110
111   \param type Qt message type.
112   \param context Message context.
113   \param message Message text.
114 */
115 void QtxMsgHandlerCallback::qtMessage(QtMsgType /*type*/,
116                                       const QMessageLogContext& /*context*/,
117                                       const QString& /*message*/)
118 {
119 }