Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutinterface.h 3 : : -------------------- 4 : : begin : December 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : /*************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGSLAYOUTINTERFACE_H 17 : : #define QGSLAYOUTINTERFACE_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : #include <QString> 22 : : #include <QIcon> 23 : : #include <QDomElement> 24 : : 25 : : class QgsProject; 26 : : class QgsReadWriteContext; 27 : : class QgsStyleEntityVisitorInterface; 28 : : 29 : : #ifdef SIP_RUN 30 : : % ModuleHeaderCode 31 : : #include "qgsprintlayout.h" 32 : : #include "qgsreport.h" 33 : : % End 34 : : #endif 35 : : 36 : : /** 37 : : * \ingroup core 38 : : * \class QgsMasterLayoutInterface 39 : : * \brief Interface for master layout type objects, such as print layouts and reports. 40 : : * \since QGIS 3.0 41 : : */ 42 : 0 : class CORE_EXPORT QgsMasterLayoutInterface 43 : : { 44 : : 45 : : #ifdef SIP_RUN 46 : : SIP_CONVERT_TO_SUBCLASS_CODE 47 : : switch ( sipCpp->layoutType() ) 48 : : { 49 : : case QgsMasterLayoutInterface::PrintLayout: 50 : : sipType = sipType_QgsPrintLayout; 51 : : *sipCppRet = static_cast<QgsPrintLayout *>( sipCpp ); 52 : : break; 53 : : case QgsMasterLayoutInterface::Report: 54 : : *sipCppRet = static_cast<QgsReport *>( sipCpp ); 55 : : sipType = sipType_QgsReport; 56 : : break; 57 : : default: 58 : : sipType = NULL; 59 : : } 60 : : SIP_END 61 : : #endif 62 : : 63 : : public: 64 : : 65 : : //! Master layout type 66 : : enum Type 67 : : { 68 : : PrintLayout = 0, //!< Individual print layout (QgsPrintLayout) 69 : : Report = 1, //!< Report (QgsReport) 70 : : }; 71 : : 72 : 0 : virtual ~QgsMasterLayoutInterface() = default; 73 : : 74 : : /** 75 : : * Creates a clone of the layout. Ownership of the returned layout 76 : : * is transferred to the caller. 77 : : */ 78 : : virtual QgsMasterLayoutInterface *clone() const = 0 SIP_FACTORY; 79 : : 80 : : /** 81 : : * Returns the master layout type. 82 : : */ 83 : : virtual QgsMasterLayoutInterface::Type layoutType() const = 0; 84 : : 85 : : /** 86 : : * Returns the layout's name. 87 : : * \see setName() 88 : : */ 89 : : virtual QString name() const = 0; 90 : : 91 : : /** 92 : : * Returns an icon for the layout. 93 : : */ 94 : : virtual QIcon icon() const = 0; 95 : : 96 : : /** 97 : : * Sets the layout's name. 98 : : * \see name() 99 : : */ 100 : : virtual void setName( const QString &name ) = 0; 101 : : 102 : : /** 103 : : * The project associated with the layout. Used to get access to layers, map themes, 104 : : * relations and various other bits. It is never NULLPTR. 105 : : */ 106 : : virtual QgsProject *layoutProject() const = 0; 107 : : 108 : : /** 109 : : * Returns the layout's state encapsulated in a DOM element. 110 : : * \see readLayoutXml() 111 : : */ 112 : : virtual QDomElement writeLayoutXml( QDomDocument &document, const QgsReadWriteContext &context ) const = 0; 113 : : 114 : : /** 115 : : * Sets the layout's state from a DOM element. \a layoutElement is the DOM node corresponding to the layout. 116 : : * \see writeLayoutXml() 117 : : */ 118 : : virtual bool readLayoutXml( const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context ) = 0; 119 : : 120 : : /** 121 : : * Refreshes the layout when global layout related options change. 122 : : */ 123 : : virtual void updateSettings() = 0; 124 : : 125 : : /** 126 : : * Accepts the specified style entity \a visitor, causing it to visit all style entities associated 127 : : * with the layout. 128 : : * 129 : : * Returns TRUE if the visitor should continue visiting other objects, or FALSE if visiting 130 : : * should be canceled. 131 : : * 132 : : * \since QGIS 3.10 133 : : */ 134 : 0 : virtual bool layoutAccept( QgsStyleEntityVisitorInterface *visitor ) const { Q_UNUSED( visitor ); return true; } 135 : : 136 : : }; 137 : : 138 : : #endif //QGSLAYOUTINTERFACE_H 139 : : 140 : : 141 : :