1 /***************************************************************************
2     qgsmessageoutput.h  -  interface for showing messages
3     ----------------------
4     begin                : April 2006
5     copyright            : (C) 2006 by Martin Dobias
6     email                : wonder.sk at gmail dot com
7  ***************************************************************************
8  *                                                                         *
9  *   This program is free software; you can redistribute it and/or modify  *
10  *   it under the terms of the GNU General Public License as published by  *
11  *   the Free Software Foundation; either version 2 of the License, or     *
12  *   (at your option) any later version.                                   *
13  *                                                                         *
14  ***************************************************************************/
15 
16 #include "qgsmessageoutput.h"
17 #include "qgslogger.h"
18 #include "qgsmessagelog.h"
19 
20 #include <QRegularExpression>
21 
messageOutputConsole_()22 static QgsMessageOutput *messageOutputConsole_()
23 {
24   return new QgsMessageOutputConsole;
25 }
26 
27 // default output creator - console
28 MESSAGE_OUTPUT_CREATOR QgsMessageOutput::mMessageOutputCreator = messageOutputConsole_;
29 
30 
setMessageOutputCreator(MESSAGE_OUTPUT_CREATOR f)31 void QgsMessageOutput::setMessageOutputCreator( MESSAGE_OUTPUT_CREATOR f )
32 {
33   mMessageOutputCreator = f;
34 }
35 
createMessageOutput()36 QgsMessageOutput *QgsMessageOutput::createMessageOutput()
37 {
38   return mMessageOutputCreator();
39 }
40 
showMessage(const QString & title,const QString & message,MessageType msgType)41 void QgsMessageOutput::showMessage( const QString &title, const QString &message, MessageType msgType )
42 {
43   QgsMessageOutput *output = QgsMessageOutput::createMessageOutput();
44   output->setTitle( title );
45   output->setMessage( message, msgType );
46   output->showMessage();
47 }
48 
49 ////////////////////////////////
50 // QgsMessageOutputConsole
51 
setMessage(const QString & message,MessageType msgType)52 void QgsMessageOutputConsole::setMessage( const QString &message, MessageType msgType )
53 {
54   mMessage = message;
55   mMsgType = msgType;
56 }
57 
appendMessage(const QString & message)58 void QgsMessageOutputConsole::appendMessage( const QString &message )
59 {
60   mMessage += message;
61 }
62 
showMessage(bool)63 void QgsMessageOutputConsole::showMessage( bool )
64 {
65   if ( mMsgType == MessageHtml )
66   {
67     mMessage.replace( QLatin1String( "<br>" ), QLatin1String( "\n" ) );
68     mMessage.replace( QLatin1String( "&nbsp;" ), QLatin1String( " " ) );
69     mMessage.replace( QRegularExpression( "</?[^>]+>" ), QString() );
70   }
71   QgsMessageLog::logMessage( mMessage, mTitle.isNull() ? QObject::tr( "Console" ) : mTitle );
72   emit destroyed();
73   delete this;
74 }
75 
setTitle(const QString & title)76 void QgsMessageOutputConsole::setTitle( const QString &title )
77 {
78   mTitle = title;
79 }
80 
81