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( 
", supportedDataType=[" );
 
   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 ) )
 
  119  if ( value.isValid() )
 
  121    if ( value.userType() == QMetaType::Type::QVariantList )
 
  123      const QVariantList varList = value.toList();
 
  124      for ( 
const QVariant &v : varList )
 
  129      ret << value.toInt();
 
  139  map.insert( QStringLiteral( 
"mesh_layer" ), mMeshLayerParameterName );
 
  140  QVariantList dataType;
 
  141  for ( 
int v : mSupportedDataType )
 
  142    dataType.append( v );
 
  143  map.insert( QStringLiteral( 
"supported_data_type" ), dataType );
 
  150  mMeshLayerParameterName = map.value( QStringLiteral( 
"mesh_layer" ) ).toString();
 
  151  const QVariantList dataType = map.value( QStringLiteral( 
"supported_data_type" ) ).toList();
 
  152  mSupportedDataType.clear();
 
  153  for ( 
const QVariant &var : dataType )
 
  154    mSupportedDataType.insert( var.toInt() );
 
  158bool QgsProcessingParameterMeshDatasetGroups::valueIsAcceptable( 
const QVariant &input, 
bool allowEmpty )
 
  160  if ( !input.isValid() )
 
  163  if ( input.userType() != QMetaType::Type::QVariantList )
 
  169  const QVariantList list = input.toList();
 
  171  if ( !allowEmpty && list.isEmpty() )
 
  174  for ( 
const QVariant &var : list )
 
  186    const QString &description,
 
  187    const QString &meshLayerParameterName,
 
  188    const QString &datasetGroupParameterName )
 
  190  , mMeshLayerParameterName( meshLayerParameterName )
 
  191  , mDatasetGroupParameterName( datasetGroupParameterName )
 
  217  parts << QStringLiteral( 
"'type': " ) +  
type;
 
  219  if ( value.toDateTime().isValid() )
 
  221    QDateTime dateTime = value.toDateTime();
 
  222    dateTime.setTimeSpec( Qt::UTC );
 
  227    const QVariantMap variantTimeDataset = value.toMap();
 
  228    if ( variantTimeDataset.value( QStringLiteral( 
"type" ) ) == QLatin1String( 
"dataset-time-step" ) )
 
  230      const QVariantList datasetIndex = variantTimeDataset.value( QStringLiteral( 
"value" ) ).toList();
 
  231      parts << QStringLiteral( 
"'value': " ) + QString( 
"[%1,%2]" ).arg( datasetIndex.at( 0 ).toString(), datasetIndex.at( 1 ).toString() );
 
  233    else if ( variantTimeDataset.value( QStringLiteral( 
"type" ) ) == QLatin1String( 
"defined-date-time" ) )
 
  239  return parts.join( 
',' ).prepend( 
'{' ).append( 
'}' );
 
  244  switch ( outputType )
 
  248      QString code = QStringLiteral( 
"QgsProcessingParameterMeshDatasetTime('%1', '%2'" )
 
  250      if ( !mMeshLayerParameterName.isEmpty() )
 
  253      if ( !mDatasetGroupParameterName.isEmpty() )
 
  257        code += QLatin1String( 
", optional=True" );
 
  267  QStringList otherParameters;
 
  268  if ( !mMeshLayerParameterName.isEmpty() )
 
  269    otherParameters << mMeshLayerParameterName;
 
  271  if ( !mDatasetGroupParameterName.isEmpty() )
 
  272    otherParameters << mMeshLayerParameterName << mDatasetGroupParameterName;
 
  274  return otherParameters;
 
  280  map.insert( QStringLiteral( 
"mesh_layer" ), mMeshLayerParameterName );
 
  281  map.insert( QStringLiteral( 
"dataset_groups" ), mDatasetGroupParameterName );
 
  288  mMeshLayerParameterName = map.value( QStringLiteral( 
"mesh_layer" ) ).toString();
 
  289  mDatasetGroupParameterName = map.value( QStringLiteral( 
"dataset_groups" ) ).toString();
 
  295  return mMeshLayerParameterName;
 
  300  return mDatasetGroupParameterName;
 
  305  if ( !valueIsAcceptable( value, 
false ) )
 
  308  if ( value.toDateTime().isValid() )
 
  309    return QStringLiteral( 
"defined-date-time" );
 
  311  return value.toMap().value( QStringLiteral( 
"type" ) ).toString();
 
  316  if ( !valueIsAcceptable( value, 
false ) || 
valueAsTimeType( value ) != QLatin1String( 
"dataset-time-step" ) )
 
  319  const QVariantList list = value.toMap().value( QStringLiteral( 
"value" ) ).toList();
 
  325  if ( value.toDateTime().isValid() )
 
  327    QDateTime dateTime = value.toDateTime();
 
  328    dateTime.setTimeSpec( Qt::UTC );
 
  332  if ( !valueIsAcceptable( value, 
false ) && 
valueAsTimeType( value ) != QLatin1String( 
"defined-date-time" ) )
 
  335  return value.toMap().value( QStringLiteral( 
"value" ) ).toDateTime();
 
  338bool QgsProcessingParameterMeshDatasetTime::valueIsAcceptable( 
const QVariant &input, 
bool allowEmpty )
 
  340  if ( !input.isValid() )
 
  343  if ( input.toDateTime().isValid() )
 
  346  if ( input.userType() != QMetaType::Type::QVariantMap )
 
  349  const QVariantMap map = input.toMap();
 
  354  if ( ! map.contains( QStringLiteral( 
"type" ) ) )
 
  357  const QString 
type = map.value( QStringLiteral( 
"type" ) ).toString();
 
  358  const QVariant value = map.value( QStringLiteral( 
"value" ) );
 
  360  if ( 
type == QLatin1String( 
"static" ) || 
type == QLatin1String( 
"current-context-time" ) )
 
  363  if ( 
type == QLatin1String( 
"dataset-time-step" ) )
 
  365    if ( value.userType() != QMetaType::Type::QVariantList )
 
  367    const QVariantList list = value.toList();
 
  368    if ( value.toList().count() != 2 )
 
  370    if ( list.at( 0 ).userType() != QMetaType::Type::Int || list.at( 1 ).userType() != QMetaType::Type::Int )
 
  373  else if ( 
type == QLatin1String( 
"defined-date-time" ) )
 
  375    if ( value.userType() != QMetaType::Type::QDateTime )
 
@ Optional
Parameter is optional.
An 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.
Qgis::ProcessingParameterFlags mFlags
Parameter flags.
QString description() const
Returns the description for the parameter.
virtual QVariantMap toVariantMap() const
Saves this parameter to a QVariantMap.
QString name() const
Returns the name of the parameter.
virtual bool fromVariantMap(const QVariantMap &map)
Restores this parameter to a QVariantMap.
A parameter for processing algorithms that need a list of mesh dataset groups.
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...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QString meshLayerParameterName() const
Returns the name of the mesh layer parameter.
QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonOutputType::PythonQgsProcessingAlgorithmSubclass) const override
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
bool isDataTypeSupported(QgsMeshDatasetGroupMetadata::DataType dataType) const
Returns whether the data type is supported by the parameter.
A parameter for processing algorithms that need a list of mesh dataset index from time parameter.
QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonOutputType::PythonQgsProcessingAlgorithmSubclass) const override
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
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...
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
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.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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.