Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgserror.h - Error container 3 : : ------------------- 4 : : begin : October 2012 5 : : copyright : (C) 2012 Radim Blazek 6 : : email : radim dot blazek at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : #ifndef QGSERROR_H 18 : : #define QGSERROR_H 19 : : 20 : : #include <QString> 21 : : #include <QList> 22 : : 23 : : #include "qgis_core.h" 24 : : 25 : : // Macro to create Error message including info about where it was created. 26 : : #define QGS_ERROR_MESSAGE(message, tag) QgsErrorMessage(QString(message),QString(tag), QString(__FILE__), QString(__FUNCTION__), __LINE__) 27 : : 28 : : /** 29 : : * \ingroup core 30 : : * \brief QgsErrorMessage represents single error message. 31 : : */ 32 : 0 : class CORE_EXPORT QgsErrorMessage 33 : : { 34 : : public: 35 : : //! Format 36 : : enum Format 37 : : { 38 : : Text, // Plain text 39 : : Html 40 : : }; 41 : : 42 : : //! Constructor for QgsErrorMessage 43 : : QgsErrorMessage() = default; 44 : : 45 : : /** 46 : : * Constructor. 47 : : * \param message error message string 48 : : * \param tag error label, for example GDAL, GDAL Provider, Raster layer 49 : : * \param file the file where error was created 50 : : * \param function the function where error was created 51 : : * \param line the line where error was created 52 : : */ 53 : : QgsErrorMessage( const QString &message, const QString &tag = QString(), const QString &file = QString(), const QString &function = QString(), int line = 0 ); 54 : : 55 : 0 : QString message() const { return mMessage; } 56 : 0 : QString tag() const { return mTag; } 57 : : QString file() const { return mFile; } 58 : : QString function() const { return mFunction; } 59 : : int line() const { return mLine; } 60 : : 61 : : private: 62 : : //! Error messages 63 : : QString mMessage; 64 : : 65 : : //! Short description 66 : : QString mTag; 67 : : 68 : : //! Detailed debug info 69 : : QString mFile; 70 : : QString mFunction; 71 : : int mLine = 0; 72 : : }; 73 : : 74 : : /** 75 : : * \ingroup core 76 : : * \brief QgsError is container for error messages (report). It may contain chain 77 : : * (sort of traceback) of error messages (e.g. GDAL - provider - layer). 78 : : * Higher level messages are appended at the end. 79 : : */ 80 : 127 : class CORE_EXPORT QgsError 81 : : { 82 : : public: 83 : : 84 : : //! Constructor for QgsError 85 : 161 : QgsError() = default; 86 : : 87 : : /** 88 : : * Constructor with single message. 89 : : * \param message error message 90 : : * \param tag short description, e.g. GDAL, Provider, Layer 91 : : */ 92 : : QgsError( const QString &message, const QString &tag ); 93 : : 94 : : /** 95 : : * Append new error message. 96 : : * \param message error message string 97 : : * \param tag error label, for example GDAL, GDAL Provider, Raster layer 98 : : */ 99 : : void append( const QString &message, const QString &tag ); 100 : : 101 : : /** 102 : : * Append new error message. 103 : : * \param message error message 104 : : */ 105 : : void append( const QgsErrorMessage &message ); 106 : : 107 : : /** 108 : : * Test if any error is set. 109 : : * \returns TRUE if contains error 110 : : */ 111 : 0 : bool isEmpty() const { return mMessageList.isEmpty(); } 112 : : 113 : : /** 114 : : * Full error messages description 115 : : * \param format output format 116 : : * \returns error report 117 : : */ 118 : : QString message( QgsErrorMessage::Format format = QgsErrorMessage::Html ) const; 119 : : 120 : : /** 121 : : * Short error description, usually the first error in chain, the real error. 122 : : * \returns error description 123 : : */ 124 : : QString summary() const; 125 : : 126 : : //! Clear error messages 127 : : void clear() { mMessageList.clear(); } 128 : : 129 : : /** 130 : : * \brief messageList return the list of current error messages 131 : : * \return current list of error messages 132 : : */ 133 : : QList<QgsErrorMessage> messageList() const { return mMessageList; } 134 : : 135 : : 136 : : #ifdef SIP_RUN 137 : : SIP_PYOBJECT __repr__(); 138 : : % MethodCode 139 : : QString str = QStringLiteral( "<QgsError: %1>" ).arg( sipCpp->message( QgsErrorMessage::Text ) ); 140 : : sipRes = PyUnicode_FromString( str.toUtf8().constData() ); 141 : : % End 142 : : #endif 143 : : 144 : : private: 145 : : //! List of messages 146 : : QList<QgsErrorMessage> mMessageList; 147 : : }; 148 : : 149 : : #endif