Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsprocessingmodelcomponent.h 3 : : ----------------------------- 4 : : begin : June 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson 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 : : 18 : : #ifndef QGSPROCESSINGMODELCOMPONENT_H 19 : : #define QGSPROCESSINGMODELCOMPONENT_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgis.h" 23 : : #include <QPointF> 24 : : #include <QSizeF> 25 : : #include <QColor> 26 : : 27 : : class QgsProcessingModelComment; 28 : : 29 : : ///@cond NOT_STABLE 30 : : 31 : : /** 32 : : * \brief Represents a component of a model algorithm. 33 : : * \ingroup core 34 : : * \since QGIS 3.0 35 : : */ 36 : : class CORE_EXPORT QgsProcessingModelComponent 37 : : { 38 : : public: 39 : : 40 : 0 : virtual ~QgsProcessingModelComponent() = default; 41 : : 42 : : /** 43 : : * Returns the friendly description text for the component. 44 : : * \see setDescription() 45 : : */ 46 : : QString description() const; 47 : : 48 : : /** 49 : : * Sets the friendly \a description text for the component. 50 : : * \see description() 51 : : */ 52 : : void setDescription( const QString &description ); 53 : : 54 : : /** 55 : : * Returns the position of the model component within the graphical modeler. 56 : : * \see setPosition() 57 : : */ 58 : : QPointF position() const; 59 : : 60 : : /** 61 : : * Sets the \a position of the model component within the graphical modeler. 62 : : * \see position() 63 : : */ 64 : : void setPosition( QPointF position ); 65 : : 66 : : /** 67 : : * Returns the size of the model component within the graphical modeler. 68 : : * \see setSize() 69 : : * \since QGIS 3.14 70 : : */ 71 : : QSizeF size() const; 72 : : 73 : : /** 74 : : * Sets the \a size of the model component within the graphical modeler. 75 : : * \see size() 76 : : * \since QGIS 3.14 77 : : */ 78 : : void setSize( QSizeF size ); 79 : : 80 : : /** 81 : : * Returns the color of the model component within the graphical modeler. 82 : : * 83 : : * An invalid color indicates that the default color for the component should be used. 84 : : * 85 : : * \see setColor() 86 : : * \since QGIS 3.14 87 : : */ 88 : : QColor color() const; 89 : : 90 : : /** 91 : : * Sets the \a color of the model component within the graphical modeler. An invalid \a color 92 : : * indicates that the default color for the component should be used. 93 : : * 94 : : * \see color() 95 : : * \since QGIS 3.14 96 : : */ 97 : : void setColor( const QColor &color ); 98 : : 99 : : /** 100 : : * Returns TRUE if the link points for the specified \a edge should be shown collapsed or not. 101 : : * \see setLinksCollapsed() 102 : : */ 103 : : bool linksCollapsed( Qt::Edge edge ) const; 104 : : 105 : : /** 106 : : * Sets whether the link points for the specified \a edge for this component should be shown collapsed 107 : : * in the graphical modeler. 108 : : * \see linksCollapsed() 109 : : */ 110 : : void setLinksCollapsed( Qt::Edge edge, bool collapsed ); 111 : : 112 : : /** 113 : : * Returns the comment attached to this component (may be NULLPTR) 114 : : * \see setComment() 115 : : */ 116 : 0 : SIP_SKIP virtual const QgsProcessingModelComment *comment() const { return nullptr; } 117 : : 118 : : /** 119 : : * Returns the comment attached to this component (may be NULLPTR) 120 : : * \see setComment() 121 : : */ 122 : 0 : virtual QgsProcessingModelComment *comment() { return nullptr; } 123 : : 124 : : /** 125 : : * Sets the \a comment attached to this component. 126 : : * \see comment() 127 : : */ 128 : : virtual void setComment( const QgsProcessingModelComment &comment ); 129 : : 130 : : /** 131 : : * Clones the component. 132 : : * 133 : : * Ownership is transferred to the caller. 134 : : */ 135 : : virtual QgsProcessingModelComponent *clone() const = 0 SIP_FACTORY; 136 : : 137 : : protected: 138 : : 139 : : //! Only subclasses can be created 140 : : QgsProcessingModelComponent( const QString &description = QString() ); 141 : : 142 : : //! Copies are protected to avoid slicing 143 : 0 : QgsProcessingModelComponent( const QgsProcessingModelComponent &other ) = default; 144 : : 145 : : //! Copies are protected to avoid slicing 146 : 0 : QgsProcessingModelComponent &operator=( const QgsProcessingModelComponent &other ) = default; 147 : : 148 : : /** 149 : : * Saves the component properties to a QVariantMap. 150 : : * \see restoreCommonProperties() 151 : : */ 152 : : void saveCommonProperties( QVariantMap &map ) const; 153 : : 154 : : /** 155 : : * Restores the component properties from a QVariantMap. 156 : : * \see saveCommonProperties() 157 : : */ 158 : : void restoreCommonProperties( const QVariantMap &map ); 159 : : 160 : : /** 161 : : * Copies all non-specific definition properties from the \a other component definition. 162 : : * 163 : : * This includes properties like the size and position of the component, but not properties 164 : : * like the specific algorithm or input details. 165 : : * 166 : : * \since QGIS 3.14 167 : : */ 168 : : void copyNonDefinitionProperties( const QgsProcessingModelComponent &other ); 169 : : 170 : : private: 171 : : 172 : : static constexpr double DEFAULT_COMPONENT_WIDTH = 200; 173 : : static constexpr double DEFAULT_COMPONENT_HEIGHT = 30; 174 : : 175 : : //! Position of component within model 176 : : QPointF mPosition; 177 : : 178 : : QString mDescription; 179 : : 180 : : QSizeF mSize = QSizeF( DEFAULT_COMPONENT_WIDTH, DEFAULT_COMPONENT_HEIGHT ); 181 : : QColor mColor; 182 : : 183 : : bool mTopEdgeLinksCollapsed = true; 184 : : bool mBottomEdgeLinksCollapsed = true; 185 : : 186 : : }; 187 : : 188 : : ///@endcond 189 : : 190 : : #endif // QGSPROCESSINGMODELCOMPONENT_H