Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsprocessingparametertininputlayers.h 3 : : --------------------- 4 : : Date : August 2020 5 : : Copyright : (C) 2020 by Vincent Cloarec 6 : : Email : vcloarec 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 : : #ifndef QGSPROCESSINGPARAMETERTININPUTLAYERS_H 17 : : #define QGSPROCESSINGPARAMETERTININPUTLAYERS_H 18 : : 19 : : #include "qgsprocessingparameters.h" 20 : : #include "qgsprocessingparametertype.h" 21 : : 22 : : /** 23 : : * \brief A parameter for processing algorithms that need a list of input vector layers to construct a TIN. 24 : : * 25 : : * A valid value for this parameter is a list (QVariantList), where each item is a map (QVariantMap) in this form: 26 : : * { 27 : : * 'source': string that represents identification of the vector layer, 28 : : * 'type': how the vector layer is used : as vertices, structure lines or break lines 29 : : * 'attributeIndex' : the index of the attribute of the vector layer used to defined the Z value of vertices, 30 : : * if -1, the Z coordinates of features are used 31 : : * } 32 : : * 33 : : * \ingroup core 34 : : * \since QGIS 3.16 35 : : */ 36 : 0 : class CORE_EXPORT QgsProcessingParameterTinInputLayers: public QgsProcessingParameterDefinition 37 : : { 38 : : public: 39 : : 40 : : //! Defines the type of input layer 41 : : enum Type 42 : : { 43 : : Vertices, //!< Input that adds only vertices 44 : : StructureLines, //!< Input that adds add structure lines 45 : : BreakLines //!< Input that adds vertices and break lines 46 : : }; 47 : : 48 : : //! Used to store input layer Id and other associated parameters 49 : : struct InputLayer 50 : : { 51 : : QString source; //!The source of the input layer 52 : : Type type; //!The type of the input layer (see Type) 53 : : int attributeIndex; //! The attribute index used for Z value of vertices 54 : : }; 55 : : 56 : : //! Constructor 57 : : QgsProcessingParameterTinInputLayers( const QString &name, const QString &description = QString() ); 58 : : 59 : : QgsProcessingParameterDefinition *clone() const override; 60 : : QString type() const override; 61 : : bool checkValueIsAcceptable( const QVariant &input, QgsProcessingContext *context = nullptr ) const override; 62 : : QString valueAsPythonString( const QVariant &value, QgsProcessingContext &context ) const override; 63 : : QString asPythonString( QgsProcessing::PythonOutputType outputType = QgsProcessing::PythonQgsProcessingAlgorithmSubclass ) const override; 64 : : 65 : : //! Returns the type name for the parameter class. 66 : 30 : static QString typeName() { return QStringLiteral( "tininputlayers" ); } 67 : : }; 68 : : 69 : : #ifndef SIP_RUN 70 : : ///@cond PRIVATE 71 : : 72 : : /** 73 : : * \brief Parameter type definition for QgsProcessingParameterTinInputLayers. 74 : : * 75 : : * \ingroup core 76 : : * \note This class is not a part of public API. 77 : : * \since QGIS 3.16 78 : : */ 79 : 15 : class CORE_EXPORT QgsProcessingParameterTypeTinInputLayers : public QgsProcessingParameterType 80 : : { 81 : : public: 82 : 0 : QgsProcessingParameterDefinition *create( const QString &name ) const override SIP_FACTORY 83 : : { 84 : 0 : return new QgsProcessingParameterTinInputLayers( name ); 85 : 0 : } 86 : : 87 : 0 : QString description() const override 88 : : { 89 : 0 : return QCoreApplication::translate( "Processing", "An input allowing selection of multiple layers to create a TIN with vertices and/or break lines" ); 90 : : } 91 : : 92 : 0 : QString name() const override 93 : : { 94 : 0 : return QCoreApplication::translate( "Processing", "TIN Creation Layers" ); 95 : : } 96 : : 97 : 15 : QString id() const override 98 : : { 99 : 15 : return QgsProcessingParameterTinInputLayers::typeName(); 100 : : } 101 : : 102 : 0 : QString pythonImportString() const override 103 : : { 104 : 0 : return QStringLiteral( "from qgis.core import QgsProcessingParameterTinInputLayers" ); 105 : : } 106 : : 107 : 0 : QString className() const override 108 : : { 109 : 0 : return QStringLiteral( "QgsProcessingParameterTinInputLayers" ); 110 : : } 111 : : 112 : 0 : QStringList acceptedPythonTypes() const override 113 : : { 114 : 0 : return QStringList() << QObject::tr( "list[dict]: list of input layers as dictionaries, see QgsProcessingParameterTinInputLayers docs" ); 115 : 0 : } 116 : : }; 117 : : 118 : : ///@endcond 119 : : #endif 120 : : 121 : : #endif // QGSPROCESSINGPARAMETERTININPUTLAYERS_H