21 const QString &description,
22 const QString &meshLayerParameterName,
23 const QSet<int> supportedDataType,
26 mMeshLayerParameterName( meshLayerParameterName ),
27 mSupportedDataType( supportedDataType )
51 const QVariantList variantDatasetGroupIndexes = value.toList();
52 for (
const QVariant &variantIndex : variantDatasetGroupIndexes )
53 parts.append( QString::number( variantIndex.toInt() ) );
55 return parts.join(
',' ).prepend(
'[' ).append(
']' );
64 QString code = QStringLiteral(
"QgsProcessingParameterMeshDatasetGroups('%1', '%2'" )
66 if ( !mMeshLayerParameterName.isEmpty() )
71 dt.append( QStringLiteral(
"QgsMeshDatasetGroupMetadata.DataOnFaces" ) );
73 dt.append( QStringLiteral(
"QgsMeshDatasetGroupMetadata.DataOnVertices" ) );
75 dt.append( QStringLiteral(
"QgsMeshDatasetGroupMetadata.DataOnVolumes" ) );
77 dt.append( QStringLiteral(
"QgsMeshDatasetGroupMetadata.DataOnEdges" ) );
80 code += QLatin1String(
", dataType=[" );
81 code += dt.join(
',' );
86 code += QLatin1String(
", optional=True" );
96 if ( mMeshLayerParameterName.isEmpty() )
99 return QStringList() << mMeshLayerParameterName;
104 return mMeshLayerParameterName;
109 return mSupportedDataType.contains( dataType );
114 if ( !valueIsAcceptable( value,
true ) )
116 QVariantList list = value.toList();
118 for (
const QVariant &v : list )
119 ret.append( v.toInt() );
124 bool QgsProcessingParameterMeshDatasetGroups::valueIsAcceptable(
const QVariant &input,
bool allowEmpty )
126 if ( !input.isValid() )
129 if ( input.type() != QVariant::List )
131 const QVariantList list = input.toList();
133 if ( !allowEmpty && list.isEmpty() )
136 for (
const QVariant &var : list )
137 if ( var.type() != QVariant::Int )
144 const QString &description,
145 const QString &meshLayerParameterName,
146 const QString &datasetGroupParameterName )
148 , mMeshLayerParameterName( meshLayerParameterName )
149 , mDatasetGroupParameterName( datasetGroupParameterName )
174 const QVariantMap variantTimeDataset = value.toMap();
177 if ( variantTimeDataset.value( QStringLiteral(
"type" ) ) == QLatin1String(
"dataset-time-step" ) )
179 QVariantList datasetIndex = variantTimeDataset.value( QStringLiteral(
"value" ) ).toList();
180 parts << QStringLiteral(
"'value': " ) + QString(
"QgsMeshDatasetIndex(%1,%2)" ).arg( datasetIndex.at( 0 ).toString() ).arg( datasetIndex.at( 1 ).toString() );
182 else if ( variantTimeDataset.value( QStringLiteral(
"type" ) ) == QLatin1String(
"defined-date-time" ) )
187 return parts.join(
',' ).prepend(
'{' ).append(
'}' );
192 switch ( outputType )
196 QString code = QStringLiteral(
"QgsProcessingParameterMeshDatasetTime('%1', '%2'" )
198 if ( !mMeshLayerParameterName.isEmpty() )
201 if ( !mDatasetGroupParameterName.isEmpty() )
205 code += QLatin1String(
", optional=True" );
215 QStringList otherParameters;
216 if ( !mMeshLayerParameterName.isEmpty() )
217 otherParameters << mMeshLayerParameterName;
219 if ( !mDatasetGroupParameterName.isEmpty() )
220 otherParameters << mMeshLayerParameterName << mDatasetGroupParameterName;
222 return otherParameters;
227 return mMeshLayerParameterName;
232 return mDatasetGroupParameterName;
237 if ( !valueIsAcceptable( value,
false ) )
240 return value.toMap().value( QStringLiteral(
"type" ) ).toString();
245 if ( !valueIsAcceptable( value,
false ) ||
valueAsTimeType( value ) != QLatin1String(
"dataset-time-step" ) )
248 QVariantList list = value.toMap().value( QStringLiteral(
"value" ) ).toList();
254 if ( !valueIsAcceptable( value,
false ) &&
valueAsTimeType( value ) != QLatin1String(
"defined-date-time" ) )
257 return value.toMap().value( QStringLiteral(
"value" ) ).toDateTime();
260 bool QgsProcessingParameterMeshDatasetTime::valueIsAcceptable(
const QVariant &input,
bool allowEmpty )
262 if ( !input.isValid() )
265 if ( input.type() != QVariant::Map )
267 const QVariantMap map = input.toMap();
268 if ( ! map.contains( QStringLiteral(
"type" ) ) )
271 QString
type = map.value( QStringLiteral(
"type" ) ).toString();
272 QVariant value = map.value( QStringLiteral(
"value" ) );
274 if (
type == QLatin1String(
"static" ) ||
type == QLatin1String(
"current-context-time" ) )
277 if (
type == QLatin1String(
"dataset-time-step" ) )
279 if ( value.type() != QVariant::List )
281 QVariantList list = value.toList();
282 if ( value.toList().count() != 2 )
284 if ( list.at( 0 ).type() != QVariant::Int || list.at( 1 ).type() != QVariant::Int )
287 else if (
type == QLatin1String(
"defined-date-time" ) )
289 if ( value.type() != QVariant::DateTime )
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
Contains information about the context in which a processing algorithm is executed.
Base class for the definition of processing parameters.
Flags mFlags
Parameter flags.
QString description() const
Returns the description for the parameter.
@ FlagOptional
Parameter is optional.
QString name() const
Returns the name of the parameter.
QgsProcessingParameterMeshDatasetGroups(const QString &name, const QString &description=QString(), const QString &meshLayerParameterName=QString(), QSet< int > supportedDataType=QSet< int >(), bool optional=false)
Constructor.
static QString typeName()
Returns the type name for the parameter class.
static QList< int > valueAsDatasetGroup(const QVariant &value)
Returns the value as a list if dataset group indexes.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
QString valueAsPythonString(const QVariant &value, QgsProcessingContext &context) const override
Returns a string version of the parameter input value, which is suitable for use as an input paramete...
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString type() const override
Unique parameter type name.
QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonQgsProcessingAlgorithmSubclass) const override
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
QString meshLayerParameterName() const
Returns the name of the mesh layer parameter.
bool isDataTypeSupported(QgsMeshDatasetGroupMetadata::DataType dataType) const
Returns whether the data type is supported by the parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterMeshDatasetTime(const QString &name, const QString &description=QString(), const QString &meshLayerParameterName=QString(), const QString &datasetGroupParameterName=QString())
Constructor.
QString valueAsPythonString(const QVariant &value, QgsProcessingContext &context) const override
Returns a string version of the parameter input value, which is suitable for use as an input paramete...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
static QString valueAsTimeType(const QVariant &value)
Returns the dataset value time type as a string : current-context-time : the time is store in the pro...
QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonQgsProcessingAlgorithmSubclass) const override
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
QString datasetGroupParameterName() const
Returns the name of the dataset groups parameter.
QString meshLayerParameterName() const
Returns the name of the mesh layer parameter.
static QgsMeshDatasetIndex timeValueAsDatasetIndex(const QVariant &value)
Returns the value as a QgsMeshDatasetIndex if the value has "dataset-time-step" type.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
static QString typeName()
Returns the type name for the parameter class.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QDateTime timeValueAsDefinedDateTime(const QVariant &value)
Returns the value as a QDateTime if the value has "defined-date-time" type.
QString type() const override
Unique parameter type name.
static QString stringToPythonLiteral(const QString &string)
Converts a string to a Python string literal.
static QString variantToPythonLiteral(const QVariant &value)
Converts a variant to a Python literal.
PythonOutputType
Available Python output types.
@ PythonQgsProcessingAlgorithmSubclass
Full Python QgsProcessingAlgorithm subclass.