Branch data Line data Source code
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 : : 17 : : #ifndef QGSMESSAGEOUTPUT_H 18 : : #define QGSMESSAGEOUTPUT_H 19 : : 20 : : #include <QString> 21 : : #include "qgis_sip.h" 22 : : #include <QObject> 23 : : 24 : : #include "qgis_core.h" 25 : : 26 : : class QgsMessageOutput; 27 : : typedef QgsMessageOutput *( *MESSAGE_OUTPUT_CREATOR )() SIP_SKIP; 28 : : 29 : : 30 : : /** 31 : : * \ingroup core 32 : : * \brief Interface for showing messages from QGIS in GUI independent way. 33 : : * 34 : : * This class provides abstraction of a dialog for showing output to the user. 35 : : * By default QgsMessageConsoleOutput will be used if not overridden with other 36 : : * message output creator function. 37 : : 38 : : * QGIS application uses QgsMessageView class for displaying a dialog to the user. 39 : : 40 : : * Object deletes itself when it's not needed anymore. Children should use 41 : : * signal destroyed() to notify the deletion 42 : : */ 43 : 3 : class CORE_EXPORT QgsMessageOutput 44 : : { 45 : : public: 46 : : 47 : : //! message can be in plain text or in html format 48 : : enum MessageType { MessageText, MessageHtml }; 49 : : 50 : 0 : virtual ~QgsMessageOutput() = default; 51 : : 52 : : //! Sets message, it won't be displayed until 53 : : virtual void setMessage( const QString &message, MessageType msgType ) = 0; 54 : : 55 : : //! message to be appended to the current text 56 : : virtual void appendMessage( const QString &message ) = 0; 57 : : 58 : : //! Sets title for the messages 59 : : virtual void setTitle( const QString &title ) = 0; 60 : : 61 : : //! display the message to the user and deletes itself 62 : : virtual void showMessage( bool blocking = true ) = 0; 63 : : 64 : : /** 65 : : * Display the blocking message to the user. 66 : : * \since QGIS 2.10 67 : : */ 68 : : static void showMessage( const QString &title, const QString &message, MessageType msgType ); 69 : : 70 : : // TODO: implementation where Python class could be passed 71 : : 72 : : /** 73 : : * sets function that will be used to create message output 74 : : * \note not available in Python bindings 75 : : */ 76 : : static void setMessageOutputCreator( MESSAGE_OUTPUT_CREATOR f ) SIP_SKIP; 77 : : 78 : : /** 79 : : * function that returns new class derived from QgsMessageOutput 80 : : * (don't forget to delete it then if showMessage(bool) is not used showMessage(bool) deletes the instance) 81 : : */ 82 : : static QgsMessageOutput *createMessageOutput(); 83 : : 84 : : private: 85 : : 86 : : //! Pointer to the function which creates the class for output 87 : : static MESSAGE_OUTPUT_CREATOR mMessageOutputCreator; 88 : : }; 89 : : 90 : : 91 : : /** 92 : : * \ingroup core 93 : : * \brief Default implementation of message output interface 94 : : * 95 : : * This class outputs messages to the standard output. Therefore it might 96 : : * be the right choice for apps without GUI. 97 : : */ 98 : : class CORE_EXPORT QgsMessageOutputConsole : public QObject, public QgsMessageOutput 99 : : { 100 : : Q_OBJECT 101 : : 102 : : public: 103 : : 104 : : /** 105 : : * Constructor for QgsMessageOutputConsole. 106 : : */ 107 : 3 : QgsMessageOutputConsole() = default; 108 : : 109 : : void setMessage( const QString &message, MessageType msgType ) override; 110 : : 111 : : void appendMessage( const QString &message ) override; 112 : : 113 : : void setTitle( const QString &title ) override; 114 : : 115 : : //! sends the message to the standard output 116 : : void showMessage( bool blocking = true ) override; 117 : : 118 : : signals: 119 : : 120 : : //! signals that object will be destroyed and shouldn't be used anymore 121 : : void destroyed(); 122 : : 123 : : private: 124 : : 125 : : //! stores current message 126 : : QString mMessage; 127 : : 128 : : //! stores current title 129 : : QString mTitle; 130 : : 131 : 3 : MessageType mMsgType = MessageText; 132 : : }; 133 : : 134 : : #endif