Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsprocessingparametervectortilewriterlayers.h 3 : : --------------------- 4 : : Date : April 2020 5 : : Copyright : (C) 2020 by Martin Dobias 6 : : Email : wonder dot 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 : : #ifndef QGSPROCESSINGPARAMETERVECTORTILEWRITERLAYERS_H 17 : : #define QGSPROCESSINGPARAMETERVECTORTILEWRITERLAYERS_H 18 : : 19 : : #include "qgsprocessingparameters.h" 20 : : #include "qgsprocessingparametertype.h" 21 : : #include "qgsvectortilewriter.h" 22 : : 23 : : 24 : : /** 25 : : * \brief A parameter for processing algorithms that need a list of input vector layers for writing 26 : : * of vector tiles - this parameter provides processing framework's adapter for QList<QgsVectorTileWriter::Layer>. 27 : : * 28 : : * A valid value for this parameter is a list (QVariantList), where each item is a map (QVariantMap) in this form: 29 : : * { 30 : : * 'layer': string or QgsMapLayer, 31 : : * // key-value pairs below are optional 32 : : * 'layerName': string, 33 : : * 'filterExpression': string, 34 : : * 'minZoom': int, 35 : : * 'maxZoom': int 36 : : * } 37 : : * 38 : : * Static functions parametersAsLayers(), variantMapAsLayer(), layerAsVariantMap() provide conversion between 39 : : * QgsVectorTileWriter::Layer representation and QVariant representation. 40 : : * 41 : : * \ingroup core 42 : : * \since QGIS 3.14 43 : : */ 44 : 0 : class CORE_EXPORT QgsProcessingParameterVectorTileWriterLayers : public QgsProcessingParameterDefinition 45 : : { 46 : : public: 47 : : //! Constructor for QgsProcessingParameterVectorTileWriterLayers. 48 : : QgsProcessingParameterVectorTileWriterLayers( const QString &name, const QString &description = QString() ); 49 : : 50 : : QgsProcessingParameterDefinition *clone() const override; 51 : : QString type() const override; 52 : : bool checkValueIsAcceptable( const QVariant &input, QgsProcessingContext *context = nullptr ) const override; 53 : : QString valueAsPythonString( const QVariant &value, QgsProcessingContext &context ) const override; 54 : : QString asPythonString( QgsProcessing::PythonOutputType outputType = QgsProcessing::PythonQgsProcessingAlgorithmSubclass ) const override; 55 : : 56 : : //! Returns the type name for the parameter class. 57 : 30 : static QString typeName() { return QStringLiteral( "vectortilewriterlayers" ); } 58 : : 59 : : //! Converts a QVariant value (a QVariantList) to a list of input layers 60 : : static QList<QgsVectorTileWriter::Layer> parameterAsLayers( const QVariant &layersVariant, QgsProcessingContext &context ); 61 : : //! Converts a QVariant value (a QVariantMap) to a single input layer 62 : : static QgsVectorTileWriter::Layer variantMapAsLayer( const QVariantMap &layerVariantMap, QgsProcessingContext &context ); 63 : : //! Converts a single input layer to QVariant representation (a QVariantMap) 64 : : static QVariantMap layerAsVariantMap( const QgsVectorTileWriter::Layer &layer ); 65 : : 66 : : }; 67 : : 68 : : #ifndef SIP_RUN 69 : : ///@cond PRIVATE 70 : : 71 : : /** 72 : : * \brief Parameter type definition for QgsProcessingParameterVectorTileWriterLayers. 73 : : * 74 : : * \ingroup core 75 : : * \note This class is not a part of public API. 76 : : * \since QGIS 3.14 77 : : */ 78 : 15 : class CORE_EXPORT QgsProcessingParameterTypeVectorTileWriterLayers : public QgsProcessingParameterType 79 : : { 80 : : public: 81 : 0 : QgsProcessingParameterDefinition *create( const QString &name ) const override SIP_FACTORY 82 : : { 83 : 0 : return new QgsProcessingParameterVectorTileWriterLayers( name ); 84 : 0 : } 85 : : 86 : 0 : QString description() const override 87 : : { 88 : 0 : return QCoreApplication::translate( "Processing", "An input allowing selection of multiple layers for export in vector tiles." ); 89 : : } 90 : : 91 : 0 : QString name() const override 92 : : { 93 : 0 : return QCoreApplication::translate( "Processing", "Vector Tile Writer Layers" ); 94 : : } 95 : : 96 : 15 : QString id() const override 97 : : { 98 : 15 : return QgsProcessingParameterVectorTileWriterLayers::typeName(); 99 : : } 100 : : 101 : 0 : QString pythonImportString() const override 102 : : { 103 : 0 : return QStringLiteral( "from qgis.core import QgsProcessingParameterVectorTileWriterLayers" ); 104 : : } 105 : : 106 : 0 : QString className() const override 107 : : { 108 : 0 : return QStringLiteral( "QgsProcessingParameterVectorTileWriterLayers" ); 109 : : } 110 : : 111 : 0 : QStringList acceptedPythonTypes() const override 112 : : { 113 : 0 : return QStringList() << QObject::tr( "list[dict]: list of input layers as dictionaries, see QgsProcessingParameterVectorTileWriterLayers docs" ); 114 : 0 : } 115 : : }; 116 : : 117 : : ///@endcond 118 : : #endif 119 : : 120 : : #endif // QGSPROCESSINGPARAMETERVECTORTILEWRITERLAYERS_H