21     const QString &description,
 
   22     const QString &meshLayerParameterName,
 
   23     const QSet<int> supportedDataType,
 
   26   mMeshLayerParameterName( meshLayerParameterName ),
 
   27   mSupportedDataType( supportedDataType )
 
   52   for ( 
const int g : groups )
 
   53     parts.append( QString::number( g ) );
 
   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 ) )
 
  120   if ( !value.isValid() )
 
  124     if ( value.type() == QVariant::List )
 
  126       const QVariantList varList = value.toList();
 
  127       if ( varList.isEmpty() )
 
  130         for ( 
const QVariant &v : varList )
 
  135       ret << value.toInt();
 
  142 bool QgsProcessingParameterMeshDatasetGroups::valueIsAcceptable( 
const QVariant &input, 
bool allowEmpty )
 
  144   if ( !input.isValid() )
 
  147   if ( input.type() != QVariant::List )
 
  153   const QVariantList list = input.toList();
 
  155   if ( !allowEmpty && list.isEmpty() )
 
  158   for ( 
const QVariant &var : list )
 
  170     const QString &description,
 
  171     const QString &meshLayerParameterName,
 
  172     const QString &datasetGroupParameterName )
 
  174   , mMeshLayerParameterName( meshLayerParameterName )
 
  175   , mDatasetGroupParameterName( datasetGroupParameterName )
 
  201   parts << QStringLiteral( 
"'type': " ) +  
type;
 
  203   if ( value.toDateTime().isValid() )
 
  205     QDateTime dateTime = value.toDateTime();
 
  206     dateTime.setTimeSpec( Qt::UTC );
 
  211     const QVariantMap variantTimeDataset = value.toMap();
 
  212     if ( variantTimeDataset.value( QStringLiteral( 
"type" ) ) == QLatin1String( 
"dataset-time-step" ) )
 
  214       QVariantList datasetIndex = variantTimeDataset.value( QStringLiteral( 
"value" ) ).toList();
 
  215       parts << QStringLiteral( 
"'value': " ) + QString( 
"[%1,%2]" ).arg( datasetIndex.at( 0 ).toString(), datasetIndex.at( 1 ).toString() );
 
  217     else if ( variantTimeDataset.value( QStringLiteral( 
"type" ) ) == QLatin1String( 
"defined-date-time" ) )
 
  223   return parts.join( 
',' ).prepend( 
'{' ).append( 
'}' );
 
  228   switch ( outputType )
 
  232       QString code = QStringLiteral( 
"QgsProcessingParameterMeshDatasetTime('%1', '%2'" )
 
  234       if ( !mMeshLayerParameterName.isEmpty() )
 
  237       if ( !mDatasetGroupParameterName.isEmpty() )
 
  241         code += QLatin1String( 
", optional=True" );
 
  251   QStringList otherParameters;
 
  252   if ( !mMeshLayerParameterName.isEmpty() )
 
  253     otherParameters << mMeshLayerParameterName;
 
  255   if ( !mDatasetGroupParameterName.isEmpty() )
 
  256     otherParameters << mMeshLayerParameterName << mDatasetGroupParameterName;
 
  258   return otherParameters;
 
  263   return mMeshLayerParameterName;
 
  268   return mDatasetGroupParameterName;
 
  273   if ( !valueIsAcceptable( value, 
false ) )
 
  276   if ( value.toDateTime().isValid() )
 
  277     return QStringLiteral( 
"defined-date-time" );
 
  279   return value.toMap().value( QStringLiteral( 
"type" ) ).toString();
 
  284   if ( !valueIsAcceptable( value, 
false ) || 
valueAsTimeType( value ) != QLatin1String( 
"dataset-time-step" ) )
 
  287   QVariantList list = value.toMap().value( QStringLiteral( 
"value" ) ).toList();
 
  293   if ( value.toDateTime().isValid() )
 
  295     QDateTime dateTime = value.toDateTime();
 
  296     dateTime.setTimeSpec( Qt::UTC );
 
  300   if ( !valueIsAcceptable( value, 
false ) && 
valueAsTimeType( value ) != QLatin1String( 
"defined-date-time" ) )
 
  303   return value.toMap().value( QStringLiteral( 
"value" ) ).toDateTime();
 
  306 bool QgsProcessingParameterMeshDatasetTime::valueIsAcceptable( 
const QVariant &input, 
bool allowEmpty )
 
  308   if ( !input.isValid() )
 
  311   QDateTime timeDate = input.toDateTime();
 
  313   if ( input.toDateTime().isValid() )
 
  316   if ( input.type() != QVariant::Map )
 
  319   const QVariantMap map = input.toMap();
 
  324   if ( ! map.contains( QStringLiteral( 
"type" ) ) )
 
  327   QString 
type = map.value( QStringLiteral( 
"type" ) ).toString();
 
  328   QVariant value = map.value( QStringLiteral( 
"value" ) );
 
  330   if ( 
type == QLatin1String( 
"static" ) || 
type == QLatin1String( 
"current-context-time" ) )
 
  333   if ( 
type == QLatin1String( 
"dataset-time-step" ) )
 
  335     if ( value.type() != QVariant::List )
 
  337     QVariantList list = value.toList();
 
  338     if ( value.toList().count() != 2 )
 
  340     if ( list.at( 0 ).type() != QVariant::Int || list.at( 1 ).type() != QVariant::Int )
 
  343   else if ( 
type == QLatin1String( 
"defined-date-time" ) )
 
  345     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.