Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsprocessingparameterfieldmap.h 3 : : ------------------------- 4 : : begin : June 2020 5 : : copyright : (C) 2020 by Nyall Dawson 6 : : email : nyall dot dawson 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 QGSPROCESSINGPARAMETERFIELDMAP_H 17 : : #define QGSPROCESSINGPARAMETERFIELDMAP_H 18 : : 19 : : #include "qgsprocessingparameters.h" 20 : : #include "qgsprocessingparametertype.h" 21 : : 22 : : /** 23 : : * \ingroup core 24 : : * \brief A parameter for "field mapping" configurations, which consist of a definition 25 : : * of desired output fields, types, and expressions used to populate then. 26 : : * 27 : : * Designed for use with the "Refactor fields" algorithm. 28 : : * 29 : : * \since QGIS 3.14 30 : : */ 31 : 0 : class CORE_EXPORT QgsProcessingParameterFieldMapping : public QgsProcessingParameterDefinition 32 : : { 33 : : public: 34 : : //! Constructor for QgsProcessingParameterFieldMapping. 35 : : QgsProcessingParameterFieldMapping( const QString &name, const QString &description = QString(), const QString &parentLayerParameterName = QString(), bool optional = false ); 36 : : 37 : : QgsProcessingParameterDefinition *clone() const override; 38 : : QString type() const override; 39 : : bool checkValueIsAcceptable( const QVariant &input, QgsProcessingContext *context = nullptr ) const override; 40 : : QString valueAsPythonString( const QVariant &value, QgsProcessingContext &context ) const override; 41 : : QString asPythonString( QgsProcessing::PythonOutputType outputType = QgsProcessing::PythonQgsProcessingAlgorithmSubclass ) const override; 42 : : QVariantMap toVariantMap() const override; 43 : : bool fromVariantMap( const QVariantMap &map ) override; 44 : : QStringList dependsOnOtherParameters() const override; 45 : : 46 : : //! Returns the type name for the parameter class. 47 : 30 : static QString typeName() { return QStringLiteral( "fields_mapping" ); } 48 : : 49 : : /** 50 : : * Returns the name of the parent layer parameter, or an empty string if this is not set. 51 : : * \see setParentLayerParameterName() 52 : : */ 53 : : QString parentLayerParameterName() const; 54 : : 55 : : /** 56 : : * Sets the \a name of the parent layer parameter. Use an empty string if this is not required. 57 : : * \see parentLayerParameterName() 58 : : */ 59 : : void setParentLayerParameterName( const QString &name ); 60 : : 61 : : private: 62 : : QString mParentLayerParameterName; 63 : : 64 : : }; 65 : : 66 : : #ifndef SIP_RUN 67 : : ///@cond PRIVATE 68 : : 69 : : /** 70 : : * \brief Parameter type definition for QgsProcessingParameterFieldMapping. 71 : : * 72 : : * \ingroup core 73 : : * \note This class is not a part of public API. 74 : : * \since QGIS 3.14 75 : : */ 76 : 15 : class CORE_EXPORT QgsProcessingParameterTypeFieldMapping : public QgsProcessingParameterType 77 : : { 78 : : public: 79 : 0 : QgsProcessingParameterDefinition *create( const QString &name ) const override SIP_FACTORY 80 : : { 81 : 0 : return new QgsProcessingParameterFieldMapping( name ); 82 : 0 : } 83 : : 84 : 0 : QString description() const override 85 : : { 86 : 0 : return QCoreApplication::translate( "Processing", "A mapping of field names to field type definitions and expressions. Used for the refactor fields algorithm." ); 87 : : } 88 : : 89 : 0 : QString name() const override 90 : : { 91 : 0 : return QCoreApplication::translate( "Processing", "Fields Mapper" ); 92 : : } 93 : : 94 : 15 : QString id() const override 95 : : { 96 : 15 : return QgsProcessingParameterFieldMapping::typeName(); 97 : : } 98 : : 99 : 0 : QString pythonImportString() const override 100 : : { 101 : 0 : return QStringLiteral( "from qgis.core import QgsProcessingParameterFieldMapping" ); 102 : : } 103 : : 104 : 0 : QString className() const override 105 : : { 106 : 0 : return QStringLiteral( "QgsProcessingParameterFieldMapping" ); 107 : : } 108 : : 109 : 0 : QStringList acceptedPythonTypes() const override 110 : : { 111 : 0 : return QStringList() << QObject::tr( "list[dict]: list of field definitions as dictionaries" ); 112 : 0 : } 113 : : }; 114 : : 115 : : ///@endcond 116 : : #endif 117 : : 118 : : #endif // QGSPROCESSINGPARAMETERFIELDMAP_H