QGIS API Documentation  2.99.0-Master (7fe5405)
qgsmessageoutput.cpp
Go to the documentation of this file.
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 <QRegExp>
21 
23 {
24  return new QgsMessageOutputConsole;
25 }
26 
27 // default output creator - console
28 MESSAGE_OUTPUT_CREATOR QgsMessageOutput::mMessageOutputCreator = messageOutputConsole_;
29 
30 
32 {
33  mMessageOutputCreator = f;
34 }
35 
37 {
38  return mMessageOutputCreator();
39 }
40 
41 void QgsMessageOutput::showMessage( const QString& title, const QString& message, MessageType msgType )
42 {
44  output->setTitle( title );
45  output->setMessage( message, msgType );
46  output->showMessage();
47 }
48 
50 // QgsMessageOutputConsole
51 
53  : mMessage( QLatin1String( "" ) )
54  , mMsgType( MessageText )
55 {
56 }
57 
58 void QgsMessageOutputConsole::setMessage( const QString& message, MessageType msgType )
59 {
60  mMessage = message;
61  mMsgType = msgType;
62 }
63 
64 void QgsMessageOutputConsole::appendMessage( const QString& message )
65 {
66  mMessage += message;
67 }
68 
70 {
71  if ( mMsgType == MessageHtml )
72  {
73  mMessage.replace( QLatin1String( "<br>" ), QLatin1String( "\n" ) );
74  mMessage.replace( QLatin1String( "&nbsp;" ), QLatin1String( " " ) );
75  mMessage.replace( QRegExp( "</?[^>]+>" ), QLatin1String( "" ) );
76  }
77  QgsMessageLog::logMessage( mMessage, mTitle.isNull() ? QObject::tr( "Console" ) : mTitle );
78  emit destroyed();
79  delete this;
80 }
81 
82 void QgsMessageOutputConsole::setTitle( const QString& title )
83 {
84  mTitle = title;
85 }
86 
static void setMessageOutputCreator(MESSAGE_OUTPUT_CREATOR f)
sets function that will be used to create message output
MessageType
message can be in plain text or in html format
virtual void setTitle(const QString &title)=0
set title for the messages
static QgsMessageOutput * messageOutputConsole_()
static QgsMessageOutput * createMessageOutput()
function that returns new class derived from QgsMessageOutput (don&#39;t forget to delete it then if show...
QgsMessageOutput *(* MESSAGE_OUTPUT_CREATOR)()
Default implementation of message output interface.
virtual void setMessage(const QString &message, MessageType msgType) override
set message, it won&#39;t be displayed until
static void logMessage(const QString &message, const QString &tag=QString::null, MessageLevel level=WARNING)
add a message to the instance (and create it if necessary)
virtual void setMessage(const QString &message, MessageType msgType)=0
set message, it won&#39;t be displayed until
virtual void setTitle(const QString &title) override
set title for the messages
virtual void appendMessage(const QString &message) override
message to be appended to the current text
virtual void showMessage(bool blocking=true)=0
display the message to the user and deletes itself
Interface for showing messages from QGIS in GUI independent way.
void destroyed()
signals that object will be destroyed and shouldn&#39;t be used anymore
virtual void showMessage(bool blocking=true) override
sends the message to the standard output