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