42 #include <QRegularExpression>
50 map.insert( QStringLiteral(
"feature_limit" ),
featureLimit );
51 map.insert( QStringLiteral(
"flags" ),
static_cast< int >(
flags ) );
52 map.insert( QStringLiteral(
"geometry_check" ),
static_cast< int >(
geometryCheck ) );
60 featureLimit = map.value( QStringLiteral(
"feature_limit" ), -1 ).toLongLong();
61 flags =
static_cast< Flags
>( map.value( QStringLiteral(
"flags" ), 0 ).toInt() );
74 mRemappingDefinition = definition;
81 map.insert( QStringLiteral(
"create_options" ),
createOptions );
83 map.insert( QStringLiteral(
"remapping" ), QVariant::fromValue( mRemappingDefinition ) );
90 createOptions = map.value( QStringLiteral(
"create_options" ) ).toMap();
91 if ( map.contains( QStringLiteral(
"remapping" ) ) )
98 mUseRemapping =
false;
106 && mUseRemapping == other.mUseRemapping && mRemappingDefinition == other.mRemappingDefinition;
111 return !( *
this == other );
116 const QVariant val = parameters.value( name );
136 QVariant val = value;
140 if ( !val.isValid() )
149 return destParam->generateTemporaryDestination();
152 return val.toString();
168 const QVariant val = value;
172 if ( val.isValid() && !val.toString().isEmpty() )
176 return val.toString();
196 QVariant val = value;
201 const double res = val.toDouble( &ok );
207 return val.toDouble();
223 QVariant val = value;
228 double dbl = val.toDouble( &ok );
233 dbl = val.toDouble( &ok );
240 const double round = std::round( dbl );
241 if ( round > std::numeric_limits<int>::max() || round < -std::numeric_limits<int>::max() )
246 return static_cast< int >( std::round( dbl ) );
255 return QList< int >();
263 return QList< int >();
265 QList< int > resultList;
266 const QVariant val = value;
271 else if ( val.type() == QVariant::List )
273 const QVariantList list = val.toList();
274 for (
auto it = list.constBegin(); it != list.constEnd(); ++it )
275 resultList << it->toInt();
279 const QStringList parts = val.toString().split(
';' );
280 for (
auto it = parts.constBegin(); it != parts.constEnd(); ++it )
281 resultList << it->toInt();
285 if ( resultList.isEmpty() )
290 if ( definition->
defaultValue().type() == QVariant::List )
292 const QVariantList list = definition->
defaultValue().toList();
293 for (
auto it = list.constBegin(); it != list.constEnd(); ++it )
294 resultList << it->toInt();
298 const QStringList parts = definition->
defaultValue().toString().split(
';' );
299 for (
auto it = parts.constBegin(); it != parts.constEnd(); ++it )
300 resultList << it->toInt();
321 QVariant val = value;
325 QDateTime d = val.toDateTime();
326 if ( !d.isValid() && val.type() == QVariant::String )
328 d = QDateTime::fromString( val.toString() );
335 d = val.toDateTime();
337 if ( !d.isValid() && val.type() == QVariant::String )
339 d = QDateTime::fromString( val.toString() );
358 QVariant val = value;
362 QDate d = val.toDate();
363 if ( !d.isValid() && val.type() == QVariant::String )
365 d = QDate::fromString( val.toString() );
374 if ( !d.isValid() && val.type() == QVariant::String )
376 d = QDate::fromString( val.toString() );
395 QVariant val = value;
401 if ( val.type() == QVariant::DateTime )
402 d = val.toDateTime().time();
406 if ( !d.isValid() && val.type() == QVariant::String )
408 d = QTime::fromString( val.toString() );
417 if ( !d.isValid() && val.type() == QVariant::String )
419 d = QTime::fromString( val.toString() );
440 if ( enumDef && val >= enumDef->
options().size() )
460 QVariantList resultList;
461 const QVariant val = value;
464 else if ( val.type() == QVariant::List )
466 const auto constToList = val.toList();
467 for (
const QVariant &var : constToList )
470 else if ( val.type() == QVariant::String )
472 const auto constSplit = val.toString().split(
',' );
473 for (
const QString &var : constSplit )
479 if ( resultList.isEmpty() )
480 return QList< int >();
482 if ( ( !val.isValid() || !resultList.at( 0 ).isValid() ) && definition )
486 if ( definition->
defaultValue().type() == QVariant::List )
488 const auto constToList = definition->
defaultValue().toList();
489 for (
const QVariant &var : constToList )
492 else if ( definition->
defaultValue().type() == QVariant::String )
494 const auto constSplit = definition->
defaultValue().toString().split(
',' );
495 for (
const QString &var : constSplit )
504 const auto constResultList = resultList;
505 for (
const QVariant &var : constResultList )
507 const int resInt = var.toInt();
508 if ( !enumDef || resInt < enumDef->options().size() )
531 if ( enumText.isEmpty() || !enumDef->
options().contains( enumText ) )
540 return QStringList();
548 return QStringList();
550 const QVariant val = value;
552 QStringList enumValues;
554 std::function< void(
const QVariant &var ) > processVariant;
555 processVariant = [ &enumValues, &context, &definition, &processVariant ](
const QVariant & var )
557 if ( var.type() == QVariant::List )
559 const auto constToList = var.toList();
560 for (
const QVariant &listVar : constToList )
562 processVariant( listVar );
565 else if ( var.type() == QVariant::StringList )
567 const auto constToStringList = var.toStringList();
568 for (
const QString &s : constToStringList )
577 const QStringList parts = var.toString().split(
',' );
578 for (
const QString &s : parts )
585 processVariant( val );
591 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
592 QSet<QString> subtraction = enumValues.toSet().subtract( enumDef->
options().toSet() );
594 const QStringList options = enumDef->
options();
595 const QSet<QString> subtraction = QSet<QString>( enumValues.begin(), enumValues.end() ).subtract( QSet<QString>( options.begin(), options.end() ) );
598 if ( enumValues.isEmpty() || !subtraction.isEmpty() )
630 const QVariant val = value;
633 else if ( val.isValid() )
646 const QVariant val = value;
649 else if ( val.isValid() )
657 QgsProcessingContext &context, QString &destinationIdentifier, QgsFeatureSink::SinkFlags sinkFlags,
658 const QVariantMap &createOptions,
const QStringList &datasourceOptions,
const QStringList &layerOptions )
663 val = parameters.value( definition->
name() );
666 return parameterAsSink( definition, val, fields, geometryType,
crs, context, destinationIdentifier, sinkFlags, createOptions, datasourceOptions, layerOptions );
669 QgsFeatureSink *
QgsProcessingParameters::parameterAsSink(
const QgsProcessingParameterDefinition *definition,
const QVariant &value,
const QgsFields &fields,
QgsWkbTypes::Type geometryType,
const QgsCoordinateReferenceSystem &
crs,
QgsProcessingContext &context, QString &destinationIdentifier, QgsFeatureSink::SinkFlags sinkFlags,
const QVariantMap &createOptions,
const QStringList &datasourceOptions,
const QStringList &layerOptions )
671 QVariantMap options = createOptions;
672 QVariant val = value;
677 bool useRemapDefinition =
false;
689 useRemapDefinition =
true;
699 else if ( !val.isValid() || val.toString().isEmpty() )
715 dest = val.toString();
720 dest = destParam->generateTemporaryDestination();
723 if ( dest.isEmpty() )
726 std::unique_ptr< QgsFeatureSink > sink(
QgsProcessingUtils::createFeatureSink( dest, context, fields, geometryType,
crs, options, datasourceOptions, layerOptions, sinkFlags, useRemapDefinition ? &remapDefinition :
nullptr ) );
727 destinationIdentifier = dest;
729 if ( destinationProject )
731 if ( destName.isEmpty() && definition )
737 outputName = definition->
name();
741 return sink.release();
765 QVariant val = parameters.value( definition->
name() );
767 bool selectedFeaturesOnly =
false;
768 long long featureLimit = -1;
790 vl = qobject_cast< QgsVectorLayer * >( qvariant_cast<QObject *>( val ) );
799 else if ( !val.isValid() || val.toString().isEmpty() )
805 vl = qobject_cast< QgsVectorLayer * >( qvariant_cast<QObject *>( val ) );
811 layerRef = val.toString();
816 if ( layerRef.isEmpty() )
828 compatibleFormats, preferredFormat, context, feedback, *layerName, featureLimit );
831 compatibleFormats, preferredFormat, context, feedback, featureLimit );
841 QString *destLayer = layerName;
856 return parameterAsLayer( definition, parameters.value( definition->
name() ), context, layerHint );
864 QVariant val = value;
870 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) ) )
887 if ( !val.isValid() || val.toString().isEmpty() )
893 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) ) )
898 QString layerRef = val.toString();
899 if ( layerRef.isEmpty() )
902 if ( layerRef.isEmpty() )
933 val = parameters.value( definition->
name() );
940 QVariant val = value;
958 else if ( definition && ( !val.isValid() || val.toString().isEmpty() ) )
965 dest = val.toString();
970 dest = destParam->generateTemporaryDestination();
973 if ( destinationProject )
976 if ( destName.isEmpty() && definition )
981 outputName = definition->
name();
1002 val = parameters.value( definition->
name() );
1009 QVariant val = value;
1019 if ( definition && val.canConvert<
QgsProperty>() )
1023 else if ( definition && ( !val.isValid() || val.toString().isEmpty() ) )
1030 dest = val.toString();
1035 dest = destParam->generateTemporaryDestination();
1055 return parameterAsCrs( definition, parameters.value( definition->
name() ), context );
1080 QVariant val = value;
1130 QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) );
1136 rectText = val.toString();
1138 if ( rectText.isEmpty() && !layer )
1141 const QRegularExpression rx( QStringLiteral(
"^(.*?)\\s*,\\s*(.*?),\\s*(.*?),\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*$" ) );
1142 const QRegularExpressionMatch match = rx.match( rectText );
1143 if ( match.hasMatch() )
1145 bool xMinOk =
false;
1146 const double xMin = match.captured( 1 ).toDouble( &xMinOk );
1147 bool xMaxOk =
false;
1148 const double xMax = match.captured( 2 ).toDouble( &xMaxOk );
1149 bool yMinOk =
false;
1150 const double yMin = match.captured( 3 ).toDouble( &yMinOk );
1151 bool yMaxOk =
false;
1152 const double yMax = match.captured( 4 ).toDouble( &yMaxOk );
1153 if ( xMinOk && xMaxOk && yMinOk && yMaxOk )
1204 QVariant val = parameters.value( definition->
name() );
1212 g = g.densifyByCount( 20 );
1248 rectText = val.toString();
1250 if ( !rectText.isEmpty() )
1252 const QRegularExpression rx( QStringLiteral(
"^(.*?)\\s*,\\s*(.*?),\\s*(.*?),\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*$" ) );
1253 const QRegularExpressionMatch match = rx.match( rectText );
1254 if ( match.hasMatch() )
1256 bool xMinOk =
false;
1257 const double xMin = match.captured( 1 ).toDouble( &xMinOk );
1258 bool xMaxOk =
false;
1259 const double xMax = match.captured( 2 ).toDouble( &xMaxOk );
1260 bool yMinOk =
false;
1261 const double yMin = match.captured( 3 ).toDouble( &yMinOk );
1262 bool yMaxOk =
false;
1263 const double yMax = match.captured( 4 ).toDouble( &yMaxOk );
1264 if ( xMinOk && xMaxOk && yMinOk && yMaxOk )
1290 QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) );
1319 const QVariant val = parameters.value( definition->
name() );
1325 QVariant val = value;
1353 QString valueAsString;
1357 valueAsString = val.toString();
1359 const QRegularExpression rx( QStringLiteral(
"^(.*?)\\s*,\\s*(.*?),\\s*(.*?),\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*$" ) );
1361 const QRegularExpressionMatch match = rx.match( valueAsString );
1362 if ( match.hasMatch() )
1388 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) ) )
1389 return layer->crs();
1391 return layer->crs();
1393 if (
auto *lProject = context.
project() )
1394 return lProject->crs();
1412 const QVariant val = value;
1442 if ( pointText.isEmpty() )
1445 if ( pointText.isEmpty() )
1448 const QRegularExpression rx( QStringLiteral(
"^\\s*\\(?\\s*(.*?)\\s*,\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*\\)?\\s*$" ) );
1451 const QRegularExpressionMatch match = rx.match( valueAsString );
1452 if ( match.hasMatch() )
1455 const double x = match.captured( 1 ).toDouble( &xOk );
1457 const double y = match.captured( 2 ).toDouble( &yOk );
1485 const QVariant val = parameters.value( definition->
name() );
1500 const QRegularExpression rx( QStringLiteral(
"^\\s*\\(?\\s*(.*?)\\s*,\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*\\)?\\s*$" ) );
1503 const QRegularExpressionMatch match = rx.match( valueAsString );
1504 if ( match.hasMatch() )
1511 if (
auto *lProject = context.
project() )
1512 return lProject->crs();
1530 const QVariant val = value;
1570 g = g.densifyByCount( 20 );
1603 if ( valueAsString.isEmpty() )
1606 if ( valueAsString.isEmpty() )
1609 const QRegularExpression rx( QStringLiteral(
"^\\s*(?:CRS=(.*);)?(.*?)$" ) );
1611 const QRegularExpressionMatch match = rx.match( valueAsString );
1612 if ( match.hasMatch() )
1639 const QVariant val = parameters.value( definition->
name() );
1673 const QRegularExpression rx( QStringLiteral(
"^\\s*(?:CRS=(.*);)?(.*?)$" ) );
1676 const QRegularExpressionMatch match = rx.match( valueAsString );
1677 if ( match.hasMatch() )
1684 if (
auto *lProject = context.
project() )
1685 return lProject->crs();
1696 if ( fileText.isEmpty() )
1707 if ( fileText.isEmpty() )
1715 return QVariantList();
1723 return QVariantList();
1725 QString resultString;
1726 const QVariant val = value;
1729 else if ( val.type() == QVariant::List )
1730 return val.toList();
1732 resultString = val.toString();
1734 if ( resultString.isEmpty() )
1737 if ( definition->
defaultValue().type() == QVariant::List )
1743 QVariantList result;
1744 const auto constSplit = resultString.split(
',' );
1747 for (
const QString &s : constSplit )
1749 number = s.toDouble( &ok );
1750 result << ( ok ? QVariant( number ) : s );
1759 return QList<QgsMapLayer *>();
1767 return QList<QgsMapLayer *>();
1769 const QVariant val = value;
1770 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) ) )
1772 return QList<QgsMapLayer *>() << layer;
1775 QList<QgsMapLayer *> layers;
1777 std::function< void(
const QVariant &var ) > processVariant;
1778 processVariant = [ &layers, &context, &definition, &processVariant ](
const QVariant & var )
1780 if ( var.type() == QVariant::List )
1782 const auto constToList = var.toList();
1783 for (
const QVariant &listVar : constToList )
1785 processVariant( listVar );
1788 else if ( var.type() == QVariant::StringList )
1790 const auto constToStringList = var.toStringList();
1791 for (
const QString &s : constToStringList )
1793 processVariant( s );
1802 const QVariant sink = fromVar.
sink;
1808 else if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( var ) ) )
1820 processVariant( val );
1822 if ( layers.isEmpty() )
1825 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( definition->
defaultValue() ) ) )
1829 else if ( definition->
defaultValue().type() == QVariant::List )
1831 const auto constToList = definition->
defaultValue().toList();
1832 for (
const QVariant &var : constToList )
1834 if (
QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( var ) ) )
1840 processVariant( var );
1854 return QStringList();
1856 const QVariant val = value;
1860 std::function< void(
const QVariant &var ) > processVariant;
1861 processVariant = [ &files, &context, &definition, &processVariant ](
const QVariant & var )
1863 if ( var.type() == QVariant::List )
1865 const auto constToList = var.toList();
1866 for (
const QVariant &listVar : constToList )
1868 processVariant( listVar );
1871 else if ( var.type() == QVariant::StringList )
1873 const auto constToStringList = var.toStringList();
1874 for (
const QString &s : constToStringList )
1876 processVariant( s );
1883 files << var.toString();
1887 processVariant( val );
1889 if ( files.isEmpty() )
1900 return QStringList();
1908 return QList<double>();
1916 return QList<double>();
1918 QStringList resultStringList;
1919 const QVariant val = value;
1923 else if ( val.type() == QVariant::List )
1925 const auto constToList = val.toList();
1926 for (
const QVariant &var : constToList )
1927 resultStringList << var.toString();
1930 resultStringList << val.toString();
1932 if ( ( resultStringList.isEmpty() || ( resultStringList.size() == 1 && resultStringList.at( 0 ).isEmpty() ) ) )
1934 resultStringList.clear();
1936 if ( definition->
defaultValue().type() == QVariant::List )
1938 const auto constToList = definition->
defaultValue().toList();
1939 for (
const QVariant &var : constToList )
1940 resultStringList << var.toString();
1943 resultStringList << definition->
defaultValue().toString();
1946 if ( resultStringList.size() == 1 )
1948 resultStringList = resultStringList.at( 0 ).split(
',' );
1951 if ( resultStringList.size() < 2 )
1952 return QList< double >() << std::numeric_limits<double>::quiet_NaN() << std::numeric_limits<double>::quiet_NaN() ;
1954 QList< double > result;
1956 double n = resultStringList.at( 0 ).toDouble( &ok );
1960 result << std::numeric_limits<double>::quiet_NaN() ;
1962 n = resultStringList.at( 1 ).toDouble( &ok );
1966 result << std::numeric_limits<double>::quiet_NaN() ;
1974 return QStringList();
1976 const QStringList resultStringList;
1983 return QStringList();
1985 QStringList resultStringList;
1986 const QVariant val = value;
1987 if ( val.isValid() )
1991 else if ( val.type() == QVariant::List )
1993 const auto constToList = val.toList();
1994 for (
const QVariant &var : constToList )
1995 resultStringList << var.toString();
1997 else if ( val.type() == QVariant::StringList )
1999 resultStringList = val.toStringList();
2002 resultStringList.append( val.toString().split(
';' ) );
2005 if ( ( resultStringList.isEmpty() || resultStringList.at( 0 ).isEmpty() ) )
2007 resultStringList.clear();
2011 if ( definition->
defaultValue().type() == QVariant::List )
2013 const auto constToList = definition->
defaultValue().toList();
2014 for (
const QVariant &var : constToList )
2015 resultStringList << var.toString();
2017 else if ( definition->
defaultValue().type() == QVariant::StringList )
2019 resultStringList = definition->
defaultValue().toStringList();
2022 resultStringList.append( definition->
defaultValue().toString().split(
';' ) );
2026 return resultStringList;
2040 if ( layoutName.isEmpty() )
2092 QVariant val = value;
2097 if ( val.type() == QVariant::Color )
2099 QColor
c = val.value< QColor >();
2101 if ( !colorParam->opacityEnabled() )
2109 if ( definition->
defaultValue().type() == QVariant::Color )
2115 if ( colorText.isEmpty() )
2118 bool containsAlpha =
false;
2121 if (
c.isValid() && !colorParam->opacityEnabled() )
2193 const QString type = map.value( QStringLiteral(
"parameter_type" ) ).toString();
2194 const QString name = map.value( QStringLiteral(
"name" ) ).toString();
2195 std::unique_ptr< QgsProcessingParameterDefinition > def;
2268 def.reset( paramType->
create( name ) );
2274 def->fromVariantMap( map );
2275 return def.release();
2280 QString desc = name;
2281 desc.replace(
'_',
' ' );
2287 bool isOptional =
false;
2291 if ( !parseScriptCodeParameterOptions( code, isOptional, name, type, definition ) )
2296 if ( type == QLatin1String(
"boolean" ) )
2298 else if ( type == QLatin1String(
"crs" ) )
2300 else if ( type == QLatin1String(
"layer" ) )
2302 else if ( type == QLatin1String(
"extent" ) )
2304 else if ( type == QLatin1String(
"point" ) )
2306 else if ( type == QLatin1String(
"geometry" ) )
2308 else if ( type == QLatin1String(
"file" ) )
2310 else if ( type == QLatin1String(
"folder" ) )
2312 else if ( type == QLatin1String(
"matrix" ) )
2314 else if ( type == QLatin1String(
"multiple" ) )
2316 else if ( type == QLatin1String(
"number" ) )
2318 else if ( type == QLatin1String(
"distance" ) )
2320 else if ( type == QLatin1String(
"duration" ) )
2322 else if ( type == QLatin1String(
"scale" ) )
2324 else if ( type == QLatin1String(
"range" ) )
2326 else if ( type == QLatin1String(
"raster" ) )
2328 else if ( type == QLatin1String(
"enum" ) )
2330 else if ( type == QLatin1String(
"string" ) )
2332 else if ( type == QLatin1String(
"authcfg" ) )
2334 else if ( type == QLatin1String(
"expression" ) )
2336 else if ( type == QLatin1String(
"field" ) )
2338 else if ( type == QLatin1String(
"vector" ) )
2340 else if ( type == QLatin1String(
"source" ) )
2342 else if ( type == QLatin1String(
"sink" ) )
2344 else if ( type == QLatin1String(
"vectordestination" ) )
2346 else if ( type == QLatin1String(
"rasterdestination" ) )
2348 else if ( type == QLatin1String(
"pointclouddestination" ) )
2350 else if ( type == QLatin1String(
"filedestination" ) )
2352 else if ( type == QLatin1String(
"folderdestination" ) )
2354 else if ( type == QLatin1String(
"band" ) )
2356 else if ( type == QLatin1String(
"mesh" ) )
2358 else if ( type == QLatin1String(
"layout" ) )
2360 else if ( type == QLatin1String(
"layoutitem" ) )
2362 else if ( type == QLatin1String(
"color" ) )
2364 else if ( type == QLatin1String(
"coordinateoperation" ) )
2366 else if ( type == QLatin1String(
"maptheme" ) )
2368 else if ( type == QLatin1String(
"datetime" ) )
2370 else if ( type == QLatin1String(
"providerconnection" ) )
2372 else if ( type == QLatin1String(
"databaseschema" ) )
2374 else if ( type == QLatin1String(
"databasetable" ) )
2376 else if ( type == QLatin1String(
"pointcloud" ) )
2378 else if ( type == QLatin1String(
"annotation" ) )
2384 bool QgsProcessingParameters::parseScriptCodeParameterOptions(
const QString &code,
bool &isOptional, QString &name, QString &type, QString &definition )
2386 const QRegularExpression re( QStringLiteral(
"(?:#*)(.*?)=\\s*(.*)" ) );
2387 QRegularExpressionMatch m = re.match( code );
2388 if ( !m.hasMatch() )
2391 name = m.captured( 1 );
2392 QString tokens = m.captured( 2 );
2393 if ( tokens.startsWith( QLatin1String(
"optional" ), Qt::CaseInsensitive ) )
2396 tokens.remove( 0, 8 );
2403 tokens = tokens.trimmed();
2405 const QRegularExpression re2( QStringLiteral(
"(.*?)\\s+(.*)" ) );
2406 m = re2.match( tokens );
2407 if ( !m.hasMatch() )
2409 type = tokens.toLower().trimmed();
2414 type = m.captured( 1 ).toLower().trimmed();
2415 definition = m.captured( 2 );
2426 , mDescription( description )
2428 , mDefault( defaultValue )
2429 , mFlags( optional ? FlagOptional : 0 )
2434 if ( !input.isValid() && !
mDefault.isValid() )
2437 if ( ( input.type() == QVariant::String && input.toString().isEmpty() )
2438 || ( !input.isValid() &&
mDefault.type() == QVariant::String &&
mDefault.toString().isEmpty() ) )
2446 if ( !value.isValid() )
2447 return QStringLiteral(
"None" );
2450 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
2457 if ( !value.isValid() )
2461 if ( value.type() == QVariant::Type::Map )
2463 const QVariantMap sourceMap = value.toMap();
2464 QVariantMap resultMap;
2465 for (
auto it = sourceMap.constBegin(); it != sourceMap.constEnd(); it++ )
2471 else if ( value.type() == QVariant::Type::List || value.type() == QVariant::Type::StringList )
2473 const QVariantList sourceList = value.toList();
2474 QVariantList resultList;
2475 resultList.reserve( sourceList.size() );
2476 for (
const QVariant &v : sourceList )
2484 switch ( value.userType() )
2487 case QMetaType::Bool:
2488 case QMetaType::Char:
2489 case QMetaType::Int:
2490 case QMetaType::Double:
2491 case QMetaType::Float:
2492 case QMetaType::LongLong:
2493 case QMetaType::ULongLong:
2494 case QMetaType::UInt:
2495 case QMetaType::ULong:
2496 case QMetaType::UShort:
2504 if ( value.userType() == QMetaType::type(
"QgsProperty" ) )
2517 QgsDebugMsg( QStringLiteral(
"could not convert expression/field based property to JSON object" ) );
2523 if ( value.userType() == QMetaType::type(
"QgsCoordinateReferenceSystem" ) )
2533 else if ( value.userType() == QMetaType::type(
"QgsRectangle" ) )
2541 else if ( value.userType() == QMetaType::type(
"QgsReferencedRectangle" ) )
2549 else if ( value.userType() == QMetaType::type(
"QgsGeometry" ) )
2561 else if ( value.userType() == QMetaType::type(
"QgsReferencedGeometry" ) )
2576 else if ( value.userType() == QMetaType::type(
"QgsPointXY" ) )
2582 else if ( value.userType() == QMetaType::type(
"QgsReferencedPointXY" ) )
2589 else if ( value.userType() == QMetaType::type(
"QgsProcessingFeatureSourceDefinition" ) )
2596 else if ( value.userType() == QMetaType::type(
"QgsProcessingOutputLayerDefinition" ) )
2601 else if ( value.userType() == QMetaType::type(
"QColor" ) )
2603 const QColor fromVar = value.value< QColor >();
2604 if ( !fromVar.isValid() )
2607 return QStringLiteral(
"rgba( %1, %2, %3, %4 )" ).arg( fromVar.red() ).arg( fromVar.green() ).arg( fromVar.blue() ).arg( QString::number( fromVar.alphaF(),
'f', 2 ) );
2609 else if ( value.userType() == QMetaType::type(
"QDateTime" ) )
2611 const QDateTime fromVar = value.toDateTime();
2612 if ( !fromVar.isValid() )
2615 return fromVar.toString( Qt::ISODate );
2617 else if ( value.userType() == QMetaType::type(
"QDate" ) )
2619 const QDate fromVar = value.toDate();
2620 if ( !fromVar.isValid() )
2623 return fromVar.toString( Qt::ISODate );
2625 else if ( value.userType() == QMetaType::type(
"QTime" ) )
2627 const QTime fromVar = value.toTime();
2628 if ( !fromVar.isValid() )
2631 return fromVar.toString( Qt::ISODate );
2636 p.insert(
name(), value );
2640 if ( !source.isEmpty() )
2646 if ( value.userType() == QMetaType::QString )
2651 Q_ASSERT_X(
false,
"QgsProcessingParameterDefinition::valueAsJsonObject", QStringLiteral(
"unsupported variant type %1" ).arg(
QMetaType::typeName( value.userType() ) ).toLocal8Bit() );
2659 if ( !value.isValid() )
2662 switch ( value.userType() )
2665 case QMetaType::Bool:
2666 case QMetaType::Char:
2667 case QMetaType::Int:
2668 case QMetaType::Double:
2669 case QMetaType::Float:
2670 case QMetaType::LongLong:
2671 case QMetaType::ULongLong:
2672 case QMetaType::UInt:
2673 case QMetaType::ULong:
2674 case QMetaType::UShort:
2675 return value.toString();
2681 if ( value.userType() == QMetaType::type(
"QgsProperty" ) )
2694 QgsDebugMsg( QStringLiteral(
"could not convert expression/field based property to string" ) );
2700 if ( value.userType() == QMetaType::type(
"QgsCoordinateReferenceSystem" ) )
2710 else if ( value.userType() == QMetaType::type(
"QgsRectangle" ) )
2718 else if ( value.userType() == QMetaType::type(
"QgsReferencedRectangle" ) )
2726 else if ( value.userType() == QMetaType::type(
"QgsGeometry" ) )
2738 else if ( value.userType() == QMetaType::type(
"QgsReferencedGeometry" ) )
2753 else if ( value.userType() == QMetaType::type(
"QgsPointXY" ) )
2759 else if ( value.userType() == QMetaType::type(
"QgsReferencedPointXY" ) )
2766 else if ( value.userType() == QMetaType::type(
"QgsProcessingFeatureSourceDefinition" ) )
2771 else if ( value.userType() == QMetaType::type(
"QgsProcessingOutputLayerDefinition" ) )
2776 else if ( value.userType() == QMetaType::type(
"QColor" ) )
2778 const QColor fromVar = value.value< QColor >();
2779 if ( !fromVar.isValid() )
2782 return QStringLiteral(
"rgba( %1, %2, %3, %4 )" ).arg( fromVar.red() ).arg( fromVar.green() ).arg( fromVar.blue() ).arg( QString::number( fromVar.alphaF(),
'f', 2 ) );
2784 else if ( value.userType() == QMetaType::type(
"QDateTime" ) )
2786 const QDateTime fromVar = value.toDateTime();
2787 if ( !fromVar.isValid() )
2790 return fromVar.toString( Qt::ISODate );
2792 else if ( value.userType() == QMetaType::type(
"QDate" ) )
2794 const QDate fromVar = value.toDate();
2795 if ( !fromVar.isValid() )
2798 return fromVar.toString( Qt::ISODate );
2800 else if ( value.userType() == QMetaType::type(
"QTime" ) )
2802 const QTime fromVar = value.toTime();
2803 if ( !fromVar.isValid() )
2806 return fromVar.toString( Qt::ISODate );
2811 p.insert(
name(), value );
2815 if ( !source.isEmpty() )
2821 if ( value.userType() == QMetaType::QString )
2822 return value.toString();
2827 return value.toString();
2833 if ( !value.isValid( ) )
2834 return QStringList();
2836 if ( value.type() == QVariant::Type::List || value.type() == QVariant::Type::StringList )
2838 const QVariantList sourceList = value.toList();
2839 QStringList resultList;
2840 resultList.reserve( sourceList.size() );
2841 for (
const QVariant &v : sourceList )
2850 return QStringList();
2862 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
2864 code += QLatin1String(
"optional " );
2865 code +=
type() +
' ';
2867 return code.trimmed();
2875 switch ( outputType )
2879 QString code = t->className() + QStringLiteral(
"('%1', %2" )
2882 code += QLatin1String(
", optional=True" );
2898 map.insert( QStringLiteral(
"parameter_type" ),
type() );
2899 map.insert( QStringLiteral(
"name" ),
mName );
2900 map.insert( QStringLiteral(
"description" ),
mDescription );
2901 map.insert( QStringLiteral(
"help" ),
mHelp );
2902 map.insert( QStringLiteral(
"default" ),
mDefault );
2903 map.insert( QStringLiteral(
"defaultGui" ),
mGuiDefault );
2904 map.insert( QStringLiteral(
"flags" ),
static_cast< int >(
mFlags ) );
2905 map.insert( QStringLiteral(
"metadata" ),
mMetadata );
2911 mName = map.value( QStringLiteral(
"name" ) ).toString();
2912 mDescription = map.value( QStringLiteral(
"description" ) ).toString();
2913 mHelp = map.value( QStringLiteral(
"help" ) ).toString();
2914 mDefault = map.value( QStringLiteral(
"default" ) );
2915 mGuiDefault = map.value( QStringLiteral(
"defaultGui" ) );
2916 mFlags =
static_cast< Flags
>( map.value( QStringLiteral(
"flags" ) ).toInt() );
2917 mMetadata = map.value( QStringLiteral(
"metadata" ) ).toMap();
2933 QString text = QStringLiteral(
"<p><b>%1</b></p>" ).arg(
description() );
2934 if ( !
help().isEmpty() )
2936 text += QStringLiteral(
"<p>%1</p>" ).arg(
help() );
2938 text += QStringLiteral(
"<p>%1</p>" ).arg( QObject::tr(
"Python identifier: ‘%1’" ).arg( QStringLiteral(
"<i>%1</i>" ).arg(
name() ) ) );
2953 if ( !val.isValid() )
2954 return QStringLiteral(
"None" );
2958 return val.toBool() ? QStringLiteral(
"True" ) : QStringLiteral(
"False" );
2963 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
2965 code += QLatin1String(
"optional " );
2966 code +=
type() +
' ';
2967 code +=
mDefault.toBool() ? QStringLiteral(
"true" ) : QStringLiteral(
"false" );
2968 return code.trimmed();
2989 if ( !input.isValid() )
3011 if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( input ) ) )
3014 if ( input.type() != QVariant::String || input.toString().isEmpty() )
3022 if ( !value.isValid() )
3023 return QStringLiteral(
"None" );
3028 return QStringLiteral(
"QgsCoordinateReferenceSystem()" );
3034 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
3037 p.insert(
name(), value );
3064 if ( !input.isValid() )
3072 if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( input ) ) )
3077 if ( input.type() != QVariant::String || input.toString().isEmpty() )
3095 if ( !val.isValid() )
3096 return QStringLiteral(
"None" );
3102 p.insert(
name(), val );
3112 for (
const QString &raster : rasters )
3114 if ( !vectors.contains( raster ) )
3118 for (
const QString &mesh : meshFilters )
3120 if ( !vectors.contains( mesh ) )
3124 for (
const QString &pointCloud : pointCloudFilters )
3126 if ( !vectors.contains( pointCloud ) )
3127 vectors << pointCloud;
3129 vectors.removeAll( QObject::tr(
"All files (*.*)" ) );
3130 std::sort( vectors.begin(), vectors.end() );
3132 return QObject::tr(
"All files (*.*)" ) + QStringLiteral(
";;" ) + vectors.join( QLatin1String(
";;" ) );
3142 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
3144 code += QLatin1String(
"optional " );
3145 code += QLatin1String(
"layer " );
3152 code += QLatin1String(
"hasgeometry " );
3156 code += QLatin1String(
"point " );
3160 code += QLatin1String(
"line " );
3164 code += QLatin1String(
"polygon " );
3168 code += QLatin1String(
"raster " );
3172 code += QLatin1String(
"mesh " );
3176 code += QLatin1String(
"plugin " );
3180 code += QLatin1String(
"pointcloud " );
3184 code += QLatin1String(
"annotation " );
3190 return code.trimmed();
3196 QString def = definition;
3199 if ( def.startsWith( QLatin1String(
"hasgeometry" ), Qt::CaseInsensitive ) )
3202 def = def.mid( 12 );
3205 else if ( def.startsWith( QLatin1String(
"point" ), Qt::CaseInsensitive ) )
3211 else if ( def.startsWith( QLatin1String(
"line" ), Qt::CaseInsensitive ) )
3217 else if ( def.startsWith( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) )
3223 else if ( def.startsWith( QLatin1String(
"raster" ), Qt::CaseInsensitive ) )
3229 else if ( def.startsWith( QLatin1String(
"mesh" ), Qt::CaseInsensitive ) )
3235 else if ( def.startsWith( QLatin1String(
"plugin" ), Qt::CaseInsensitive ) )
3241 else if ( def.startsWith( QLatin1String(
"pointcloud" ), Qt::CaseInsensitive ) )
3244 def = def.mid( 11 );
3247 else if ( def.startsWith( QLatin1String(
"annotation" ), Qt::CaseInsensitive ) )
3250 def = def.mid( 11 );
3261 switch ( outputType )
3265 QString code = QStringLiteral(
"QgsProcessingParameterMapLayer('%1', %2" )
3268 code += QLatin1String(
", optional=True" );
3275 QStringList options;
3279 code += QStringLiteral(
", types=[%1])" ).arg( options.join(
',' ) );
3283 code += QLatin1Char(
')' );
3300 map.insert( QStringLiteral(
"data_types" ), types );
3308 const QVariantList values = map.value( QStringLiteral(
"data_types" ) ).toList();
3309 for (
const QVariant &val : values )
3329 if ( !input.isValid() )
3362 if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( input ) ) )
3365 if ( input.type() != QVariant::String || input.toString().isEmpty() )
3374 const QRegularExpression rx( QStringLiteral(
"^(.*?)\\s*,\\s*(.*?)\\s*,\\s*(.*?)\\s*,\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*$" ) );
3375 const QRegularExpressionMatch match = rx.match( input.toString() );
3376 if ( match.hasMatch() )
3378 bool xMinOk =
false;
3379 ( void )match.captured( 1 ).toDouble( &xMinOk );
3380 bool xMaxOk =
false;
3381 ( void )match.captured( 2 ).toDouble( &xMaxOk );
3382 bool yMinOk =
false;
3383 ( void )match.captured( 3 ).toDouble( &yMinOk );
3384 bool yMaxOk =
false;
3385 ( void )match.captured( 4 ).toDouble( &yMaxOk );
3386 if ( xMinOk && xMaxOk && yMinOk && yMaxOk )
3396 if ( !value.isValid() )
3397 return QStringLiteral(
"None" );
3400 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
3423 const QString wkt = g.
asWkt();
3424 return QStringLiteral(
"QgsGeometry.fromWkt('%1')" ).arg( wkt );
3429 p.insert(
name(), value );
3455 if ( !input.isValid() )
3476 if ( input.type() == QVariant::String )
3478 if ( input.toString().isEmpty() )
3482 const QRegularExpression rx( QStringLiteral(
"^\\s*\\(?\\s*(.*?)\\s*,\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*\\)?\\s*$" ) );
3484 const QRegularExpressionMatch match = rx.match( input.toString() );
3485 if ( match.hasMatch() )
3488 ( void )match.captured( 1 ).toDouble( &xOk );
3490 ( void )match.captured( 2 ).toDouble( &yOk );
3499 if ( !value.isValid() )
3500 return QStringLiteral(
"None" );
3503 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
3523 const QString wkt = g.
asWkt();
3524 return QStringLiteral(
"QgsGeometry.fromWkt('%1')" ).arg( wkt );
3537 const QVariant &defaultValue,
bool optional,
const QList<int> &geometryTypes,
bool allowMultipart )
3539 mGeomTypes( geometryTypes ),
3540 mAllowMultipart( allowMultipart )
3552 if ( !input.isValid() )
3564 return ( anyTypeAllowed || mGeomTypes.contains( input.value<
QgsGeometry>().
type() ) ) &&
3565 ( mAllowMultipart || !input.value<
QgsGeometry>().isMultipart() );
3594 if ( input.type() == QVariant::String )
3596 if ( input.toString().isEmpty() )
3601 const QRegularExpression rx( QStringLiteral(
"^\\s*(?:CRS=(.*);)?(.*?)$" ) );
3603 const QRegularExpressionMatch match = rx.match( input.toString() );
3604 if ( match.hasMatch() )
3609 return ( anyTypeAllowed || mGeomTypes.contains( g.
type() ) ) && ( mAllowMultipart || !g.
isMultipart() );
3629 if ( !value.isValid() )
3630 return QStringLiteral(
"None" );
3682 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
3684 code += QLatin1String(
"optional " );
3685 code +=
type() +
' ';
3687 for (
const int type : mGeomTypes )
3692 code += QLatin1String(
"point " );
3696 code += QLatin1String(
"line " );
3700 code += QLatin1String(
"polygon " );
3704 code += QLatin1String(
"unknown " );
3710 return code.trimmed();
3715 switch ( outputType )
3719 QString code = QStringLiteral(
"QgsProcessingParameterGeometry('%1', %2" )
3722 code += QLatin1String(
", optional=True" );
3724 if ( !mGeomTypes.empty() )
3731 return QStringLiteral(
"PointGeometry" );
3734 return QStringLiteral(
"LineGeometry" );
3737 return QStringLiteral(
"PolygonGeometry" );
3740 return QStringLiteral(
"UnknownGeometry" );
3743 return QStringLiteral(
"NullGeometry" );
3748 QStringList options;
3749 options.reserve( mGeomTypes.size() );
3750 for (
const int type : mGeomTypes )
3754 code += QStringLiteral(
", geometryTypes=[%1 ]" ).arg( options.join(
',' ) );
3757 if ( ! mAllowMultipart )
3759 code += QLatin1String(
", allowMultipart=False" );
3774 for (
const int type : mGeomTypes )
3778 map.insert( QStringLiteral(
"geometrytypes" ), types );
3779 map.insert( QStringLiteral(
"multipart" ), mAllowMultipart );
3787 const QVariantList values = map.value( QStringLiteral(
"geometrytypes" ) ).toList();
3788 for (
const QVariant &val : values )
3790 mGeomTypes << val.toInt();
3792 mAllowMultipart = map.value( QStringLiteral(
"multipart" ) ).toBool();
3803 , mBehavior( behavior )
3804 , mExtension( fileFilter.isEmpty() ? extension : QString() )
3805 , mFileFilter( fileFilter.isEmpty() && extension.isEmpty() ? QObject::tr(
"All files (*.*)" ) : fileFilter )
3817 if ( !input.isValid() )
3825 const QString
string = input.toString().trimmed();
3827 if ( input.type() != QVariant::String ||
string.isEmpty() )
3830 switch ( mBehavior )
3834 if ( !mExtension.isEmpty() )
3836 return string.endsWith( mExtension, Qt::CaseInsensitive );
3838 else if ( !mFileFilter.isEmpty() )
3856 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
3858 code += QLatin1String(
"optional " );
3859 code += ( mBehavior ==
File ? QStringLiteral(
"file" ) : QStringLiteral(
"folder" ) ) +
' ';
3861 return code.trimmed();
3866 switch ( outputType )
3871 QString code = QStringLiteral(
"QgsProcessingParameterFile('%1', %2" )
3874 code += QLatin1String(
", optional=True" );
3875 code += QStringLiteral(
", behavior=%1" ).arg( mBehavior ==
File ? QStringLiteral(
"QgsProcessingParameterFile.File" ) : QStringLiteral(
"QgsProcessingParameterFile.Folder" ) );
3876 if ( !mExtension.isEmpty() )
3877 code += QStringLiteral(
", extension='%1'" ).arg( mExtension );
3878 if ( !mFileFilter.isEmpty() )
3879 code += QStringLiteral(
", fileFilter='%1'" ).arg( mFileFilter );
3890 switch ( mBehavior )
3894 if ( !mFileFilter.isEmpty() )
3895 return mFileFilter != QObject::tr(
"All files (*.*)" ) ? mFileFilter + QStringLiteral(
";;" ) + QObject::tr(
"All files (*.*)" ) : mFileFilter;
3896 else if ( !mExtension.isEmpty() )
3897 return QObject::tr(
"%1 files" ).arg( mExtension.toUpper() ) + QStringLiteral(
" (*." ) + mExtension.toLower() + QStringLiteral(
");;" ) + QObject::tr(
"All files (*.*)" );
3899 return QObject::tr(
"All files (*.*)" );
3911 mFileFilter.clear();
3921 mFileFilter = filter;
3928 map.insert( QStringLiteral(
"behavior" ), mBehavior );
3929 map.insert( QStringLiteral(
"extension" ), mExtension );
3930 map.insert( QStringLiteral(
"filefilter" ), mFileFilter );
3937 mBehavior =
static_cast< Behavior >( map.value( QStringLiteral(
"behavior" ) ).toInt() );
3938 mExtension = map.value( QStringLiteral(
"extension" ) ).toString();
3939 mFileFilter = map.value( QStringLiteral(
"filefilter" ) ).toString();
3950 , mHeaders( headers )
3951 , mNumberRows( numberRows )
3952 , mFixedNumberRows( fixedNumberRows )
3964 if ( !input.isValid() )
3967 if ( input.type() == QVariant::String )
3969 if ( input.toString().isEmpty() )
3973 else if ( input.type() == QVariant::List )
3975 if ( input.toList().isEmpty() )
3979 else if ( input.type() == QVariant::Double || input.type() == QVariant::Int )
3989 if ( !value.isValid() )
3990 return QStringLiteral(
"None" );
3993 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
3996 p.insert(
name(), value );
4004 switch ( outputType )
4008 QString code = QStringLiteral(
"QgsProcessingParameterMatrix('%1', %2" )
4011 code += QLatin1String(
", optional=True" );
4012 code += QStringLiteral(
", numberRows=%1" ).arg( mNumberRows );
4013 code += QStringLiteral(
", hasFixedNumberRows=%1" ).arg( mFixedNumberRows ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
4016 headers.reserve( mHeaders.size() );
4017 for (
const QString &h : mHeaders )
4019 code += QStringLiteral(
", headers=[%1]" ).arg(
headers.join(
',' ) );
4051 return mFixedNumberRows;
4056 mFixedNumberRows = fixedNumberRows;
4062 map.insert( QStringLiteral(
"headers" ), mHeaders );
4063 map.insert( QStringLiteral(
"rows" ), mNumberRows );
4064 map.insert( QStringLiteral(
"fixed_number_rows" ), mFixedNumberRows );
4071 mHeaders = map.value( QStringLiteral(
"headers" ) ).toStringList();
4072 mNumberRows = map.value( QStringLiteral(
"rows" ) ).toInt();
4073 mFixedNumberRows = map.value( QStringLiteral(
"fixed_number_rows" ) ).toBool();
4084 , mLayerType( layerType )
4096 if ( !input.isValid() )
4101 if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( input ) ) )
4107 if ( input.type() == QVariant::String )
4109 if ( input.toString().isEmpty() )
4112 if ( mMinimumNumberInputs > 1 )
4123 else if ( input.type() == QVariant::List )
4125 if ( input.toList().count() < mMinimumNumberInputs )
4128 if ( mMinimumNumberInputs > input.toList().count() )
4136 const auto constToList = input.toList();
4137 for (
const QVariant &v : constToList )
4139 if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( v ) ) )
4148 else if ( input.type() == QVariant::StringList )
4150 if ( input.toStringList().count() < mMinimumNumberInputs )
4153 if ( mMinimumNumberInputs > input.toStringList().count() )
4161 const auto constToStringList = input.toStringList();
4162 for (
const QString &v : constToStringList )
4175 if ( !value.isValid() )
4176 return QStringLiteral(
"None" );
4179 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
4184 if ( value.type() == QVariant::StringList )
4186 const QStringList list = value.toStringList();
4187 parts.reserve( list.count() );
4188 for (
const QString &v : list )
4191 else if ( value.type() == QVariant::List )
4193 const QVariantList list = value.toList();
4194 parts.reserve( list.count() );
4195 for (
const QVariant &v : list )
4198 if ( !parts.isEmpty() )
4199 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4204 p.insert(
name(), value );
4206 if ( !list.isEmpty() )
4209 parts.reserve( list.count() );
4214 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4223 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
4225 code += QLatin1String(
"optional " );
4226 switch ( mLayerType )
4229 code += QLatin1String(
"multiple raster" );
4233 code += QLatin1String(
"multiple file" );
4237 code += QLatin1String(
"multiple vector" );
4241 if (
mDefault.type() == QVariant::List )
4244 const auto constToList =
mDefault.toList();
4245 for (
const QVariant &var : constToList )
4247 parts << var.toString();
4249 code += parts.join(
',' );
4251 else if (
mDefault.type() == QVariant::StringList )
4253 code +=
mDefault.toStringList().join(
',' );
4259 return code.trimmed();
4264 switch ( outputType )
4268 QString code = QStringLiteral(
"QgsProcessingParameterMultipleLayers('%1', %2" )
4271 code += QLatin1String(
", optional=True" );
4275 code += QStringLiteral(
", layerType=%1" ).arg(
layerType );
4286 const QStringList exts;
4287 switch ( mLayerType )
4290 return QObject::tr(
"All files (*.*)" );
4328 return mMinimumNumberInputs;
4340 map.insert( QStringLiteral(
"layer_type" ), mLayerType );
4341 map.insert( QStringLiteral(
"min_inputs" ), mMinimumNumberInputs );
4349 mMinimumNumberInputs = map.value( QStringLiteral(
"min_inputs" ) ).toInt();
4355 QString
type = definition;
4357 const QRegularExpression re( QStringLiteral(
"(.*?)\\s+(.*)" ) );
4358 const QRegularExpressionMatch m = re.match( definition );
4361 type = m.captured( 1 ).toLower().trimmed();
4362 defaultVal = m.captured( 2 );
4365 if (
type == QLatin1String(
"vector" ) )
4367 else if (
type == QLatin1String(
"raster" ) )
4369 else if (
type == QLatin1String(
"file" ) )
4382 QgsMessageLog::logMessage( QObject::tr(
"Invalid number parameter \"%1\": min value %2 is >= max value %3!" ).arg(
name ).arg( mMin ).arg( mMax ), QObject::tr(
"Processing" ) );
4393 QVariant input = value;
4394 if ( !input.isValid() )
4408 const double res = input.toDouble( &ok );
4412 return !( res < mMin || res > mMax );
4417 if ( !value.isValid() )
4418 return QStringLiteral(
"None" );
4421 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
4423 return value.toString();
4430 if ( mMin > std::numeric_limits<double>::lowest() + 1 )
4431 parts << QObject::tr(
"Minimum value: %1" ).arg( mMin );
4432 if ( mMax < std::numeric_limits<double>::max() )
4433 parts << QObject::tr(
"Maximum value: %1" ).arg( mMax );
4435 parts << QObject::tr(
"Default value: %1" ).arg( mDataType ==
Integer ?
mDefault.toInt() :
mDefault.toDouble() );
4436 const QString extra = parts.join( QLatin1String(
"<br />" ) );
4437 if ( !extra.isEmpty() )
4438 text += QStringLiteral(
"<p>%1</p>" ).arg( extra );
4444 switch ( outputType )
4448 QString code = QStringLiteral(
"QgsProcessingParameterNumber('%1', %2" )
4451 code += QLatin1String(
", optional=True" );
4453 code += QStringLiteral(
", type=%1" ).arg( mDataType ==
Integer ? QStringLiteral(
"QgsProcessingParameterNumber.Integer" ) : QStringLiteral(
"QgsProcessingParameterNumber.Double" ) );
4455 if ( mMin != std::numeric_limits<double>::lowest() + 1 )
4456 code += QStringLiteral(
", minValue=%1" ).arg( mMin );
4457 if ( mMax != std::numeric_limits<double>::max() )
4458 code += QStringLiteral(
", maxValue=%1" ).arg( mMax );
4500 map.insert( QStringLiteral(
"min" ), mMin );
4501 map.insert( QStringLiteral(
"max" ), mMax );
4502 map.insert( QStringLiteral(
"data_type" ), mDataType );
4509 mMin = map.value( QStringLiteral(
"min" ) ).toDouble();
4510 mMax = map.value( QStringLiteral(
"max" ) ).toDouble();
4511 mDataType =
static_cast< Type >( map.value( QStringLiteral(
"data_type" ) ).toInt() );
4518 : ( definition.toLower().trimmed() == QLatin1String(
"none" ) ? QVariant() : definition ), isOptional );
4535 if ( !input.isValid() )
4543 if ( input.type() == QVariant::String )
4545 const QStringList list = input.toString().split(
',' );
4546 if ( list.count() != 2 )
4549 list.at( 0 ).toDouble( &ok );
4551 list.at( 1 ).toDouble( &ok2 );
4556 else if ( input.type() == QVariant::List )
4558 if ( input.toList().count() != 2 )
4562 input.toList().at( 0 ).toDouble( &ok );
4564 input.toList().at( 1 ).toDouble( &ok2 );
4575 if ( !value.isValid() )
4576 return QStringLiteral(
"None" );
4579 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
4582 p.insert(
name(), value );
4585 QStringList stringParts;
4586 const auto constParts = parts;
4587 for (
const double v : constParts )
4589 stringParts << QString::number( v );
4591 return stringParts.join(
',' ).prepend(
'[' ).append(
']' );
4596 switch ( outputType )
4600 QString code = QStringLiteral(
"QgsProcessingParameterRange('%1', %2" )
4603 code += QLatin1String(
", optional=True" );
4605 code += QStringLiteral(
", type=%1" ).arg( mDataType ==
QgsProcessingParameterNumber::Integer ? QStringLiteral(
"QgsProcessingParameterNumber.Integer" ) : QStringLiteral(
"QgsProcessingParameterNumber.Double" ) );
4628 map.insert( QStringLiteral(
"data_type" ), mDataType );
4642 : ( definition.toLower().trimmed() == QLatin1String(
"none" ) ? QVariant() : definition ), isOptional );
4658 if ( !input.isValid() )
4666 if ( qobject_cast< QgsRasterLayer * >( qvariant_cast<QObject *>( input ) ) )
4669 if ( input.type() != QVariant::String || input.toString().isEmpty() )
4687 if ( !val.isValid() )
4688 return QStringLiteral(
"None" );
4694 p.insert(
name(), val );
4712 , mOptions( options )
4713 , mAllowMultiple( allowMultiple )
4714 , mUsesStaticStrings( usesStaticStrings )
4726 QVariant input = value;
4727 if ( !input.isValid() )
4740 if ( mUsesStaticStrings )
4742 if ( input.type() == QVariant::List )
4744 if ( !mAllowMultiple )
4747 const QVariantList values = input.toList();
4751 for (
const QVariant &val : values )
4753 if ( !mOptions.contains( val.toString() ) )
4759 else if ( input.type() == QVariant::StringList )
4761 if ( !mAllowMultiple )
4764 const QStringList values = input.toStringList();
4769 if ( values.count() > 1 && !mAllowMultiple )
4772 for (
const QString &val : values )
4774 if ( !mOptions.contains( val ) )
4779 else if ( input.type() == QVariant::String )
4781 const QStringList parts = input.toString().split(
',' );
4782 if ( parts.count() > 1 && !mAllowMultiple )
4785 const auto constParts = parts;
4786 for (
const QString &part : constParts )
4788 if ( !mOptions.contains( part ) )
4796 if ( input.type() == QVariant::List )
4798 if ( !mAllowMultiple )
4801 const QVariantList values = input.toList();
4805 for (
const QVariant &val : values )
4808 const int res = val.toInt( &ok );
4811 else if ( res < 0 || res >= mOptions.count() )
4817 else if ( input.type() == QVariant::String )
4819 const QStringList parts = input.toString().split(
',' );
4820 if ( parts.count() > 1 && !mAllowMultiple )
4823 const auto constParts = parts;
4824 for (
const QString &part : constParts )
4827 const int res = part.toInt( &ok );
4830 else if ( res < 0 || res >= mOptions.count() )
4835 else if ( input.type() == QVariant::Int || input.type() == QVariant::Double )
4838 const int res = input.toInt( &ok );
4841 else if ( res >= 0 && res < mOptions.count() )
4851 if ( !value.isValid() )
4852 return QStringLiteral(
"None" );
4855 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
4857 if ( mUsesStaticStrings )
4859 if ( value.type() == QVariant::StringList )
4862 const QStringList constList = value.toStringList();
4863 for (
const QString &val : constList )
4867 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4869 else if ( value.type() == QVariant::String )
4872 const QStringList constList = value.toString().split(
',' );
4873 if ( constList.count() > 1 )
4875 for (
const QString &val : constList )
4879 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4887 if ( value.type() == QVariant::List )
4890 const auto constToList = value.toList();
4891 for (
const QVariant &val : constToList )
4893 parts << QString::number( static_cast< int >( val.toDouble() ) );
4895 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4897 else if ( value.type() == QVariant::String )
4899 const QStringList parts = value.toString().split(
',' );
4900 if ( parts.count() > 1 )
4902 return parts.join(
',' ).prepend(
'[' ).append(
']' );
4906 return QString::number(
static_cast< int >( value.toDouble() ) );
4912 if ( !value.isValid() )
4918 if ( mUsesStaticStrings )
4924 if ( value.type() == QVariant::List )
4927 const QVariantList toList = value.toList();
4928 parts.reserve( toList.size() );
4929 for (
const QVariant &val : toList )
4931 parts << mOptions.value(
static_cast< int >( val.toDouble() ) );
4933 return parts.join(
',' );
4935 else if ( value.type() == QVariant::String )
4937 const QStringList parts = value.toString().split(
',' );
4938 QStringList comments;
4939 if ( parts.count() > 1 )
4941 for (
const QString &part : parts )
4944 const int val = part.toInt( &ok );
4946 comments << mOptions.value( val );
4948 return comments.join(
',' );
4952 return mOptions.value(
static_cast< int >( value.toDouble() ) );
4958 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
4960 code += QLatin1String(
"optional " );
4961 code += QLatin1String(
"enum " );
4963 if ( mAllowMultiple )
4964 code += QLatin1String(
"multiple " );
4966 if ( mUsesStaticStrings )
4967 code += QLatin1String(
"static " );
4969 code += mOptions.join(
';' ) +
' ';
4972 return code.trimmed();
4977 switch ( outputType )
4981 QString code = QStringLiteral(
"QgsProcessingParameterEnum('%1', %2" )
4984 code += QLatin1String(
", optional=True" );
4987 options.reserve( mOptions.size() );
4988 for (
const QString &o : mOptions )
4990 code += QStringLiteral(
", options=[%1]" ).arg(
options.join(
',' ) );
4992 code += QStringLiteral(
", allowMultiple=%1" ).arg( mAllowMultiple ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
4994 code += QStringLiteral(
", usesStaticStrings=%1" ).arg( mUsesStaticStrings ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
5017 return mAllowMultiple;
5027 return mUsesStaticStrings;
5038 map.insert( QStringLiteral(
"options" ), mOptions );
5039 map.insert( QStringLiteral(
"allow_multiple" ), mAllowMultiple );
5040 map.insert( QStringLiteral(
"uses_static_strings" ), mUsesStaticStrings );
5047 mOptions = map.value( QStringLiteral(
"options" ) ).toStringList();
5048 mAllowMultiple = map.value( QStringLiteral(
"allow_multiple" ) ).toBool();
5049 mUsesStaticStrings = map.value( QStringLiteral(
"uses_static_strings" ) ).toBool();
5056 QString def = definition;
5058 bool multiple =
false;
5059 if ( def.startsWith( QLatin1String(
"multiple" ), Qt::CaseInsensitive ) )
5065 bool staticStrings =
false;
5066 if ( def.startsWith( QLatin1String(
"static" ), Qt::CaseInsensitive ) )
5068 staticStrings =
true;
5072 const QRegularExpression re( QStringLiteral(
"(.*)\\s+(.*?)$" ) );
5073 const QRegularExpressionMatch m = re.match( def );
5074 QString values = def;
5077 values = m.captured( 1 ).trimmed();
5078 defaultVal = m.captured( 2 );
5086 , mMultiLine( multiLine )
5098 if ( !value.isValid() || value.isNull() )
5099 return QStringLiteral(
"None" );
5102 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
5104 const QString s = value.toString();
5110 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
5112 code += QLatin1String(
"optional " );
5113 code += QLatin1String(
"string " );
5116 code += QLatin1String(
"long " );
5119 return code.trimmed();
5124 switch ( outputType )
5128 QString code = QStringLiteral(
"QgsProcessingParameterString('%1', %2" )
5131 code += QLatin1String(
", optional=True" );
5132 code += QStringLiteral(
", multiLine=%1" ).arg( mMultiLine ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
5155 map.insert( QStringLiteral(
"multiline" ), mMultiLine );
5162 mMultiLine = map.value( QStringLiteral(
"multiline" ) ).toBool();
5168 QString def = definition;
5170 if ( def.startsWith( QLatin1String(
"long" ), Qt::CaseInsensitive ) )
5176 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
5178 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
5182 if ( def == QLatin1String(
"None" ) )
5205 if ( !value.isValid() )
5206 return QStringLiteral(
"None" );
5208 const QString s = value.toString();
5214 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
5216 code += QLatin1String(
"optional " );
5217 code += QLatin1String(
"authcfg " );
5220 return code.trimmed();
5225 QString def = definition;
5227 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
5229 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
5233 if ( def == QLatin1String(
"None" ) )
5246 , mParentLayerParameterName( parentLayerParameterName )
5258 if ( !value.isValid() )
5259 return QStringLiteral(
"None" );
5262 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
5264 const QString s = value.toString();
5270 QStringList depends;
5271 if ( !mParentLayerParameterName.isEmpty() )
5272 depends << mParentLayerParameterName;
5278 switch ( outputType )
5282 QString code = QStringLiteral(
"QgsProcessingParameterExpression('%1', %2" )
5285 code += QLatin1String(
", optional=True" );
5287 code += QStringLiteral(
", parentLayerParameterName='%1'" ).arg( mParentLayerParameterName );
5299 return mParentLayerParameterName;
5310 map.insert( QStringLiteral(
"parent_layer" ), mParentLayerParameterName );
5317 mParentLayerParameterName = map.value( QStringLiteral(
"parent_layer" ) ).toString();
5358 if ( qobject_cast< QgsVectorLayer * >( qvariant_cast<QObject *>( var ) ) )
5361 if ( var.type() != QVariant::String || var.toString().isEmpty() )
5379 if ( !val.isValid() )
5380 return QStringLiteral(
"None" );
5386 p.insert(
name(), val );
5394 switch ( outputType )
5398 QString code = QStringLiteral(
"QgsProcessingParameterVectorLayer('%1', %2" )
5401 code += QLatin1String(
", optional=True" );
5405 QStringList options;
5408 code += QStringLiteral(
", types=[%1]" ).arg( options.join(
',' ) );
5442 map.insert( QStringLiteral(
"data_types" ), types );
5450 const QVariantList values = map.value( QStringLiteral(
"data_types" ) ).toList();
5451 for (
const QVariant &val : values )
5464 const QVariant &defaultValue,
bool optional )
5495 if ( qobject_cast< QgsMeshLayer * >( qvariant_cast<QObject *>( var ) ) )
5498 if ( var.type() != QVariant::String || var.toString().isEmpty() )
5516 if ( !val.isValid() )
5517 return QStringLiteral(
"None" );
5523 p.insert(
name(), val );
5541 , mParentLayerParameterName( parentLayerParameterName )
5543 , mAllowMultiple( allowMultiple )
5544 , mDefaultToAllFields( defaultToAllFields )
5557 if ( !input.isValid() )
5565 if ( input.type() == QVariant::List || input.type() == QVariant::StringList )
5567 if ( !mAllowMultiple )
5573 else if ( input.type() == QVariant::String )
5575 if ( input.toString().isEmpty() )
5578 const QStringList parts = input.toString().split(
';' );
5579 if ( parts.count() > 1 && !mAllowMultiple )
5584 if ( input.toString().isEmpty() )
5592 if ( !value.isValid() )
5593 return QStringLiteral(
"None" );
5596 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
5598 if ( value.type() == QVariant::List )
5601 const auto constToList = value.toList();
5602 for (
const QVariant &val : constToList )
5606 return parts.join(
',' ).prepend(
'[' ).append(
']' );
5608 else if ( value.type() == QVariant::StringList )
5611 const auto constToStringList = value.toStringList();
5612 for (
const QString &s : constToStringList )
5616 return parts.join(
',' ).prepend(
'[' ).append(
']' );
5624 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
5626 code += QLatin1String(
"optional " );
5627 code += QLatin1String(
"field " );
5629 switch ( mDataType )
5632 code += QLatin1String(
"numeric " );
5636 code += QLatin1String(
"string " );
5640 code += QLatin1String(
"datetime " );
5647 if ( mAllowMultiple )
5648 code += QLatin1String(
"multiple " );
5650 if ( mDefaultToAllFields )
5651 code += QLatin1String(
"default_to_all_fields " );
5653 code += mParentLayerParameterName +
' ';
5656 return code.trimmed();
5661 switch ( outputType )
5665 QString code = QStringLiteral(
"QgsProcessingParameterField('%1', %2" )
5668 code += QLatin1String(
", optional=True" );
5671 switch ( mDataType )
5674 dataType = QStringLiteral(
"QgsProcessingParameterField.Any" );
5678 dataType = QStringLiteral(
"QgsProcessingParameterField.Numeric" );
5682 dataType = QStringLiteral(
"QgsProcessingParameterField.String" );
5686 dataType = QStringLiteral(
"QgsProcessingParameterField.DateTime" );
5689 code += QStringLiteral(
", type=%1" ).arg(
dataType );
5691 code += QStringLiteral(
", parentLayerParameterName='%1'" ).arg( mParentLayerParameterName );
5692 code += QStringLiteral(
", allowMultiple=%1" ).arg( mAllowMultiple ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
5696 if ( mDefaultToAllFields )
5697 code += QLatin1String(
", defaultToAllFields=True" );
5709 QStringList depends;
5710 if ( !mParentLayerParameterName.isEmpty() )
5711 depends << mParentLayerParameterName;
5717 return mParentLayerParameterName;
5737 return mAllowMultiple;
5747 return mDefaultToAllFields;
5752 mDefaultToAllFields = enabled;
5758 map.insert( QStringLiteral(
"parent_layer" ), mParentLayerParameterName );
5759 map.insert( QStringLiteral(
"data_type" ), mDataType );
5760 map.insert( QStringLiteral(
"allow_multiple" ), mAllowMultiple );
5761 map.insert( QStringLiteral(
"default_to_all_fields" ), mDefaultToAllFields );
5768 mParentLayerParameterName = map.value( QStringLiteral(
"parent_layer" ) ).toString();
5769 mDataType =
static_cast< DataType >( map.value( QStringLiteral(
"data_type" ) ).toInt() );
5770 mAllowMultiple = map.value( QStringLiteral(
"allow_multiple" ) ).toBool();
5771 mDefaultToAllFields = map.value( QStringLiteral(
"default_to_all_fields" ) ).toBool();
5781 QString def = definition;
5783 if ( def.startsWith( QLatin1String(
"numeric " ), Qt::CaseInsensitive ) )
5788 else if ( def.startsWith( QLatin1String(
"string " ), Qt::CaseInsensitive ) )
5793 else if ( def.startsWith( QLatin1String(
"datetime " ), Qt::CaseInsensitive ) )
5799 if ( def.startsWith( QLatin1String(
"multiple" ), Qt::CaseInsensitive ) )
5802 def = def.mid( 8 ).trimmed();
5805 if ( def.startsWith( QLatin1String(
"default_to_all_fields" ), Qt::CaseInsensitive ) )
5808 def = def.mid( 21 ).trimmed();
5811 const QRegularExpression re( QStringLiteral(
"(.*?)\\s+(.*)$" ) );
5812 const QRegularExpressionMatch m = re.match( def );
5815 parent = m.captured( 1 ).trimmed();
5816 def = m.captured( 2 );
5841 QVariant var = input;
5842 if ( !var.isValid() )
5869 if ( qobject_cast< QgsVectorLayer * >( qvariant_cast<QObject *>( input ) ) )
5874 if ( var.type() != QVariant::String || var.toString().isEmpty() )
5892 if ( !value.isValid() )
5893 return QStringLiteral(
"None" );
5901 QString geometryCheckString;
5905 geometryCheckString = QStringLiteral(
"QgsFeatureRequest.GeometryNoCheck" );
5909 geometryCheckString = QStringLiteral(
"QgsFeatureRequest.GeometrySkipInvalid" );
5913 geometryCheckString = QStringLiteral(
"QgsFeatureRequest.GeometryAbortOnInvalid" );
5919 if ( fromVar.
flags & QgsProcessingFeatureSourceDefinition::Flag::FlagOverrideDefaultGeometryCheck )
5920 flags << QStringLiteral(
"QgsProcessingFeatureSourceDefinition.FlagOverrideDefaultGeometryCheck" );
5921 if ( fromVar.
flags & QgsProcessingFeatureSourceDefinition::Flag::FlagCreateIndividualOutputPerInputFeature )
5922 flags << QStringLiteral(
"QgsProcessingFeatureSourceDefinition.FlagCreateIndividualOutputPerInputFeature" );
5923 if ( !
flags.empty() )
5924 flagString =
flags.join( QLatin1String(
" | " ) );
5931 layerString = layer->source();
5938 flagString.isEmpty() ? QString() : ( QStringLiteral(
", flags=%1" ).arg( flagString ) ),
5939 geometryCheckString );
5950 return QStringLiteral(
"QgsProcessingFeatureSourceDefinition(QgsProperty.fromExpression(%1), selectedFeaturesOnly=%2, featureLimit=%3%4, geometryCheck=%5)" )
5954 flagString.isEmpty() ? QString() : ( QStringLiteral(
", flags=%1" ).arg( flagString ) ),
5955 geometryCheckString );
5963 else if (
QgsVectorLayer *layer = qobject_cast< QgsVectorLayer * >( qvariant_cast<QObject *>( value ) ) )
5968 QString layerString = value.toString();
5972 layerString = layer->providerType() != QLatin1String(
"ogr" ) && layer->providerType() != QLatin1String(
"gdal" ) && layer->providerType() != QLatin1String(
"mdal" ) ?
QgsProcessingUtils::encodeProviderKeyAndUri( layer->providerType(), layer->source() ) : layer->source();
5979 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
5981 code += QLatin1String(
"optional " );
5982 code += QLatin1String(
"source " );
5989 code += QLatin1String(
"point " );
5993 code += QLatin1String(
"line " );
5997 code += QLatin1String(
"polygon " );
6004 return code.trimmed();
6009 switch ( outputType )
6013 QString code = QStringLiteral(
"QgsProcessingParameterFeatureSource('%1', %2" )
6016 code += QLatin1String(
", optional=True" );
6020 QStringList options;
6024 code += QStringLiteral(
", types=[%1]" ).arg( options.join(
',' ) );
6041 : mDataTypes( types )
6054 map.insert( QStringLiteral(
"data_types" ), types );
6062 const QVariantList values = map.value( QStringLiteral(
"data_types" ) ).toList();
6063 for (
const QVariant &val : values )
6073 QString def = definition;
6076 if ( def.startsWith( QLatin1String(
"point" ), Qt::CaseInsensitive ) )
6082 else if ( def.startsWith( QLatin1String(
"line" ), Qt::CaseInsensitive ) )
6088 else if ( def.startsWith( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) )
6103 , mSupportsAppend( supportsAppend )
6114 QVariant var = input;
6115 if ( !var.isValid() )
6137 if ( var.type() != QVariant::String )
6140 if ( var.toString().isEmpty() )
6148 if ( !value.isValid() )
6149 return QStringLiteral(
"None" );
6152 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
6163 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( fromVar.
sink.
asExpression() );
6172 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
6174 code += QLatin1String(
"optional " );
6175 code += QLatin1String(
"sink " );
6177 switch ( mDataType )
6180 code += QLatin1String(
"point " );
6184 code += QLatin1String(
"line " );
6188 code += QLatin1String(
"polygon " );
6192 code += QLatin1String(
"table " );
6200 return code.trimmed();
6212 return lOriginalProvider->defaultVectorFileExtension(
hasGeometry() );
6216 return p->defaultVectorFileExtension(
hasGeometry() );
6226 return QStringLiteral(
"dbf" );
6233 switch ( outputType )
6237 QString code = QStringLiteral(
"QgsProcessingParameterFeatureSink('%1', %2" )
6240 code += QLatin1String(
", optional=True" );
6244 code += QStringLiteral(
", createByDefault=%1" ).arg(
createByDefault() ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
6245 if ( mSupportsAppend )
6246 code += QLatin1String(
", supportsAppend=True" );
6259 QStringList filters;
6260 for (
const QString &ext : exts )
6262 filters << QObject::tr(
"%1 files (*.%2)" ).arg( ext.toUpper(), ext.toLower() );
6264 return filters.join( QLatin1String(
";;" ) ) + QStringLiteral(
";;" ) + QObject::tr(
"All files (*.*)" );
6273 return lOriginalProvider->supportedOutputVectorLayerExtensions();
6275 return lOriginalProvider->supportedOutputTableExtensions();
6280 return p->supportedOutputVectorLayerExtensions();
6282 return p->supportedOutputTableExtensions();
6297 switch ( mDataType )
6326 map.insert( QStringLiteral(
"data_type" ), mDataType );
6327 map.insert( QStringLiteral(
"supports_append" ), mSupportsAppend );
6335 mSupportsAppend = map.value( QStringLiteral(
"supports_append" ), false ).toBool();
6342 return QStringLiteral(
"memory:%1" ).arg(
description() );
6350 QString def = definition;
6351 if ( def.startsWith( QLatin1String(
"point" ), Qt::CaseInsensitive ) )
6356 else if ( def.startsWith( QLatin1String(
"line" ), Qt::CaseInsensitive ) )
6361 else if ( def.startsWith( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) )
6366 else if ( def.startsWith( QLatin1String(
"table" ), Qt::CaseInsensitive ) )
6377 return mSupportsAppend;
6397 QVariant var = input;
6398 if ( !var.isValid() )
6420 if ( var.type() != QVariant::String )
6423 if ( var.toString().isEmpty() )
6431 if ( !value.isValid() )
6432 return QStringLiteral(
"None" );
6435 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
6446 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( fromVar.
sink.
asExpression() );
6462 return lOriginalProvider->defaultRasterFileExtension();
6466 return p->defaultRasterFileExtension();
6477 QStringList filters;
6478 for (
const QString &ext : exts )
6480 filters << QObject::tr(
"%1 files (*.%2)" ).arg( ext.toUpper(), ext.toLower() );
6482 return filters.join( QLatin1String(
";;" ) ) + QStringLiteral(
";;" ) + QObject::tr(
"All files (*.*)" );
6489 return lOriginalProvider->supportedOutputRasterLayerExtensions();
6493 return p->supportedOutputRasterLayerExtensions();
6509 , mFileFilter( fileFilter.isEmpty() ? QObject::tr(
"All files (*.*)" ) : fileFilter )
6521 QVariant var = input;
6522 if ( !var.isValid() )
6544 if ( var.type() != QVariant::String )
6547 if ( var.toString().isEmpty() )
6557 if ( !value.isValid() )
6558 return QStringLiteral(
"None" );
6561 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
6572 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( fromVar.
sink.
asExpression() );
6581 if ( !mFileFilter.isEmpty() && mFileFilter.contains( QStringLiteral(
"htm" ), Qt::CaseInsensitive ) )
6593 if ( mFileFilter.isEmpty() || mFileFilter == QObject::tr(
"All files (*.*)" ) )
6594 return QStringLiteral(
"file" );
6597 const QRegularExpression rx( QStringLiteral(
".*?\\(\\*\\.([a-zA-Z0-9._]+).*" ) );
6598 const QRegularExpressionMatch match = rx.match( mFileFilter );
6599 if ( !match.hasMatch() )
6600 return QStringLiteral(
"file" );
6602 return match.captured( 1 );
6607 switch ( outputType )
6611 QString code = QStringLiteral(
"QgsProcessingParameterFileDestination('%1', %2" )
6614 code += QLatin1String(
", optional=True" );
6618 code += QStringLiteral(
", createByDefault=%1" ).arg(
createByDefault() ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
6630 return (
fileFilter().isEmpty() ? QString() :
fileFilter() + QStringLiteral(
";;" ) ) + QObject::tr(
"All files (*.*)" );
6646 map.insert( QStringLiteral(
"file_filter" ), mFileFilter );
6653 mFileFilter = map.value( QStringLiteral(
"file_filter" ) ).toString();
6674 QVariant var = input;
6675 if ( !var.isValid() )
6691 if ( var.type() != QVariant::String )
6694 if ( var.toString().isEmpty() )
6717 , mCreateByDefault( createByDefault )
6725 map.insert( QStringLiteral(
"supports_non_file_outputs" ), mSupportsNonFileBasedOutputs );
6726 map.insert( QStringLiteral(
"create_by_default" ), mCreateByDefault );
6733 mSupportsNonFileBasedOutputs = map.value( QStringLiteral(
"supports_non_file_outputs" ) ).toBool();
6734 mCreateByDefault = map.value( QStringLiteral(
"create_by_default" ), QStringLiteral(
"1" ) ).toBool();
6740 switch ( outputType )
6747 QString code = t->className() + QStringLiteral(
"('%1', %2" )
6750 code += QLatin1String(
", optional=True" );
6752 code += QStringLiteral(
", createByDefault=%1" ).arg( mCreateByDefault ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
6767 return QObject::tr(
"Default extension" ) + QStringLiteral(
" (*." ) +
defaultFileExtension() +
')';
6774 const QRegularExpression rx( QStringLiteral(
"[.]" ) );
6775 QString sanitizedName =
name();
6776 sanitizedName.replace( rx, QStringLiteral(
"_" ) );
6791 return lOriginalProvider->isSupportedOutputValue( value,
this, context, error );
6800 return mCreateByDefault;
6822 QVariant var = input;
6823 if ( !var.isValid() )
6845 if ( var.type() != QVariant::String )
6848 if ( var.toString().isEmpty() )
6856 if ( !value.isValid() )
6857 return QStringLiteral(
"None" );
6860 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
6871 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( fromVar.
sink.
asExpression() );
6880 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
6882 code += QLatin1String(
"optional " );
6883 code += QLatin1String(
"vectorDestination " );
6885 switch ( mDataType )
6888 code += QLatin1String(
"point " );
6892 code += QLatin1String(
"line " );
6896 code += QLatin1String(
"polygon " );
6904 return code.trimmed();
6916 return lOriginalProvider->defaultVectorFileExtension(
hasGeometry() );
6920 return p->defaultVectorFileExtension(
hasGeometry() );
6930 return QStringLiteral(
"dbf" );
6937 switch ( outputType )
6941 QString code = QStringLiteral(
"QgsProcessingParameterVectorDestination('%1', %2" )
6944 code += QLatin1String(
", optional=True" );
6948 code += QStringLiteral(
", createByDefault=%1" ).arg(
createByDefault() ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
6961 QStringList filters;
6962 for (
const QString &ext : exts )
6964 filters << QObject::tr(
"%1 files (*.%2)" ).arg( ext.toUpper(), ext.toLower() );
6966 return filters.join( QLatin1String(
";;" ) ) + QStringLiteral(
";;" ) + QObject::tr(
"All files (*.*)" );
6974 return lOriginalProvider->supportedOutputVectorLayerExtensions();
6976 return lOriginalProvider->supportedOutputTableExtensions();
6981 return p->supportedOutputVectorLayerExtensions();
6983 return p->supportedOutputTableExtensions();
6998 switch ( mDataType )
7027 map.insert( QStringLiteral(
"data_type" ), mDataType );
7041 QString def = definition;
7042 if ( def.startsWith( QLatin1String(
"point" ), Qt::CaseInsensitive ) )
7047 else if ( def.startsWith( QLatin1String(
"line" ), Qt::CaseInsensitive ) )
7052 else if ( def.startsWith( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) )
7063 , mParentLayerParameterName( parentLayerParameterName )
7064 , mAllowMultiple( allowMultiple )
7076 if ( !input.isValid() )
7084 if ( input.type() == QVariant::List || input.type() == QVariant::StringList )
7086 if ( !mAllowMultiple )
7095 const double res = input.toInt( &ok );
7105 return mAllowMultiple;
7115 if ( !value.isValid() )
7116 return QStringLiteral(
"None" );
7119 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7121 if ( value.type() == QVariant::List )
7124 const QVariantList values = value.toList();
7125 for (
auto it = values.constBegin(); it != values.constEnd(); ++it )
7127 parts << QString::number( static_cast< int >( it->toDouble() ) );
7129 return parts.join(
',' ).prepend(
'[' ).append(
']' );
7131 else if ( value.type() == QVariant::StringList )
7134 const QStringList values = value.toStringList();
7135 for (
auto it = values.constBegin(); it != values.constEnd(); ++it )
7137 parts << QString::number( static_cast< int >( it->toDouble() ) );
7139 return parts.join(
',' ).prepend(
'[' ).append(
']' );
7142 return value.toString();
7147 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7149 code += QLatin1String(
"optional " );
7150 code += QLatin1String(
"band " );
7152 if ( mAllowMultiple )
7153 code += QLatin1String(
"multiple " );
7155 code += mParentLayerParameterName +
' ';
7158 return code.trimmed();
7163 QStringList depends;
7164 if ( !mParentLayerParameterName.isEmpty() )
7165 depends << mParentLayerParameterName;
7171 switch ( outputType )
7175 QString code = QStringLiteral(
"QgsProcessingParameterBand('%1', %2" )
7178 code += QLatin1String(
", optional=True" );
7180 code += QStringLiteral(
", parentLayerParameterName='%1'" ).arg( mParentLayerParameterName );
7181 code += QStringLiteral(
", allowMultiple=%1" ).arg( mAllowMultiple ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
7193 return mParentLayerParameterName;
7204 map.insert( QStringLiteral(
"parent_layer" ), mParentLayerParameterName );
7205 map.insert( QStringLiteral(
"allow_multiple" ), mAllowMultiple );
7212 mParentLayerParameterName = map.value( QStringLiteral(
"parent_layer" ) ).toString();
7213 mAllowMultiple = map.value( QStringLiteral(
"allow_multiple" ) ).toBool();
7220 QString def = definition;
7223 if ( def.startsWith( QLatin1String(
"multiple" ), Qt::CaseInsensitive ) )
7226 def = def.mid( 8 ).trimmed();
7229 const QRegularExpression re( QStringLiteral(
"(.*?)\\s+(.*)$" ) );
7230 const QRegularExpressionMatch m = re.match( def );
7233 parent = m.captured( 1 ).trimmed();
7234 def = m.captured( 2 );
7251 , mParentParameterName( parentParameterName )
7268 QStringList depends;
7269 if ( !mParentParameterName.isEmpty() )
7270 depends << mParentParameterName;
7276 switch ( outputType )
7280 QString code = QStringLiteral(
"QgsProcessingParameterDistance('%1', %2" )
7283 code += QLatin1String(
", optional=True" );
7285 code += QStringLiteral(
", parentParameterName='%1'" ).arg( mParentParameterName );
7287 if (
minimum() != std::numeric_limits<double>::lowest() + 1 )
7288 code += QStringLiteral(
", minValue=%1" ).arg(
minimum() );
7289 if (
maximum() != std::numeric_limits<double>::max() )
7290 code += QStringLiteral(
", maxValue=%1" ).arg(
maximum() );
7301 return mParentParameterName;
7312 map.insert( QStringLiteral(
"parent" ), mParentParameterName );
7313 map.insert( QStringLiteral(
"default_unit" ),
static_cast< int >( mDefaultUnit ) );
7320 mParentParameterName = map.value( QStringLiteral(
"parent" ) ).toString();
7347 switch ( outputType )
7351 QString code = QStringLiteral(
"QgsProcessingParameterDuration('%1', %2" )
7354 code += QLatin1String(
", optional=True" );
7356 if (
minimum() != std::numeric_limits<double>::lowest() + 1 )
7357 code += QStringLiteral(
", minValue=%1" ).arg(
minimum() );
7358 if (
maximum() != std::numeric_limits<double>::max() )
7359 code += QStringLiteral(
", maxValue=%1" ).arg(
maximum() );
7371 map.insert( QStringLiteral(
"default_unit" ),
static_cast< int >( mDefaultUnit ) );
7405 switch ( outputType )
7409 QString code = QStringLiteral(
"QgsProcessingParameterScale('%1', %2" )
7412 code += QLatin1String(
", optional=True" );
7424 : ( definition.toLower().trimmed() == QLatin1String(
"none" ) ? QVariant() : definition ), isOptional );
7443 if ( !value.isValid() || value.isNull() )
7444 return QStringLiteral(
"None" );
7447 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7449 const QString s = value.toString();
7455 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7457 code += QLatin1String(
"optional " );
7458 code += QLatin1String(
"layout " );
7461 return code.trimmed();
7466 switch ( outputType )
7470 QString code = QStringLiteral(
"QgsProcessingParameterLayout('%1', %2" )
7473 code += QLatin1String(
", optional=True" );
7484 QString def = definition;
7486 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
7488 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
7492 if ( def == QLatin1String(
"None" ) )
7505 , mParentLayoutParameterName( parentLayoutParameterName )
7506 , mItemType( itemType )
7518 if ( !value.isValid() || value.isNull() )
7519 return QStringLiteral(
"None" );
7522 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7524 const QString s = value.toString();
7530 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7532 code += QLatin1String(
"optional " );
7533 code += QLatin1String(
"layoutitem " );
7534 if ( mItemType >= 0 )
7535 code += QString::number( mItemType ) +
' ';
7537 code += mParentLayoutParameterName +
' ';
7540 return code.trimmed();
7545 switch ( outputType )
7549 QString code = QStringLiteral(
"QgsProcessingParameterLayoutItem('%1', %2" )
7552 code += QLatin1String(
", optional=True" );
7554 if ( mItemType >= 0 )
7555 code += QStringLiteral(
", itemType=%1" ).arg( mItemType );
7557 code += QStringLiteral(
", parentLayoutParameterName='%1'" ).arg( mParentLayoutParameterName );
7570 map.insert( QStringLiteral(
"parent_layout" ), mParentLayoutParameterName );
7571 map.insert( QStringLiteral(
"item_type" ), mItemType );
7578 mParentLayoutParameterName = map.value( QStringLiteral(
"parent_layout" ) ).toString();
7579 mItemType = map.value( QStringLiteral(
"item_type" ) ).toInt();
7585 QStringList depends;
7586 if ( !mParentLayoutParameterName.isEmpty() )
7587 depends << mParentLayoutParameterName;
7594 QString def = definition;
7596 const QRegularExpression re( QStringLiteral(
"(\\d+)?\\s*(.*?)\\s+(.*)$" ) );
7597 const QRegularExpressionMatch m = re.match( def );
7600 itemType = m.captured( 1 ).trimmed().isEmpty() ? -1 : m.captured( 1 ).trimmed().toInt();
7601 parent = m.captured( 2 ).trimmed().isEmpty() ? m.captured( 3 ).trimmed() : m.captured( 2 ).trimmed();
7602 def = !m.captured( 2 ).trimmed().isEmpty() ? m.captured( 3 ) : QString();
7615 return mParentLayoutParameterName;
7620 mParentLayoutParameterName =
name;
7639 , mAllowOpacity( opacityEnabled )
7651 if ( !value.isValid() || value.isNull() )
7652 return QStringLiteral(
"None" );
7655 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7657 if ( value.canConvert< QColor >() && !value.value< QColor >().isValid() )
7658 return QStringLiteral(
"QColor()" );
7660 if ( value.canConvert< QColor >() )
7662 const QColor
c = value.value< QColor >();
7663 if ( !mAllowOpacity ||
c.alpha() == 255 )
7664 return QStringLiteral(
"QColor(%1, %2, %3)" ).arg(
c.red() ).arg(
c.green() ).arg(
c.blue() );
7666 return QStringLiteral(
"QColor(%1, %2, %3, %4)" ).arg(
c.red() ).arg(
c.green() ).arg(
c.blue() ).arg(
c.alpha() );
7669 const QString s = value.toString();
7675 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7677 code += QLatin1String(
"optional " );
7678 code += QLatin1String(
"color " );
7680 if ( mAllowOpacity )
7681 code += QLatin1String(
"withopacity " );
7684 return code.trimmed();
7689 switch ( outputType )
7693 QString code = QStringLiteral(
"QgsProcessingParameterColor('%1', %2" )
7696 code += QLatin1String(
", optional=True" );
7698 code += QStringLiteral(
", opacityEnabled=%1" ).arg( mAllowOpacity ? QStringLiteral(
"True" ) : QStringLiteral(
"False" ) );
7710 if ( !input.isValid() && (
mDefault.isValid() && ( !
mDefault.toString().isEmpty() ||
mDefault.value< QColor >().isValid() ) ) )
7713 if ( !input.isValid() )
7716 if ( input.type() == QVariant::Color )
7725 if ( input.type() != QVariant::String || input.toString().isEmpty() )
7728 bool containsAlpha =
false;
7735 map.insert( QStringLiteral(
"opacityEnabled" ), mAllowOpacity );
7742 mAllowOpacity = map.value( QStringLiteral(
"opacityEnabled" ) ).toBool();
7748 return mAllowOpacity;
7753 mAllowOpacity = enabled;
7758 QString def = definition;
7760 bool allowOpacity =
false;
7761 if ( def.startsWith( QLatin1String(
"withopacity" ), Qt::CaseInsensitive ) )
7763 allowOpacity =
true;
7764 def = def.mid( 12 );
7767 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
7769 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
7773 if ( def == QLatin1String(
"None" ) )
7784 , mSourceParameterName( sourceCrsParameterName )
7785 , mDestParameterName( destinationCrsParameterName )
7786 , mSourceCrs( staticSourceCrs )
7787 , mDestCrs( staticDestinationCrs )
7799 if ( !value.isValid() || value.isNull() )
7800 return QStringLiteral(
"None" );
7805 return QStringLiteral(
"QgsCoordinateReferenceSystem()" );
7811 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7814 p.insert(
name(), value );
7819 const QString s = value.toString();
7825 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7827 code += QLatin1String(
"optional " );
7828 code += QLatin1String(
"coordinateoperation " );
7831 return code.trimmed();
7836 switch ( outputType )
7841 QString code = QStringLiteral(
"QgsProcessingParameterCoordinateOperation('%1', %2" )
7844 code += QLatin1String(
", optional=True" );
7845 if ( !mSourceParameterName.isEmpty() )
7846 code += QStringLiteral(
", sourceCrsParameterName=%1" ).arg(
valueAsPythonString( mSourceParameterName,
c ) );
7847 if ( !mDestParameterName.isEmpty() )
7848 code += QStringLiteral(
", destinationCrsParameterName=%1" ).arg(
valueAsPythonString( mDestParameterName,
c ) );
7850 if ( mSourceCrs.isValid() )
7852 if ( mDestCrs.isValid() )
7853 code += QStringLiteral(
", staticDestinationCrs=%1" ).arg(
valueAsPythonString( mDestCrs,
c ) );
7865 if ( !mSourceParameterName.isEmpty() )
7866 res << mSourceParameterName;
7867 if ( !mDestParameterName.isEmpty() )
7868 res << mDestParameterName;
7875 map.insert( QStringLiteral(
"source_crs_parameter_name" ), mSourceParameterName );
7876 map.insert( QStringLiteral(
"dest_crs_parameter_name" ), mDestParameterName );
7877 map.insert( QStringLiteral(
"static_source_crs" ), mSourceCrs );
7878 map.insert( QStringLiteral(
"static_dest_crs" ), mDestCrs );
7885 mSourceParameterName = map.value( QStringLiteral(
"source_crs_parameter_name" ) ).toString();
7886 mDestParameterName = map.value( QStringLiteral(
"dest_crs_parameter_name" ) ).toString();
7887 mSourceCrs = map.value( QStringLiteral(
"static_source_crs" ) );
7888 mDestCrs = map.value( QStringLiteral(
"static_dest_crs" ) );
7894 QString def = definition;
7896 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
7898 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
7902 if ( def == QLatin1String(
"None" ) )
7927 if ( !input.isValid() && !
mDefault.isValid() )
7930 if ( ( input.type() == QVariant::String && input.toString().isEmpty() )
7931 || ( !input.isValid() &&
mDefault.type() == QVariant::String &&
mDefault.toString().isEmpty() ) )
7939 if ( !value.isValid() )
7940 return QStringLiteral(
"None" );
7943 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
7950 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
7952 code += QLatin1String(
"optional " );
7953 code += QLatin1String(
"maptheme " );
7956 return code.trimmed();
7961 switch ( outputType )
7965 QString code = QStringLiteral(
"QgsProcessingParameterMapTheme('%1', %2" )
7968 code += QLatin1String(
", optional=True" );
7993 QString def = definition;
7994 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
7996 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
8018 if ( mMin.isValid() && mMax.isValid() && mMin >= mMax )
8020 QgsMessageLog::logMessage( QObject::tr(
"Invalid datetime parameter \"%1\": min value %2 is >= max value %3!" ).arg(
name, mMin.toString(), mMax.toString() ), QObject::tr(
"Processing" ) );
8031 QVariant input = value;
8032 if ( !input.isValid() )
8045 if ( input.type() != QVariant::DateTime && input.type() != QVariant::Date && input.type() != QVariant::Time && input.type() != QVariant::String )
8048 if ( ( input.type() == QVariant::DateTime || input.type() == QVariant::Date ) && mDataType ==
Time )
8051 if ( input.type() == QVariant::String )
8053 const QString s = input.toString();
8057 input = QDateTime::fromString( s, Qt::ISODate );
8058 if ( mDataType ==
Time )
8060 if ( !input.toDateTime().isValid() )
8061 input = QTime::fromString( s );
8063 input = input.toDateTime().time();
8067 if ( mDataType !=
Time )
8069 const QDateTime res = input.toDateTime();
8070 return res.isValid() && ( res >= mMin || !mMin.isValid() ) && ( res <= mMax || !mMax.isValid() );
8074 const QTime res = input.toTime();
8075 return res.isValid() && ( res >= mMin.time() || !mMin.isValid() ) && ( res <= mMax.time() || !mMax.isValid() );
8081 if ( !value.isValid() )
8082 return QStringLiteral(
"None" );
8085 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
8087 if ( value.type() == QVariant::DateTime )
8089 const QDateTime dt = value.toDateTime();
8090 if ( !dt.isValid() )
8091 return QStringLiteral(
"QDateTime()" );
8093 return QStringLiteral(
"QDateTime(QDate(%1, %2, %3), QTime(%4, %5, %6))" ).arg( dt.date().year() )
8094 .arg( dt.date().month() )
8095 .arg( dt.date().day() )
8096 .arg( dt.time().hour() )
8097 .arg( dt.time().minute() )
8098 .arg( dt.time().second() );
8100 else if ( value.type() == QVariant::Date )
8102 const QDate dt = value.toDate();
8103 if ( !dt.isValid() )
8104 return QStringLiteral(
"QDate()" );
8106 return QStringLiteral(
"QDate(%1, %2, %3)" ).arg( dt.year() )
8110 else if ( value.type() == QVariant::Time )
8112 const QTime dt = value.toTime();
8113 if ( !dt.isValid() )
8114 return QStringLiteral(
"QTime()" );
8116 return QStringLiteral(
"QTime(%4, %5, %6)" )
8119 .arg( dt.second() );
8121 return value.toString();
8128 if ( mMin.isValid() )
8129 parts << QObject::tr(
"Minimum value: %1" ).arg( mMin.toString( Qt::ISODate ) );
8130 if ( mMax.isValid() )
8131 parts << QObject::tr(
"Maximum value: %1" ).arg( mMax.toString( Qt::ISODate ) );
8133 parts << QObject::tr(
"Default value: %1" ).arg( mDataType ==
DateTime ?
mDefault.toDateTime().toString( Qt::ISODate ) :
8134 ( mDataType ==
Date ?
mDefault.toDate().toString( Qt::ISODate ) :
mDefault.toTime( ).toString() ) );
8135 const QString extra = parts.join( QLatin1String(
"<br />" ) );
8136 if ( !extra.isEmpty() )
8137 text += QStringLiteral(
"<p>%1</p>" ).arg( extra );
8143 switch ( outputType )
8147 QString code = QStringLiteral(
"QgsProcessingParameterDateTime('%1', %2" )
8150 code += QLatin1String(
", optional=True" );
8152 code += QStringLiteral(
", type=%1" ).arg( mDataType ==
DateTime ? QStringLiteral(
"QgsProcessingParameterDateTime.DateTime" )
8153 : mDataType ==
Date ? QStringLiteral(
"QgsProcessingParameterDateTime.Date" )
8154 : QStringLiteral(
"QgsProcessingParameterDateTime.Time" ) );
8157 if ( mMin.isValid() )
8159 if ( mMax.isValid() )
8201 map.insert( QStringLiteral(
"min" ), mMin );
8202 map.insert( QStringLiteral(
"max" ), mMax );
8203 map.insert( QStringLiteral(
"data_type" ), mDataType );
8210 mMin = map.value( QStringLiteral(
"min" ) ).toDateTime();
8211 mMax = map.value( QStringLiteral(
"max" ) ).toDateTime();
8212 mDataType =
static_cast< Type >( map.value( QStringLiteral(
"data_type" ) ).toInt() );
8219 : ( definition.toLower().trimmed() == QLatin1String(
"none" ) ? QVariant() : definition ), isOptional );
8230 , mProviderId( provider )
8243 if ( !input.isValid() && !
mDefault.isValid() )
8246 if ( ( input.type() == QVariant::String && input.toString().isEmpty() )
8247 || ( !input.isValid() &&
mDefault.type() == QVariant::String &&
mDefault.toString().isEmpty() ) )
8255 if ( !value.isValid() )
8256 return QStringLiteral(
"None" );
8259 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
8266 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
8268 code += QLatin1String(
"optional " );
8269 code += QLatin1String(
"providerconnection " );
8270 code += mProviderId +
' ';
8273 return code.trimmed();
8278 switch ( outputType )
8282 QString code = QStringLiteral(
"QgsProcessingParameterProviderConnection('%1', %2, '%3'" )
8285 code += QLatin1String(
", optional=True" );
8299 map.insert( QStringLiteral(
"provider" ), mProviderId );
8306 mProviderId = map.value( QStringLiteral(
"provider" ) ).toString();
8312 QString def = definition;
8314 if ( def.contains(
' ' ) )
8316 provider = def.left( def.indexOf(
' ' ) );
8317 def = def.mid( def.indexOf(
' ' ) + 1 );
8325 if ( def.startsWith(
'"' ) || def.startsWith(
'\'' ) )
8327 if ( def.endsWith(
'"' ) || def.endsWith(
'\'' ) )
8345 , mParentConnectionParameterName( parentLayerParameterName )
8358 if ( !input.isValid() && !
mDefault.isValid() )
8361 if ( ( input.type() == QVariant::String && input.toString().isEmpty() )
8362 || ( !input.isValid() &&
mDefault.type() == QVariant::String &&
mDefault.toString().isEmpty() ) )
8370 if ( !value.isValid() )
8371 return QStringLiteral(
"None" );
8374 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
8381 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
8383 code += QLatin1String(
"optional " );
8384 code += QLatin1String(
"databaseschema " );
8386 code += mParentConnectionParameterName +
' ';
8389 return code.trimmed();
8394 switch ( outputType )
8398 QString code = QStringLiteral(
"QgsProcessingParameterDatabaseSchema('%1', %2" )
8401 code += QLatin1String(
", optional=True" );
8403 code += QStringLiteral(
", connectionParameterName='%1'" ).arg( mParentConnectionParameterName );
8417 QStringList depends;
8418 if ( !mParentConnectionParameterName.isEmpty() )
8419 depends << mParentConnectionParameterName;
8425 return mParentConnectionParameterName;
8430 mParentConnectionParameterName =
name;
8436 map.insert( QStringLiteral(
"mParentConnectionParameterName" ), mParentConnectionParameterName );
8443 mParentConnectionParameterName = map.value( QStringLiteral(
"mParentConnectionParameterName" ) ).toString();
8450 QString def = definition;
8452 const QRegularExpression re( QStringLiteral(
"(.*?)\\s+(.*)$" ) );
8453 const QRegularExpressionMatch m = re.match( def );
8456 parent = m.captured( 1 ).trimmed();
8457 def = m.captured( 2 );
8473 const QString &connectionParameterName,
8474 const QString &schemaParameterName,
8475 const QVariant &defaultValue,
bool optional,
bool allowNewTableNames )
8477 , mParentConnectionParameterName( connectionParameterName )
8478 , mParentSchemaParameterName( schemaParameterName )
8479 , mAllowNewTableNames( allowNewTableNames )
8492 if ( !input.isValid() && !
mDefault.isValid() )
8495 if ( ( input.type() == QVariant::String && input.toString().isEmpty() )
8496 || ( !input.isValid() &&
mDefault.type() == QVariant::String &&
mDefault.toString().isEmpty() ) )
8504 if ( !value.isValid() )
8505 return QStringLiteral(
"None" );
8508 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
8515 QString code = QStringLiteral(
"##%1=" ).arg(
mName );
8517 code += QLatin1String(
"optional " );
8518 code += QLatin1String(
"databasetable " );
8520 code += ( mParentConnectionParameterName.isEmpty() ? QStringLiteral(
"none" ) : mParentConnectionParameterName ) +
' ';
8521 code += ( mParentSchemaParameterName.isEmpty() ? QStringLiteral(
"none" ) : mParentSchemaParameterName ) +
' ';
8524 return code.trimmed();
8529 switch ( outputType )
8533 QString code = QStringLiteral(
"QgsProcessingParameterDatabaseTable('%1', %2" )
8536 code += QLatin1String(
", optional=True" );
8538 if ( mAllowNewTableNames )
8539 code += QLatin1String(
", allowNewTableNames=True" );
8541 code += QStringLiteral(
", connectionParameterName='%1'" ).arg( mParentConnectionParameterName );
8542 code += QStringLiteral(
", schemaParameterName='%1'" ).arg( mParentSchemaParameterName );
8556 QStringList depends;
8557 if ( !mParentConnectionParameterName.isEmpty() )
8558 depends << mParentConnectionParameterName;
8559 if ( !mParentSchemaParameterName.isEmpty() )
8560 depends << mParentSchemaParameterName;
8566 return mParentConnectionParameterName;
8571 mParentConnectionParameterName =
name;
8576 return mParentSchemaParameterName;
8581 mParentSchemaParameterName =
name;
8587 map.insert( QStringLiteral(
"mParentConnectionParameterName" ), mParentConnectionParameterName );
8588 map.insert( QStringLiteral(
"mParentSchemaParameterName" ), mParentSchemaParameterName );
8589 map.insert( QStringLiteral(
"mAllowNewTableNames" ), mAllowNewTableNames );
8596 mParentConnectionParameterName = map.value( QStringLiteral(
"mParentConnectionParameterName" ) ).toString();
8597 mParentSchemaParameterName = map.value( QStringLiteral(
"mParentSchemaParameterName" ) ).toString();
8598 mAllowNewTableNames = map.value( QStringLiteral(
"mAllowNewTableNames" ),
false ).toBool();
8606 QString def = definition;
8608 const QRegularExpression re( QStringLiteral(
"(.*?)\\s+(.*+)\\b\\s*(.*)$" ) );
8609 const QRegularExpressionMatch m = re.match( def );
8612 connection = m.captured( 1 ).trimmed();
8613 if ( connection == QLatin1String(
"none" ) )
8615 schema = m.captured( 2 ).trimmed();
8616 if ( schema == QLatin1String(
"none" ) )
8618 def = m.captured( 3 );
8626 return mAllowNewTableNames;
8639 const QVariant &defaultValue,
bool optional )
8669 if ( qobject_cast< QgsPointCloudLayer * >( qvariant_cast<QObject *>( var ) ) )
8672 if ( var.type() != QVariant::String || var.toString().isEmpty() )
8690 if ( !val.isValid() )
8691 return QStringLiteral(
"None" );
8697 p.insert(
name(), val );
8718 const QVariant &defaultValue,
bool optional )
8748 if ( qobject_cast< QgsAnnotationLayer * >( qvariant_cast<QObject *>( var ) ) )
8751 if ( var.type() != QVariant::String || var.toString().isEmpty() )
8769 if ( !val.isValid() )
8770 return QStringLiteral(
"None" );
8776 p.insert(
name(), val );
8799 QVariant var = input;
8800 if ( !var.isValid() )
8822 if ( var.type() != QVariant::String )
8825 if ( var.toString().isEmpty() )
8833 if ( !value.isValid() )
8834 return QStringLiteral(
"None" );
8837 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( value.value<
QgsProperty >().
asExpression() );
8848 return QStringLiteral(
"QgsProperty.fromExpression('%1')" ).arg( fromVar.
sink.
asExpression() );
8864 return lOriginalProvider->defaultPointCloudFileExtension();
8868 return p->defaultPointCloudFileExtension();
8879 QStringList filters;
8880 for (
const QString &ext : exts )
8882 filters << QObject::tr(
"%1 files (*.%2)" ).arg( ext.toUpper(), ext.toLower() );
8884 return filters.join( QLatin1String(
";;" ) ) + QStringLiteral(
";;" ) + QObject::tr(
"All files (*.*)" );
8891 return lOriginalProvider->supportedOutputPointCloudLayerExtensions();
8895 return p->supportedOutputPointCloudLayerExtensions();
8900 return QStringList() << QObject::tr(
"%1 files (*.%2)" ).arg( ext.toUpper(), ext.toLower() );
Represents a map layer containing a set of georeferenced annotations, e.g.
static QgsProcessingRegistry * processingRegistry()
Returns the application's processing registry, used for managing processing providers,...
This class represents a coordinate reference system (CRS).
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
@ WKT_PREFERRED
Preferred format, matching the most recent WKT ISO standard. Currently an alias to WKT2_2019,...
QString toWkt(WktVariant variant=WKT1_GDAL, bool multiline=false, int indentationWidth=4) const
Returns a WKT representation of this CRS.
Custom exception class for Coordinate Reference System related exceptions.
Class for parsing and evaluation of expressions (formerly called "search strings").
bool isValid() const
Checks if this expression is valid.
InvalidGeometryCheck
Handling of features with invalid geometries.
@ GeometryNoCheck
No invalid geometry checking.
@ GeometryAbortOnInvalid
Close iterator on encountering any features with invalid geometry. This requires a slow geometry vali...
@ GeometrySkipInvalid
Skip any features with invalid geometry. This requires a slow geometry validity check for every featu...
An interface for objects which accept features via addFeature(s) methods.
Container of fields for a vector layer.
static bool fileMatchesFilter(const QString &fileName, const QString &filter)
Returns true if the given fileName matches a file filter string.
A geometry is the spatial representation of a feature.
QgsGeometry densifyByCount(int extraNodesPerSegment) const
Returns a copy of the geometry which has been densified by adding the specified number of extra nodes...
Qgis::GeometryOperationResult transform(const QgsCoordinateTransform &ct, Qgis::TransformDirection direction=Qgis::TransformDirection::Forward, bool transformZ=false) SIP_THROW(QgsCsException)
Transforms this geometry as described by the coordinate transform ct.
static QgsGeometry fromRect(const QgsRectangle &rect) SIP_HOLDGIL
Creates a new geometry from a QgsRectangle.
bool isMultipart() const SIP_HOLDGIL
Returns true if WKB of the geometry is of WKBMulti* type.
QgsPointXY asPoint() const
Returns the contents of the geometry as a 2-dimensional point.
static QgsGeometry fromPointXY(const QgsPointXY &point) SIP_HOLDGIL
Creates a new geometry from a QgsPointXY object.
QgsWkbTypes::GeometryType type
QgsGeometry centroid() const
Returns the center of mass of a geometry.
QString lastError() const SIP_HOLDGIL
Returns an error string referring to the last error encountered either when this geometry was created...
static QgsGeometry fromWkt(const QString &wkt)
Creates a new geometry from a WKT string.
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
QString asWkt(int precision=17) const
Exports the geometry to WKT.
Base class for graphical items within a QgsLayout.
QgsMasterLayoutInterface * layoutByName(const QString &name) const
Returns the layout with a matching name, or nullptr if no matching layouts were found.
QgsLayoutItem * itemById(const QString &id) const
Returns a layout item given its id.
QgsLayoutItem * itemByUuid(const QString &uuid, bool includeTemplateUuids=false) const
Returns the layout item with matching uuid unique identifier, or nullptr if a matching item could not...
Base class for all map layer types.
virtual QgsRectangle extent() const
Returns the extent of the layer.
QString source() const
Returns the source for the layer.
QgsCoordinateReferenceSystem crs
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
Interface for master layout type objects, such as print layouts and reports.
virtual QgsMasterLayoutInterface::Type layoutType() const =0
Returns the master layout type.
@ PrintLayout
Individual print layout (QgsPrintLayout)
Represents a mesh layer supporting display of data on structured or unstructured meshes.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
Represents a map layer supporting display of point clouds.
A class to represent a 2D point.
Print layout, a QgsLayout subclass for static or atlas-based layouts.
Abstract base class for processing algorithms.
QgsProcessingProvider * provider() const
Returns the provider to which this algorithm belongs.
Details for layers to load into projects.
Contains information about the context in which a processing algorithm is executed.
QgsExpressionContext & expressionContext()
Returns the expression context.
QgsProject * project() const
Returns the project in which the algorithm is being executed.
void addLayerToLoadOnCompletion(const QString &layer, const QgsProcessingContext::LayerDetails &details)
Adds a layer to load (by ID or datasource) into the canvas upon completion of the algorithm or model.
Base class for all parameter definitions which represent file or layer destinations,...
virtual QString defaultFileExtension() const =0
Returns the default file extension for destination file paths associated with this parameter.
void setCreateByDefault(bool createByDefault)
Sets whether the destination should be created by default.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
virtual QString generateTemporaryDestination() const
Generates a temporary destination value for this parameter.
bool supportsNonFileBasedOutput() const
Returns true if the destination parameter supports non filed-based outputs, such as memory layers or ...
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...
bool createByDefault() const
Returns true if the destination should be created by default.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
virtual bool isSupportedOutputValue(const QVariant &value, QgsProcessingContext &context, QString &error) const
Tests whether a value is a supported value for this parameter.
QgsProcessingProvider * originalProvider() const
Original (source) provider which this parameter has been derived from.
QgsProcessingDestinationParameter(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingDestinationParameter.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
Custom exception class for processing related exceptions.
Encapsulates settings relating to a feature source input to a processing algorithm.
bool loadVariant(const QVariantMap &map)
Loads this source definition from a QVariantMap, wrapped in a QVariant.
Flags flags
Flags which dictate source behavior.
bool selectedFeaturesOnly
true if only selected features in the source should be used by algorithms.
QgsFeatureRequest::InvalidGeometryCheck geometryCheck
Geometry check method to apply to this source.
QgsProperty source
Source definition.
long long featureLimit
If set to a value > 0, places a limit on the maximum number of features which will be read from the s...
QVariant toVariant() const
Saves this source definition to a QVariantMap, wrapped in a QVariant.
QgsFeatureSource subclass which proxies methods to an underlying QgsFeatureSource,...
Base class for providing feedback from a processing algorithm.
Base class for the definition of processing outputs.
A file output for processing algorithms.
A folder output for processing algorithms.
A HTML file output for processing algorithms.
Encapsulates settings relating to a feature sink or output raster layer for a processing algorithm.
bool loadVariant(const QVariantMap &map)
Loads this output layer definition from a QVariantMap, wrapped in a QVariant.
bool operator!=(const QgsProcessingOutputLayerDefinition &other) const
QgsProject * destinationProject
Destination project.
bool operator==(const QgsProcessingOutputLayerDefinition &other) const
QgsProperty sink
Sink/layer definition.
bool useRemapping() const
Returns true if the output uses a remapping definition.
QgsRemappingSinkDefinition remappingDefinition() const
Returns the output remapping definition, if useRemapping() is true.
QVariant toVariant() const
Saves this output layer definition to a QVariantMap, wrapped in a QVariant.
QString destinationName
Name to use for sink if it's to be loaded into a destination project.
QVariantMap createOptions
Map of optional sink/layer creation options, which are passed to the underlying provider when creatin...
void setRemappingDefinition(const QgsRemappingSinkDefinition &definition)
Sets the remapping definition to use when adding features to the output layer.
A pointcloud layer output for processing algorithms.
A raster layer output for processing algorithms.
A vector layer output for processing algorithms.
An annotation layer parameter for processing algorithms.
QgsProcessingParameterAnnotationLayer(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterAnnotationLayer.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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...
static QgsProcessingParameterAnnotationLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QString typeName()
Returns the type name for the parameter class.
A string parameter for authentication configuration ID values.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterAuthConfig(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterAuthConfig.
static QString typeName()
Returns the type name for the parameter class.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
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...
static QgsProcessingParameterAuthConfig * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
A raster band parameter for Processing algorithms.
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...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
void setAllowMultiple(bool allowMultiple)
Sets whether multiple band selections are permitted.
void setParentLayerParameterName(const QString &parentLayerParameterName)
Sets the name of the parent layer parameter.
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.
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...
QString parentLayerParameterName() const
Returns the name of the parent layer parameter, or an empty string if this is not set.
QgsProcessingParameterBand(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &parentLayerParameterName=QString(), bool optional=false, bool allowMultiple=false)
Constructor for QgsProcessingParameterBand.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QgsProcessingParameterBand * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
static QString typeName()
Returns the type name for the parameter class.
bool allowMultiple() const
Returns whether multiple band selections are permitted.
A boolean parameter for processing algorithms.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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...
QString type() const override
Unique parameter type name.
static QString typeName()
Returns the type name for the parameter class.
static QgsProcessingParameterBoolean * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterBoolean(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterBoolean.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
A color parameter for processing algorithms.
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...
static QgsProcessingParameterColor * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
bool opacityEnabled() const
Returns true if the parameter allows opacity control.
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...
void setOpacityEnabled(bool enabled)
Sets whether the parameter allows opacity control.
QgsProcessingParameterColor(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool opacityEnabled=true, bool optional=false)
Constructor for QgsProcessingParameterColor.
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
A coordinate operation parameter for processing algorithms, for selection between available coordinat...
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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...
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
static QgsProcessingParameterCoordinateOperation * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QgsProcessingParameterCoordinateOperation(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &sourceCrsParameterName=QString(), const QString &destinationCrsParameterName=QString(), const QVariant &staticSourceCrs=QVariant(), const QVariant &staticDestinationCrs=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterCoordinateOperation.
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...
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
A coordinate reference system parameter for processing algorithms.
QgsProcessingParameterCrs(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterCrs.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QString typeName()
Returns the type name for the parameter class.
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...
static QgsProcessingParameterCrs * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
A database schema parameter for processing algorithms, allowing users to select from existing schemas...
void setParentConnectionParameterName(const QString &name)
Sets the name of the parent connection parameter.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterDatabaseSchema(const QString &name, const QString &description, const QString &connectionParameterName=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterDatabaseSchema.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
static QgsProcessingParameterDatabaseSchema * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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 asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
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 parentConnectionParameterName() const
Returns the name of the parent connection parameter, or an empty string if this is not set.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
A database table name parameter for processing algorithms, allowing users to select from existing dat...
QgsProcessingParameterDatabaseTable(const QString &name, const QString &description, const QString &connectionParameterName=QString(), const QString &schemaParameterName=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool allowNewTableNames=false)
Constructor for QgsProcessingParameterDatabaseTable.
void setParentSchemaParameterName(const QString &name)
Sets the name of the parent schema parameter.
QString parentConnectionParameterName() const
Returns the name of the parent connection parameter, or an empty string if this is not set.
QString parentSchemaParameterName() const
Returns the name of the parent schema parameter, or an empty string if this is not set.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
static QgsProcessingParameterDatabaseTable * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
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.
bool allowNewTableNames() const
Returns true if the parameter allows users to enter names for a new (non-existing) tables.
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...
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
void setAllowNewTableNames(bool allowed)
Sets whether the parameter allows users to enter names for a new (non-existing) tables.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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...
void setParentConnectionParameterName(const QString &name)
Sets the name of the parent connection parameter.
A datetime (or pure date or time) parameter for processing algorithms.
@ DateTime
Datetime values.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
void setMaximum(const QDateTime &maximum)
Sets the maximum value acceptable by the parameter.
static QgsProcessingParameterDateTime * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QDateTime minimum() const
Returns the minimum value acceptable by the parameter.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString toolTip() const override
Returns a formatted tooltip for use with the parameter, which gives helpful information like paramete...
void setMinimum(const QDateTime &minimum)
Sets the minimum value acceptable by the parameter.
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...
QDateTime maximum() const
Returns the maximum value acceptable by the parameter.
QgsProcessingParameterDateTime(const QString &name, const QString &description=QString(), Type type=DateTime, const QVariant &defaultValue=QVariant(), bool optional=false, const QDateTime &minValue=QDateTime(), const QDateTime &maxValue=QDateTime())
Constructor for QgsProcessingParameterDateTime.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
Type dataType() const
Returns the acceptable data type for the parameter.
void setDataType(Type type)
Sets the acceptable data type for the parameter.
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...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
Base class for the definition of processing parameters.
QgsProcessingAlgorithm * mAlgorithm
Pointer to algorithm which owns this parameter.
QString mHelp
Parameter help.
virtual QVariant valueAsJsonObject(const QVariant &value, QgsProcessingContext &context) const
Returns a version of the parameter input value, which is suitable for use in a JSON object.
QVariant defaultValue() const
Returns the default value for the parameter.
QString help() const
Returns the help for the parameter.
virtual QString asScriptCode() const
Returns the parameter definition encoded in a string which can be used within a Processing script.
virtual QString toolTip() const
Returns a formatted tooltip for use with the parameter, which gives helpful information like paramete...
virtual QStringList valueAsStringList(const QVariant &value, QgsProcessingContext &context, bool &ok) const
Returns a string list version of the parameter input value (if possible).
Flags mFlags
Parameter flags.
QgsProcessingAlgorithm * algorithm() const
Returns a pointer to the algorithm which owns this parameter.
QgsProcessingProvider * provider() const
Returns a pointer to the provider for the algorithm which owns this parameter.
virtual QString asPythonString(QgsProcessing::PythonOutputType outputType=QgsProcessing::PythonQgsProcessingAlgorithmSubclass) const
Returns the parameter definition as a Python command which can be used within a Python Processing scr...
QString mName
Parameter name.
QString description() const
Returns the description for the parameter.
QgsProcessingParameterDefinition(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, const QString &help=QString())
Constructor for QgsProcessingParameterDefinition.
virtual QString valueAsString(const QVariant &value, QgsProcessingContext &context, bool &ok) const
Returns a string version of the parameter input value (if possible).
QVariantMap mMetadata
Freeform metadata for parameter. Mostly used by widget wrappers to customize their appearance and beh...
@ FlagOptional
Parameter is optional.
QString mDescription
Parameter description.
virtual QString type() const =0
Unique parameter type name.
Flags flags() const
Returns any flags associated with the parameter.
virtual QVariantMap toVariantMap() const
Saves this parameter to a QVariantMap.
QString name() const
Returns the name of the parameter.
QVariant mDefault
Default value for parameter.
QVariant mGuiDefault
Default value for parameter in GUI.
virtual QString valueAsPythonString(const QVariant &value, QgsProcessingContext &context) const
Returns a string version of the parameter input value, which is suitable for use as an input paramete...
virtual bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const
Checks whether the specified input value is acceptable for the parameter.
virtual bool fromVariantMap(const QVariantMap &map)
Restores this parameter to a QVariantMap.
virtual QString valueAsPythonComment(const QVariant &value, QgsProcessingContext &context) const
Returns a Python comment explaining a parameter value, or an empty string if no comment is required.
A double numeric parameter for distance values.
void setParentParameterName(const QString &parentParameterName)
Sets the name of the parent layer parameter.
static QString typeName()
Returns the type name for the parameter class.
QString parentParameterName() const
Returns the name of the parent parameter, or an empty string if this is not set.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QgsProcessingParameterDistance * clone() const override
Creates a clone of the parameter definition.
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 type() const override
Unique parameter type name.
QgsProcessingParameterDistance(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &parentParameterName=QString(), bool optional=false, double minValue=std::numeric_limits< double >::lowest()+1, double maxValue=std::numeric_limits< double >::max())
Constructor for QgsProcessingParameterDistance.
A double numeric parameter for duration values.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QgsProcessingParameterDuration * clone() const override
Creates a clone of the parameter definition.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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...
static QString typeName()
Returns the type name for the parameter class.
QString type() const override
Unique parameter type name.
QgsProcessingParameterDuration(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, double minValue=std::numeric_limits< double >::lowest()+1, double maxValue=std::numeric_limits< double >::max())
Constructor for QgsProcessingParameterDuration.
An enum based parameter for processing algorithms, allowing for selection from predefined values.
void setUsesStaticStrings(bool usesStaticStrings)
Sets whether the parameter uses static (non-translated) string values for its enumeration choice list...
static QgsProcessingParameterEnum * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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...
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...
bool allowMultiple() const
Returns true if the parameter allows multiple selected values.
QStringList options() const
Returns the list of acceptable options for the parameter.
QgsProcessingParameterEnum(const QString &name, const QString &description=QString(), const QStringList &options=QStringList(), bool allowMultiple=false, const QVariant &defaultValue=QVariant(), bool optional=false, bool usesStaticStrings=false)
Constructor for QgsProcessingParameterEnum.
void setOptions(const QStringList &options)
Sets the list of acceptable options for the parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
bool usesStaticStrings() const
Returns true if the parameter uses static (non-translated) string values for its enumeration choice l...
QString valueAsPythonComment(const QVariant &value, QgsProcessingContext &context) const override
Returns a Python comment explaining a parameter value, or an empty string if no comment is required.
void setAllowMultiple(bool allowMultiple)
Sets whether the parameter allows multiple selected values.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
static QString typeName()
Returns the type name for the parameter class.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
An expression parameter for processing algorithms.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
static QgsProcessingParameterExpression * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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 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.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
QgsProcessingParameterExpression(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &parentLayerParameterName=QString(), bool optional=false)
Constructor for QgsProcessingParameterExpression.
void setParentLayerParameterName(const QString &parentLayerParameterName)
Sets the name of the parent layer parameter.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString parentLayerParameterName() const
Returns the name of the parent layer parameter, or an empty string if this is not set.
static QString typeName()
Returns the type name for the parameter class.
A rectangular map extent parameter for processing algorithms.
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...
QgsProcessingParameterExtent(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterExtent.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
static QString typeName()
Returns the type name for the parameter class.
static QgsProcessingParameterExtent * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
A feature sink output for processing algorithms.
QString generateTemporaryDestination() const override
Generates a temporary destination value for this parameter.
static QgsProcessingParameterFeatureSink * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
bool hasGeometry() const
Returns true if sink is likely to include geometries.
QString type() const override
Unique parameter type name.
QgsProcessing::SourceType dataType() const
Returns the layer type for sinks associated with the parameter.
virtual QStringList supportedOutputVectorLayerExtensions() const
Returns a list of the vector format file extensions supported by this parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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.
void setSupportsAppend(bool supportsAppend)
Sets whether the sink supports appending features to an existing table.
QgsProcessingParameterFeatureSink(const QString &name, const QString &description=QString(), QgsProcessing::SourceType type=QgsProcessing::TypeVectorAnyGeometry, const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true, bool supportsAppend=false)
Constructor for QgsProcessingParameterFeatureSink.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
void setDataType(QgsProcessing::SourceType type)
Sets the layer type for the sinks associated with the parameter.
bool supportsAppend() const
Returns true if the sink supports appending features to an existing table.
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...
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
An input feature source (such as vector layers) parameter for processing algorithms.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QgsProcessingParameterFeatureSource(const QString &name, const QString &description=QString(), const QList< int > &types=QList< int >(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterFeatureSource.
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...
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
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...
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.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
static QString typeName()
Returns the type name for the parameter class.
QString type() const override
Unique parameter type name.
static QgsProcessingParameterFeatureSource * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
A vector layer or feature source field parameter for processing algorithms.
QgsProcessingParameterField(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &parentLayerParameterName=QString(), DataType type=Any, bool allowMultiple=false, bool optional=false, bool defaultToAllFields=false)
Constructor for QgsProcessingParameterField.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
QString parentLayerParameterName() const
Returns the name of the parent layer parameter, or an empty string if this is not set.
void setDataType(DataType type)
Sets the acceptable data type for the field.
void setParentLayerParameterName(const QString &parentLayerParameterName)
Sets the name of the parent layer parameter.
bool allowMultiple() const
Returns whether multiple field selections are permitted.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString type() const override
Unique parameter type name.
bool defaultToAllFields() const
Returns whether a parameter which allows multiple selections (see allowMultiple()) should automatical...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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...
static QString typeName()
Returns the type name for the parameter class.
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...
void setAllowMultiple(bool allowMultiple)
Sets whether multiple field selections are permitted.
DataType
Field data types.
@ DateTime
Accepts datetime fields.
@ Numeric
Accepts numeric fields.
@ String
Accepts string fields.
DataType dataType() const
Returns the acceptable data type for the field.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
void setDefaultToAllFields(bool enabled)
Sets whether a parameter which allows multiple selections (see allowMultiple()) should automatically ...
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
static QgsProcessingParameterField * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
A generic file based destination parameter, for specifying the destination path for a file (non-map l...
static QgsProcessingParameterFileDestination * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
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...
QgsProcessingParameterFileDestination(const QString &name, const QString &description=QString(), const QString &fileFilter=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingParameterFileDestination.
static QString typeName()
Returns the type name for the parameter class.
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...
QString fileFilter() const
Returns the file filter string for file destinations compatible with this parameter.
void setFileFilter(const QString &filter)
Sets the file filter string for file destinations compatible with this parameter.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
An input file or folder parameter for processing algorithms.
QString extension() const
Returns any specified file extension for the parameter.
void setExtension(const QString &extension)
Sets a file extension for the parameter.
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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 asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
void setFileFilter(const QString &filter)
Sets the file filter string for file destinations compatible with this parameter.
static QgsProcessingParameterFile * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition, Behavior behavior=File)
Creates a new parameter using the definition from a script code.
Behavior
Parameter behavior.
@ Folder
Parameter is a folder.
@ File
Parameter is a single file.
Behavior behavior() const
Returns the parameter behavior (e.g.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString fileFilter() const
Returns the file filter string for file destinations compatible with this parameter.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QgsProcessingParameterFile(const QString &name, const QString &description=QString(), Behavior behavior=File, const QString &extension=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, const QString &fileFilter=QString())
Constructor for QgsProcessingParameterFile.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
A folder destination parameter, for specifying the destination path for a folder created by the algor...
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
static QgsProcessingParameterFolderDestination * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
static QString typeName()
Returns the type name for the parameter class.
QgsProcessingParameterFolderDestination(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingParameterFolderDestination.
A geometry parameter for processing algorithms.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString type() const override
Unique parameter type name.
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...
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
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...
QgsProcessingParameterGeometry(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, const QList< int > &geometryTypes=QList< int >(), bool allowMultipart=true)
Constructor for QgsProcessingParameterGeometry.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
static QgsProcessingParameterGeometry * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
A print layout item parameter, allowing users to select a particular item from a print layout.
QString type() const override
Unique parameter type name.
static QgsProcessingParameterLayoutItem * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterLayoutItem(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), const QString &parentLayoutParameterName=QString(), int itemType=-1, bool optional=false)
Constructor for QgsProcessingParameterLayoutItem.
void setParentLayoutParameterName(const QString &name)
Sets the name of the parent layout parameter.
QString parentLayoutParameterName() const
Returns the name of the parent layout parameter, or an empty string if this is not set.
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...
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
int itemType() const
Returns the acceptable item type, or -1 if any item type is allowed.
void setItemType(int type)
Sets the acceptable item type, or -1 if any item type is allowed.
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...
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QStringList dependsOnOtherParameters() const override
Returns a list of other parameter names on which this parameter is dependent (e.g.
A print layout parameter, allowing users to select a print layout.
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.
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...
static QgsProcessingParameterLayout * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
QgsProcessingParameterLayout(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterLayout.
static QString typeName()
Returns the type name for the parameter class.
Can be inherited by parameters which require limits to their acceptable data types.
void setDataTypes(const QList< int > &types)
Sets the geometry types for sources acceptable by the parameter.
QgsProcessingParameterLimitedDataTypes(const QList< int > &types=QList< int >())
Constructor for QgsProcessingParameterLimitedDataTypes, with a list of acceptable data types.
QList< int > mDataTypes
List of acceptable data types for the parameter.
QList< int > dataTypes() const
Returns the geometry types for sources acceptable by the parameter.
A map layer parameter for processing algorithms.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
static QgsProcessingParameterMapLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
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 type() const override
Unique parameter type name.
QgsProcessingParameterMapLayer(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, const QList< int > &types=QList< int >())
Constructor for QgsProcessingParameterMapLayer.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QString typeName()
Returns the type name for the parameter class.
A map theme parameter for processing algorithms, allowing users to select an existing map theme from ...
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
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.
static QgsProcessingParameterMapTheme * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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...
QgsProcessingParameterMapTheme(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterMapTheme.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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...
A table (matrix) parameter for processing algorithms.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QStringList headers() const
Returns a list of column headers (if set).
void setHeaders(const QStringList &headers)
Sets the list of column headers.
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.
void setHasFixedNumberRows(bool hasFixedNumberRows)
Sets whether the table has a fixed number of rows.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
void setNumberRows(int rows)
Sets the fixed number of rows in the table.
int numberRows() const
Returns the fixed number of rows in the table.
static QgsProcessingParameterMatrix * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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...
static QString typeName()
Returns the type name for the parameter class.
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...
QgsProcessingParameterMatrix(const QString &name, const QString &description=QString(), int numberRows=3, bool hasFixedNumberRows=false, const QStringList &headers=QStringList(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterMatrix.
bool hasFixedNumberRows() const
Returns whether the table has a fixed number of rows.
A mesh layer parameter for processing algorithms.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QgsProcessingParameterMeshLayer(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterMeshLayer.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
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 QgsProcessingParameterMeshLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
static QString typeName()
Returns the type name for the parameter class.
A parameter for processing algorithms which accepts multiple map layers.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
void setMinimumNumberInputs(int minimum)
Sets the minimum number of layers required for the parameter.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
QgsProcessingParameterMultipleLayers(const QString &name, const QString &description=QString(), QgsProcessing::SourceType layerType=QgsProcessing::TypeVectorAnyGeometry, const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterMultipleLayers.
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...
static QString typeName()
Returns the type name for the parameter class.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
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...
void setLayerType(QgsProcessing::SourceType type)
Sets the layer type for layers acceptable by the parameter.
static QgsProcessingParameterMultipleLayers * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessing::SourceType layerType() const
Returns the layer type for layers acceptable by the parameter.
QString type() const override
Unique parameter type name.
int minimumNumberInputs() const
Returns the minimum number of layers required for the parameter.
A numeric parameter for processing algorithms.
double minimum() const
Returns the minimum value acceptable by the parameter.
static QgsProcessingParameterNumber * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
void setMinimum(double minimum)
Sets the minimum value acceptable by the parameter.
void setMaximum(double maximum)
Sets the maximum value acceptable by the parameter.
@ Double
Double/float values.
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...
double maximum() const
Returns the maximum value acceptable by the parameter.
QgsProcessingParameterNumber(const QString &name, const QString &description=QString(), Type type=Integer, const QVariant &defaultValue=QVariant(), bool optional=false, double minValue=std::numeric_limits< double >::lowest()+1, double maxValue=std::numeric_limits< double >::max())
Constructor for QgsProcessingParameterNumber.
void setDataType(Type type)
Sets the acceptable data type for the parameter.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
Type dataType() const
Returns the acceptable data type for the parameter.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString toolTip() const override
Returns a formatted tooltip for use with the parameter, which gives helpful information like paramete...
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 fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
static QString typeName()
Returns the type name for the parameter class.
A point cloud layer destination parameter, for specifying the destination path for a point cloud laye...
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
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...
static QgsProcessingParameterPointCloudDestination * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
virtual QStringList supportedOutputPointCloudLayerExtensions() const
Returns a list of the point cloud format file extensions supported for this parameter.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
static QString typeName()
Returns the type name for the parameter class.
QgsProcessingParameterPointCloudDestination(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingParameterPointCloudDestination.
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
A point cloud layer parameter for processing algorithms.
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...
static QgsProcessingParameterPointCloudLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QString typeName()
Returns the type name for the parameter class.
QgsProcessingParameterPointCloudLayer(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterPointCloudLayer.
A point parameter for processing algorithms.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QgsProcessingParameterPoint * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterPoint(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterPoint.
static QString typeName()
Returns the type name for the parameter class.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
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...
A data provider connection parameter for processing algorithms, allowing users to select from availab...
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QgsProcessingParameterProviderConnection(const QString &name, const QString &description, const QString &provider, const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterProviderConnection, for the specified provider type.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
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 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...
static QgsProcessingParameterProviderConnection * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
A numeric range parameter for processing algorithms.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterNumber::Type dataType() const
Returns the acceptable data type for the range.
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.
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...
void setDataType(QgsProcessingParameterNumber::Type dataType)
Sets the acceptable data type for the range.
QgsProcessingParameterRange(const QString &name, const QString &description=QString(), QgsProcessingParameterNumber::Type type=QgsProcessingParameterNumber::Integer, const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterRange.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
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...
static QgsProcessingParameterRange * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
A raster layer destination parameter, for specifying the destination path for a raster layer created ...
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...
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
QgsProcessingParameterRasterDestination(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingParameterRasterDestination.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
static QgsProcessingParameterRasterDestination * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
virtual QStringList supportedOutputRasterLayerExtensions() const
Returns a list of the raster format file extensions supported for this parameter.
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.
A raster layer parameter for processing algorithms.
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 QgsProcessingParameterRasterLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
static QString typeName()
Returns the type name for the parameter class.
QgsProcessingParameterRasterLayer(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterRasterLayer.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
A double numeric parameter for map scale values.
QString type() const override
Unique parameter type name.
static QString typeName()
Returns the type name for the parameter class.
static QgsProcessingParameterScale * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
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...
QgsProcessingParameterScale * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterScale(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterScale.
A string parameter for processing algorithms.
static QString typeName()
Returns the type name for the parameter class.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
void setMultiLine(bool multiLine)
Sets whether the parameter allows multiline strings.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
static QgsProcessingParameterString * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool multiLine() const
Returns true if the parameter allows multiline strings.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingParameterString(const QString &name, const QString &description=QString(), const QVariant &defaultValue=QVariant(), bool multiLine=false, bool optional=false)
Constructor for QgsProcessingParameterString.
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...
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...
Makes metadata of processing parameters available.
virtual QgsProcessingParameterDefinition * create(const QString &name) const =0
Creates a new parameter of this type.
A vector layer destination parameter, for specifying the destination path for a vector layer created ...
QString defaultFileExtension() const override
Returns the default file extension for destination file paths associated with this parameter.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
QgsProcessing::SourceType dataType() const
Returns the layer type for this created vector layer.
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 type() const override
Unique parameter type name.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
static QString typeName()
Returns the type name for the parameter class.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
void setDataType(QgsProcessing::SourceType type)
Sets the layer type for the created vector layer.
QgsProcessingParameterVectorDestination(const QString &name, const QString &description=QString(), QgsProcessing::SourceType type=QgsProcessing::TypeVectorAnyGeometry, const QVariant &defaultValue=QVariant(), bool optional=false, bool createByDefault=true)
Constructor for QgsProcessingParameterVectorDestination.
bool checkValueIsAcceptable(const QVariant &input, QgsProcessingContext *context=nullptr) const override
Checks whether the specified input value is acceptable for the parameter.
QString asScriptCode() const override
Returns the parameter definition encoded in a string which can be used within a Processing script.
virtual QStringList supportedOutputVectorLayerExtensions() const
Returns a list of the vector format file extensions supported by this parameter.
bool hasGeometry() const
Returns true if the created layer is likely to include geometries.
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...
static QgsProcessingParameterVectorDestination * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
QgsProcessingParameterDefinition * clone() const override
Creates a clone of the parameter definition.
QgsProcessingOutputDefinition * toOutputDefinition() const override
Returns a new QgsProcessingOutputDefinition corresponding to the definition of the destination parame...
A vector layer (with or without geometry) parameter for processing algorithms.
static QgsProcessingParameterVectorLayer * fromScriptCode(const QString &name, const QString &description, bool isOptional, const QString &definition)
Creates a new parameter using the definition from a script code.
bool fromVariantMap(const QVariantMap &map) override
Restores this parameter to a QVariantMap.
QVariantMap toVariantMap() const override
Saves this parameter to a QVariantMap.
QString type() const override
Unique parameter type name.
QString createFileFilter() const override
This method needs to be reimplemented in all classes which implement this interface and return a file...
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...
QgsProcessingParameterVectorLayer(const QString &name, const QString &description=QString(), const QList< int > &types=QList< int >(), const QVariant &defaultValue=QVariant(), bool optional=false)
Constructor for QgsProcessingParameterVectorLayer.
static QString typeName()
Returns the type name for the parameter class.
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.
static QList< QgsMapLayer * > parameterAsLayerList(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a list of map layers.
static QString descriptionFromName(const QString &name)
Creates an autogenerated parameter description from a parameter name.
static int parameterAsEnum(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a enum value.
static double parameterAsDouble(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static double value.
static QgsPointXY parameterAsPoint(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem())
Evaluates the parameter with matching definition to a point.
static QString parameterAsOutputLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a output layer destination.
static QgsPrintLayout * parameterAsLayout(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a print layout.
static QTime parameterAsTime(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static time value.
static QgsProcessingParameterDefinition * parameterFromVariantMap(const QVariantMap &map)
Creates a new QgsProcessingParameterDefinition using the configuration from a supplied variant map.
static QgsRectangle parameterAsExtent(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem())
Evaluates the parameter with matching definition to a rectangular extent.
static QgsCoordinateReferenceSystem parameterAsGeometryCrs(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Returns the coordinate reference system associated with a geometry parameter value.
static QgsAnnotationLayer * parameterAsAnnotationLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to an annotation layer.
static QString parameterAsEnumString(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static enum string.
static QList< double > parameterAsRange(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a range of values.
static QgsMapLayer * parameterAsLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingUtils::LayerHint layerHint=QgsProcessingUtils::LayerHint::UnknownType)
Evaluates the parameter with matching definition to a map layer.
static QList< int > parameterAsInts(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a list of integer values.
static QString parameterAsConnectionName(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a connection name string.
static QgsProcessingFeatureSource * parameterAsSource(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a feature source.
static QString parameterAsFileOutput(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a file based output destination.
static QgsFeatureSink * parameterAsSink(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs, QgsProcessingContext &context, QString &destinationIdentifier, QgsFeatureSink::SinkFlags sinkFlags=QgsFeatureSink::SinkFlags(), const QVariantMap &createOptions=QVariantMap(), const QStringList &datasourceOptions=QStringList(), const QStringList &layerOptions=QStringList())
Evaluates the parameter with matching definition to a feature sink.
static bool parameterAsBoolean(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static boolean value.
static QgsCoordinateReferenceSystem parameterAsPointCrs(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Returns the coordinate reference system associated with an point parameter value.
static QgsLayoutItem * parameterAsLayoutItem(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, QgsPrintLayout *layout)
Evaluates the parameter with matching definition to a print layout item, taken from the specified lay...
static bool parameterAsBool(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static boolean value.
static QString parameterAsCompatibleSourceLayerPathAndLayerName(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QStringList &compatibleFormats, const QString &preferredFormat=QString("shp"), QgsProcessingFeedback *feedback=nullptr, QString *layerName=nullptr)
Evaluates the parameter with matching definition to a source vector layer file path and layer name of...
static QgsMeshLayer * parameterAsMeshLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition and value to a mesh layer.
static QString parameterAsCompatibleSourceLayerPath(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QStringList &compatibleFormats, const QString &preferredFormat=QString("shp"), QgsProcessingFeedback *feedback=nullptr)
Evaluates the parameter with matching definition to a source vector layer file path of compatible for...
static QgsProcessingParameterDefinition * parameterFromScriptCode(const QString &code)
Creates a new QgsProcessingParameterDefinition using the configuration from a supplied script code st...
static QColor parameterAsColor(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Returns the color associated with an point parameter value, or an invalid color if the parameter was ...
static QgsVectorLayer * parameterAsVectorLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a vector layer.
static QgsPointCloudLayer * parameterAsPointCloudLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a point cloud layer.
static int parameterAsInt(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static integer value.
static QString parameterAsDatabaseTableName(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a database table name.
static QString parameterAsSchema(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a database schema name.
static QgsGeometry parameterAsGeometry(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem())
Evaluates the parameter with matching definition to a geometry.
static QString parameterAsExpression(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to an expression.
static QString parameterAsString(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static string value.
static QgsRasterLayer * parameterAsRasterLayer(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a raster layer.
static QList< int > parameterAsEnums(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to list of enum values.
static QStringList parameterAsEnumStrings(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to list of static enum strings.
static QgsGeometry parameterAsExtentGeometry(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem())
Evaluates the parameter with matching definition to a rectangular extent, and returns a geometry cove...
static QStringList parameterAsFileList(const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a list of files (for QgsProcessingParameterMultip...
static bool isDynamic(const QVariantMap ¶meters, const QString &name)
Returns true if the parameter with matching name is a dynamic parameter, and must be evaluated once f...
static QStringList parameterAsFields(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a list of fields.
static QgsCoordinateReferenceSystem parameterAsExtentCrs(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Returns the coordinate reference system associated with an extent parameter value.
static QDateTime parameterAsDateTime(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static datetime value.
static QString parameterAsFile(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a file/folder name.
static QDate parameterAsDate(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, const QgsProcessingContext &context)
Evaluates the parameter with matching definition to a static date value.
static QVariantList parameterAsMatrix(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a matrix/table of values.
static QgsCoordinateReferenceSystem parameterAsCrs(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context)
Evaluates the parameter with matching definition to a coordinate reference system.
Abstract base class for processing providers.
virtual bool isSupportedOutputValue(const QVariant &outputValue, const QgsProcessingDestinationParameter *parameter, QgsProcessingContext &context, QString &error) const
Returns true if the specified outputValue is of a supported file format for the given destination par...
QgsProcessingParameterType * parameterType(const QString &id) const
Returns the parameter type registered for id.
static QString convertToCompatibleFormat(const QgsVectorLayer *layer, bool selectedFeaturesOnly, const QString &baseName, const QStringList &compatibleFormats, const QString &preferredFormat, QgsProcessingContext &context, QgsProcessingFeedback *feedback, long long featureLimit=-1)
Converts a source vector layer to a file path of a vector layer of compatible format.
static QString stringToPythonLiteral(const QString &string)
Converts a string to a Python string literal.
static QString defaultVectorExtension()
Returns the default vector extension to use, in the absence of all other constraints (e....
static QString normalizeLayerSource(const QString &source)
Normalizes a layer source string for safe comparison across different operating system environments.
static QgsFeatureSink * createFeatureSink(QString &destination, QgsProcessingContext &context, const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs, const QVariantMap &createOptions=QVariantMap(), const QStringList &datasourceOptions=QStringList(), const QStringList &layerOptions=QStringList(), QgsFeatureSink::SinkFlags sinkFlags=QgsFeatureSink::SinkFlags(), QgsRemappingSinkDefinition *remappingDefinition=nullptr)
Creates a feature sink ready for adding features.
static QString encodeProviderKeyAndUri(const QString &providerKey, const QString &uri)
Encodes a provider key and layer uri to a single string, for use with decodeProviderKeyAndUri()
LayerHint
Layer type hints.
@ Annotation
Annotation layer type, since QGIS 3.22.
@ Vector
Vector layer type.
@ Mesh
Mesh layer type, since QGIS 3.6.
@ Raster
Raster layer type.
@ UnknownType
Unknown layer type.
@ PointCloud
Point cloud layer type, since QGIS 3.22.
static QString generateTempFilename(const QString &basename)
Returns a temporary filename for a given file, putting it into a temporary folder (creating that fold...
static QgsProcessingFeatureSource * variantToSource(const QVariant &value, QgsProcessingContext &context, const QVariant &fallbackValue=QVariant())
Converts a variant value to a new feature source.
static QString convertToCompatibleFormatAndLayerName(const QgsVectorLayer *layer, bool selectedFeaturesOnly, const QString &baseName, const QStringList &compatibleFormats, const QString &preferredFormat, QgsProcessingContext &context, QgsProcessingFeedback *feedback, QString &layerName, long long featureLimit=-1)
Converts a source vector layer to a file path and layer name of a vector layer of compatible format.
static QString variantToPythonLiteral(const QVariant &value)
Converts a variant to a Python literal.
static QgsCoordinateReferenceSystem variantToCrs(const QVariant &value, QgsProcessingContext &context, const QVariant &fallbackValue=QVariant())
Converts a variant value to a coordinate reference system.
static QgsMapLayer * mapLayerFromString(const QString &string, QgsProcessingContext &context, bool allowLoadingNewLayers=true, QgsProcessingUtils::LayerHint typeHint=QgsProcessingUtils::LayerHint::UnknownType)
Interprets a string as a map layer within the supplied context.
static QString defaultRasterExtension()
Returns the default raster extension to use, in the absence of all other constraints (e....
static QString defaultPointCloudExtension()
Returns the default point cloud extension to use, in the absence of all other constraints (e....
static const QString TEMPORARY_OUTPUT
Constant used to indicate that a Processing algorithm output should be a temporary layer/file.
PythonOutputType
Available Python output types.
@ PythonQgsProcessingAlgorithmSubclass
Full Python QgsProcessingAlgorithm subclass.
SourceType
Data source types enum.
@ TypePlugin
Plugin layers.
@ TypeVectorLine
Vector line layers.
@ TypeMapLayer
Any map layer type (raster, vector, mesh, point cloud, annotation or plugin layer)
@ TypeVectorPolygon
Vector polygon layers.
@ TypeFile
Files (i.e. non map layer sources, such as text files)
@ TypeAnnotation
Annotation layers.
@ TypePointCloud
Point cloud layers.
@ TypeVector
Tables (i.e. vector layers with or without geometry). When used for a sink this indicates the sink ha...
@ TypeRaster
Raster layers.
@ TypeVectorPoint
Vector point layers.
@ TypeVectorAnyGeometry
Any vector layer with geometry.
static QString sourceTypeToString(SourceType type)
Converts a source type to a string representation.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
QgsAnnotationLayer * mainAnnotationLayer()
Returns the main annotation layer associated with the project.
const QgsLayoutManager * layoutManager() const
Returns the project's layout manager, which manages print layouts, atlases and reports within the pro...
A store for object properties.
@ ExpressionBasedProperty
Expression based property (QgsExpressionBasedProperty)
@ StaticProperty
Static property (QgsStaticProperty)
@ FieldBasedProperty
Field based property (QgsFieldBasedProperty)
@ InvalidProperty
Invalid (not set) property.
QString asExpression() const
Returns an expression string representing the state of the property, or an empty string if the proper...
QString valueAsString(const QgsExpressionContext &context, const QString &defaultString=QString(), bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a string.
QVariant value(const QgsExpressionContext &context, const QVariant &defaultValue=QVariant(), bool *ok=nullptr) const
Calculates the current value of the property, including any transforms which are set for the property...
QVariant toVariant() const
Saves this property to a QVariantMap, wrapped in a QVariant.
bool loadVariant(const QVariant &property)
Loads this property from a QVariantMap, wrapped in a QVariant.
QVariant staticValue() const
Returns the current static value for the property.
Type propertyType() const
Returns the property type.
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
QString fileVectorFilters() const
Returns a file filter string for supported vector files.
QString fileRasterFilters() const
Returns a file filter string for supported raster files.
QString fileMeshFilters() const
Returns a file filter string for supported mesh files.
QString filePointCloudFilters() const
Returns a file filter string for supported point clouds.
static QStringList supportedFormatExtensions(RasterFormatOptions options=SortRecommended)
Returns a list of file extensions for supported formats.
Represents a raster layer.
A rectangle specified with double values.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
double xMaximum() const SIP_HOLDGIL
Returns the x maximum value (right side of rectangle).
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
double yMinimum() const SIP_HOLDGIL
Returns the y minimum value (bottom side of rectangle).
bool isNull() const
Test if the rectangle is null (all coordinates zero or after call to setMinimal()).
QgsCoordinateReferenceSystem crs() const
Returns the associated coordinate reference system, or an invalid CRS if no reference system is set.
A QgsGeometry with associated coordinate reference system.
static QgsReferencedGeometry fromReferencedPointXY(const QgsReferencedPointXY &point)
Construct a new QgsReferencedGeometry from referenced point.
static QgsReferencedGeometry fromReferencedRect(const QgsReferencedRectangle &rectangle)
Construct a new QgsReferencedGeometry from referenced rectangle.
A QgsPointXY with associated coordinate reference system.
A QgsRectangle with associated coordinate reference system.
Defines the parameters used to remap features when creating a QgsRemappingProxyFeatureSink.
static QColor parseColorWithAlpha(const QString &colorStr, bool &containsAlpha, bool strictEval=false)
Attempts to parse a string as a color using a variety of common formats, including hex codes,...
DistanceUnit
Units of distance.
@ DistanceUnknownUnit
Unknown distance unit.
TemporalUnit
Temporal units.
static QStringList supportedFormatExtensions(VectorFormatOptions options=SortRecommended)
Returns a list of file extensions for supported formats, e.g "shp", "gpkg".
Represents a vector layer which manages a vector based data sets.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Type
The WKB type describes the number of dimensions a geometry has.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
QString parameterAsCompatibleSourceLayerPathInternal(const QgsProcessingParameterDefinition *definition, const QVariantMap ¶meters, QgsProcessingContext &context, const QStringList &compatibleFormats, const QString &preferredFormat, QgsProcessingFeedback *feedback, QString *layerName)
QString createAllMapLayerFileFilter()
const QgsCoordinateReferenceSystem & crs