QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
16 #include <QRegularExpression>
49 std::unique_ptr<QgsExpression> expression;
59 if ( expression->hasParserError() || !expression->prepare( &context ) )
68 lst.insert( fieldOrExpression );
70 lst = expression->referencedColumns();
73 .
setFlags( ( expression && expression->needsGeometry() ) ?
91 QList<QVariant> values;
95 std::unique_ptr<QgsExpression> expression;
112 QVariant v = expression->evaluate( &context );
131 QList<double> values;
136 QList<QVariant> variantValues =
getValues( layer, fieldOrExpression, ok, selectedOnly, feedback );
141 const auto constVariantValues = variantValues;
142 for (
const QVariant &value : constVariantValues )
144 double val = value.toDouble( &convertOk );
147 else if ( value.isNull() )
168 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
172 if ( fields.
fieldOrigin( fieldIndex ) == QgsFields::FieldOrigin::OriginJoin )
180 fieldIndex = srcFieldIndex;
181 layer = joinInfo->joinLayer();
189 QString fieldName = fields.
at( fieldIndex ).
name();
197 int limit = ignoreIds.size() + 1;
207 if ( ignoreIds.contains( feat.
id() ) )
223 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
231 QVariant newVar( maxVal.toLongLong() + 1 );
241 case QVariant::String:
244 if ( seed.isValid() )
245 base = seed.toString();
247 if ( !base.isEmpty() )
250 QRegularExpression rx( QStringLiteral(
"(.*)_\\d+" ) );
251 QRegularExpressionMatch match = rx.match( base );
252 if ( match.hasMatch() )
254 base = match.captured( 1 );
266 base = f.
attribute( fieldIndex ).toString();
273 if ( !base.isEmpty() && !vals.contains( base ) )
276 for (
int i = 1; i < 10000; ++i )
278 QString testVal = base +
'_' + QString::number( i );
279 if ( !vals.contains( testVal ) )
303 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
310 QVariant maxVal = existingValues.isEmpty() ? 0 : *std::max_element( existingValues.begin(), existingValues.end(), [](
const QVariant & a,
const QVariant & b ) { return a.toLongLong() < b.toLongLong(); } );
311 QVariant newVar( maxVal.toLongLong() + 1 );
321 case QVariant::String:
324 if ( seed.isValid() )
325 base = seed.toString();
327 if ( !base.isEmpty() )
330 QRegularExpression rx( QStringLiteral(
"(.*)_\\d+" ) );
331 QRegularExpressionMatch match = rx.match( base );
332 if ( match.hasMatch() )
334 base = match.captured( 1 );
341 base = existingValues.isEmpty() ? QString() : existingValues.values().first().toString();
346 for (
const auto &v : std::as_const( existingValues ) )
348 if ( v.toString().startsWith( base ) )
349 vals.push_back( v.toString() );
353 if ( !base.isEmpty() && !vals.contains( base ) )
356 for (
int i = 1; i < 10000; ++i )
358 QString testVal = base +
'_' + QString::number( i );
359 if ( !vals.contains( testVal ) )
383 if ( attributeIndex < 0 || attributeIndex >= layer->
fields().
count() )
388 const QVariant value = feature.
attribute( attributeIndex );
403 valid = expr.
evaluate( &context ).toBool();
411 errors << QObject::tr(
"evaluation error: %1" ).arg( expr.
evalErrorString() );
419 bool notNullConstraintViolated {
false };
435 valid = valid && !value.isNull();
437 if ( value.isNull() )
439 errors << QObject::tr(
"value is NULL" );
440 notNullConstraintViolated =
true;
446 if ( ! notNullConstraintViolated )
465 valid = valid && !alreadyExists;
469 errors << QObject::tr(
"value is not unique" );
482 return features.isEmpty() ?
QgsFeature() : features.first();
491 result.reserve( featuresData.length() );
494 std::unique_ptr< QgsExpressionContext > tempContext;
499 evalContext = tempContext.get();
505 QMap<int, QSet<QVariant>> uniqueValueCache;
507 auto checkUniqueValue = [ & ](
const int fieldIdx,
const QVariant & value )
509 if ( ! uniqueValueCache.contains( fieldIdx ) )
514 std::unique_ptr<QgsVectorLayer> unfilteredClone { layer->
clone( ) };
516 uniqueValueCache[ fieldIdx ] = unfilteredClone->uniqueValues( fieldIdx );
520 uniqueValueCache[ fieldIdx ] = layer->
uniqueValues( fieldIdx );
523 return uniqueValueCache[ fieldIdx ].contains( value );
526 for (
const auto &fd : std::as_const( featuresData ) )
535 for (
int idx = 0; idx < fields.
count(); ++idx )
538 bool checkUnique =
true;
543 if ( fd.attributes().contains( idx ) )
545 v = fd.attributes().value( idx );
551 if ( ( v.isNull() || ( hasUniqueConstraint
552 && checkUniqueValue( idx, v ) )
554 && defaultValueDefinition.
isValid() )
559 v = layer->
defaultValue( idx, newFeature, evalContext );
564 if ( ( v.isNull() || ( hasUniqueConstraint
565 && checkUniqueValue( idx, v ) ) )
570 if ( !providerDefault.isEmpty() )
579 if ( ( v.isNull() || ( checkUnique
580 && hasUniqueConstraint
581 && checkUniqueValue( idx, v ) ) )
595 if ( v.isNull() && fd.attributes().contains( idx ) )
597 v = fd.attributes().value( idx );
605 if ( checkUnique && hasUniqueConstraint )
607 if ( checkUniqueValue( idx, v ) )
611 if ( uniqueValue.isValid() )
615 if ( hasUniqueConstraint )
617 uniqueValueCache[ idx ].insert( v );
622 result.append( newFeature );
644 const int effectiveMaxDepth = maxDepth > 0 ? maxDepth : 100;
649 if ( relation.strength() ==
QgsRelation::Composition && !referencedLayersBranch.contains( relation.referencedLayer() ) && depth < effectiveMaxDepth )
652 referencedLayersBranch << layer;
658 while ( relatedFeaturesIt.
nextFeature( childFeature ) )
661 relation.referencingLayer()->startEditing();
663 const auto pairs = relation.fieldPairs();
669 childFeatureIds.insert(
duplicateFeature( relation.referencingLayer(), childFeature, project, duplicateFeatureContext, maxDepth, depth, referencedLayersBranch ).
id() );
673 duplicateFeatureContext.setDuplicatedFeatures( relation.referencingLayer(), childFeatureIds );
683 std::unique_ptr<QgsVectorLayerFeatureSource> featureSource;
687 Q_ASSERT( QThread::currentThread() == qApp->thread() || feedback );
698 return featureSource;
706 attributes.reserve( fields.
size() );
711 attributes.append( index >= 0 ? feature.
attribute( index ) : QVariant(
field.
type() ) );
719 if ( lengthDiff > 0 )
725 else if ( lengthDiff < 0 )
729 attributes.reserve( fields.
count() );
732 attributes.append( QVariant( fields.
at( i ).
type() ) );
752 for (
int index : pkIndexes )
761 bool newFHasGeom = newFGeomType !=
762 QgsWkbTypes::GeometryType::UnknownGeometry &&
763 newFGeomType != QgsWkbTypes::GeometryType::NullGeometry;
764 bool layerHasGeom = inputWkbType !=
765 QgsWkbTypes::Type::NoGeometry &&
766 inputWkbType != QgsWkbTypes::Type::Unknown;
768 if ( ( newFHasGeom && !layerHasGeom ) || !newFHasGeom )
772 resultFeatures.append( _f );
779 if ( geometries.count() != 1 )
782 for (
int j = 0; j < newF.
fields().count(); j++ )
786 resultFeatures.reserve( geometries.size() );
790 resultFeatures.append( _f );
796 resultFeatures.append( newF );
799 return resultFeatures;
808 for (
const auto &_f : features )
810 resultFeatures.append( _f );
813 return resultFeatures;
818 QList<QgsVectorLayer *>
layers;
819 QMap<QgsVectorLayer *, QgsFeatureIds>::const_iterator i;
820 for ( i = mDuplicatedFeatures.begin(); i != mDuplicatedFeatures.end(); ++i )
827 return mDuplicatedFeatures[layer];
832 if ( mDuplicatedFeatures.contains( layer ) )
833 mDuplicatedFeatures[layer] += ids;
835 mDuplicatedFeatures.insert( layer, ids );
845 mGeometry( geometry ),
846 mAttributes( attributes )
933 if ( !joinedFeature.
isValid() )
968 const bool hasEffects = maskSettings.
opacity() < 1 ||
972 QgsMaskedLayer &maskedLayer = maskedLayers[currentRule][r.layerId()];
981 QHash<QString, QgsMaskedLayers> maskedLayers;
989 LabelMasksVisitor visitor;
991 return std::move( visitor.maskedLayers );
1008 bool visitSymbol(
const QgsSymbol *symbol )
1012 bool symbolHasEffect = symbol->
opacity() < 1;
1017 symbolHasEffect |= slHasEffects;
1022 slHasEffects |= visitSymbol( subSymbol );
1024 for (
const auto &mask : sl->
masks() )
1032 return symbolHasEffect;
1040 if ( symbolEntity->symbol() )
1041 visitSymbol( symbolEntity->symbol() );
1048 SymbolLayerVisitor visitor;
1050 return visitor.maskedLayers;
1060 QString displayString = exp.
evaluate( &context ).toString();
1062 return displayString;
1077 const auto constFids = fids;
1083 while ( relatedFeaturesIt.
nextFeature( childFeature ) )
1085 childFeatureIds.insert( childFeature.
id() );
1089 if ( childFeatureIds.count() > 0 )
1091 if ( context.
layers().contains( relation.referencingLayer() ) )
1095 handledFeatureIds.unite( childFeatureIds );
1096 context.setDuplicatedFeatures( relation.referencingLayer(), handledFeatureIds );
1101 context.setDuplicatedFeatures( relation.referencingLayer(), childFeatureIds );
1115 if ( info.isEditable() && info.hasCascadedDelete() )
1118 const auto constFids = fids;
1123 joinFeatureIds.insert( joinFeature.
id() );
1126 if ( joinFeatureIds.count() > 0 )
1128 if ( context.
layers().contains( info.joinLayer() ) )
1132 handledFeatureIds.unite( joinFeatureIds );
1133 context.setDuplicatedFeatures( info.joinLayer(), handledFeatureIds );
1138 context.setDuplicatedFeatures( info.joinLayer(), joinFeatureIds );
1145 return !context.
layers().isEmpty();
1150 if ( foundFriendly )
1151 *foundFriendly =
false;
1163 static QStringList sCandidates{ QStringLiteral(
"name" ),
1164 QStringLiteral(
"title" ),
1165 QStringLiteral(
"heibt" ),
1166 QStringLiteral(
"desc" ),
1167 QStringLiteral(
"nom" ),
1168 QStringLiteral(
"street" ),
1169 QStringLiteral(
"road" ),
1170 QStringLiteral(
"label" ) };
1177 static QStringList sAntiCandidates{ QStringLiteral(
"type" ),
1178 QStringLiteral(
"class" ),
1179 QStringLiteral(
"cat" )
1182 QString bestCandidateName;
1183 QString bestCandidateNameWithAntiCandidate;
1185 for (
const QString &candidate : sCandidates )
1190 if ( fldName.contains( candidate, Qt::CaseInsensitive ) )
1192 bool isAntiCandidate =
false;
1193 for (
const QString &antiCandidate : sAntiCandidates )
1195 if ( fldName.contains( antiCandidate, Qt::CaseInsensitive ) )
1197 isAntiCandidate =
true;
1202 if ( isAntiCandidate )
1204 if ( bestCandidateNameWithAntiCandidate.isEmpty() )
1206 bestCandidateNameWithAntiCandidate = fldName;
1211 bestCandidateName = fldName;
1217 if ( !bestCandidateName.isEmpty() )
1221 const QString candidateName = bestCandidateName.isEmpty() ? bestCandidateNameWithAntiCandidate : bestCandidateName;
1222 if ( !candidateName.isEmpty() )
1224 if ( foundFriendly )
1225 *foundFriendly =
true;
1226 return candidateName;
1238 return fields.at( 0 ).name();
@ OriginProvider
Field comes from the underlying data provider of the vector layer (originIndex = index in provider's ...
@ NoGeometry
Geometry is not required. It may still be returned if e.g. required for a filter condition.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsRelationManager relationManager
bool enabled() const
Returns whether the mask is enabled.
void appendScopes(const QList< QgsExpressionContextScope * > &scopes)
Appends a list of scopes to the end of the context.
virtual QList< QgsSymbolLayerReference > masks() const
Returns masks defined by this symbol layer.
Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL
Returns the WKBType or WKBUnknown in case of error.
virtual QgsAttributeList pkAttributeIndexes() const
Returns list of indexes of fields that make up the primary key.
The QgsDefaultValue class provides a container for managing client side default values for fields.
QStringList uniqueStringsMatching(int index, const QString &substring, int limit=-1, QgsFeedback *feedback=nullptr) const
Returns unique string values of an attribute which contain a specified subset string.
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
static QgsFeatureList makeFeatureCompatible(const QgsFeature &feature, const QgsVectorLayer *layer, QgsFeatureSink::SinkFlags sinkFlags=QgsFeatureSink::SinkFlags())
Converts input feature to be compatible with the given layer.
QString evalErrorString() const
Returns evaluation error.
void initAttributes(int fieldCount)
Initialize this feature with the given number of fields.
bool isEmpty() const
Checks whether the container is empty.
QSet< QgsSymbolLayerId > symbolLayerIds
A symbol entity for QgsStyle databases.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
Stores information about constraints which may be present on a field.
QgsAttributeMap attributes() const
Returns attributes.
int count() const
Returns number of items.
Container of fields for a vector layer.
QString constraintExpression() const
Returns the constraint expression for the field, if set.
bool isCanceled() const SIP_HOLDGIL
Tells whether the operation has been canceled already.
void setValid(bool validity)
Sets the validity of the feature.
const QgsVectorLayerJoinInfo * joinForFieldIndex(int index, const QgsFields &fields, int &sourceFieldIndex) const
Finds the vector join for a layer field index.
@ Composition
Fix relation, related elements are part of the parent and a parent copy will copy any children or del...
An interface for classes which can visit style entity (e.g. symbol) nodes (using the visitor pattern)...
bool isValid() const
Returns if this default value should be applied.
static QgsFeatureIterator getValuesIterator(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly)
Create a feature iterator for a specified field name or expression.
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
QgsFeatureData(const QgsGeometry &geometry=QgsGeometry(), const QgsAttributeMap &attributes=QgsAttributeMap())
Constructs a new QgsFeatureData with given geometry and attributes.
virtual bool skipConstraintCheck(int fieldIndex, QgsFieldConstraints::Constraint constraint, const QVariant &value=QVariant()) const
Returns true if a constraint check should be skipped for a specified field (e.g., if the value return...
Type
The WKB type describes the number of dimensions a geometry has.
QgsFeatureRequest & setSubsetOfAttributes(const QgsAttributeList &attrs)
Set a subset of attributes that will be fetched.
Encapsulate geometry and attributes for new features, to be passed to createFeatures.
Abstract base class for all rendered symbols.
static QgsFeature duplicateFeature(QgsVectorLayer *layer, const QgsFeature &feature, QgsProject *project, QgsDuplicateFeatureContext &duplicateFeatureContext, const int maxDepth=0, int depth=0, QList< QgsVectorLayer * > referencedLayersBranch=QList< QgsVectorLayer * >())
Duplicates a feature and it's children (one level deep).
QgsSymbolLayer * symbolLayer(int layer)
Returns the symbol layer at the specified index.
QList< int > QgsAttributeList
@ ConstraintNotNull
Field may not be null.
Contains information relating to the style entity currently being visited.
QVariant defaultValue(int index, const QgsFeature &feature=QgsFeature(), QgsExpressionContext *context=nullptr) const
Returns the calculated default value for the specified field index.
static QgsMaskedLayers symbolLayerMasks(const QgsVectorLayer *)
Returns all masks that may be defined on symbol layers for a given vector layer.
virtual QVariant defaultValue(int fieldIndex) const
Returns any literal default values which are present at the provider for a specified field index.
bool isEditable() const FINAL
Returns true if the provider is in editing mode.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
@ LabelSettingsEntity
Label settings.
QList< QgsVectorLayerJoinInfo > QgsVectorJoinList
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
static QString quotedValue(const QVariant &value)
Returns a string representation of a literal value, including appropriate quotations where required.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
qreal opacity() const
Returns the opacity for the symbol.
static QList< QVariant > getValues(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly=false, QgsFeedback *feedback=nullptr)
Fetches all values from a specified field name or expression.
This class wraps a request for features to a vector layer (or directly its vector data provider).
virtual Q_INVOKABLE QgsVectorDataProvider::Capabilities capabilities() const
Returns flags containing the supported capabilities.
bool hasEvalError() const
Returns true if an error occurred when evaluating last input.
QList< QgsVectorLayer * > layers() const
Returns all the layers on which features have been duplicated.
bool _fieldIsEditable(const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature)
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
QList< QgsRelation > referencedRelations(const QgsVectorLayer *layer=nullptr) const
Gets all relations where this layer is the referenced part (i.e.
QList< QgsVectorLayerUtils::QgsFeatureData > QgsFeaturesDataList
Alias for list of QgsFeatureData.
QString parserErrorString() const
Returns parser error.
bool isValid() const
Returns the validity of this feature.
void setFields(const QgsFields &fields, bool initAttributes=false)
Assigns a field map with the feature to allow attribute access by attribute name.
Container for settings relating to a selective masking around a text. A selective masking only makes ...
ConstraintOrigin
Origin of constraints.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
QList< QgsSymbolLayerReference > maskedSymbolLayers() const
Returns a list of references to symbol layers that are masked by this buffer.
const QgsAbstractVectorLayerLabeling * labeling() const
Access to const labeling configuration.
bool hasUpsertOnEdit() const
Returns whether a feature created on the target layer has to impact the joined layer by creating a ne...
Contains mainly the QMap with QgsVectorLayer and QgsFeatureIds do list all the duplicated features.
QSet< QVariant > uniqueValues(int fieldIndex, int limit=-1) const FINAL
Calculates a list of unique values contained within an attribute in the layer.
int size() const
Returns number of items.
FieldOrigin fieldOrigin(int fieldIdx) const
Returns the field's origin (value from an enumeration).
QList< QgsFeature > QgsFeatureList
QMap< int, QVariant > QgsAttributeMap
bool isEditable() const
Returns whether joined fields may be edited through the form of the target layer.
@ ConstraintUnique
Field must have a unique value.
@ IgnoreAuxiliaryLayers
Ignore auxiliary layers.
const QgsVectorJoinList & vectorJoins() const
virtual QgsStyle::StyleEntity type() const =0
Returns the type of style entity.
@ AddFeatures
Allows adding features.
QVariant attribute(const QString &name) const
Lookup attribute value by attribute name.
double opacity() const
Returns the mask's opacity.
QVariant maximumValue(int index) const FINAL
Returns the maximum value for an attribute column or an invalid variant in case of error.
static QVariant createUniqueValue(const QgsVectorLayer *layer, int fieldIndex, const QVariant &seed=QVariant())
Returns a new attribute value for the specified field index which is guaranteed to be unique.
@ ConstraintStrengthNotSet
Constraint is not set.
@ SymbolRule
Rule based symbology or label child rule.
Defines left outer join from our vector layer to some other vector layer. The join is done based on [...
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the layer.
Contains information relating to a node (i.e.
ConstraintStrength constraintStrength(Constraint constraint) const
Returns the strength of a field constraint, or ConstraintStrengthNotSet if the constraint is not pres...
QString constraintDescription() const
Returns the descriptive name for the constraint expression.
CORE_EXPORT QgsAttributeMap toMap() const
Returns a QgsAttributeMap of the attribute values.
QgsGeometry geometry() const
Returns geometry.
QgsFeatureRequest & setNoAttributes()
Set that no attributes will be fetched.
bool prepare(const QgsExpressionContext *context)
Gets the expression ready for evaluation - find out column indexes.
QSet< QgsFeatureId > QgsFeatureIds
static std::unique_ptr< QgsVectorLayerFeatureSource > getFeatureSource(QPointer< QgsVectorLayer > layer, QgsFeedback *feedback=nullptr)
Gets the feature source from a QgsVectorLayer pointer.
@ RegeneratePrimaryKey
This flag indicates, that a primary key field cannot be guaranteed to be unique and the sink should i...
Defines a relation between matching fields of the two involved tables of a relation.
QgsDefaultValue defaultValueDefinition(int index) const
Returns the definition of the expression used when calculating the default value for a field.
A label settings entity for QgsStyle databases.
QVariant evaluate()
Evaluate the feature and return the result.
static QgsFeature createFeature(const QgsVectorLayer *layer, const QgsGeometry &geometry=QgsGeometry(), const QgsAttributeMap &attributes=QgsAttributeMap(), QgsExpressionContext *context=nullptr)
Creates a new feature ready for insertion into a layer.
const QgsStyleEntityInterface * entity
Reference to style entity being visited.
QgsFeatureIterator getSelectedFeatures(QgsFeatureRequest request=QgsFeatureRequest()) const
Returns an iterator of the selected features.
bool setAttribute(int field, const QVariant &attr)
Sets an attribute's value by field index.
@ ConstraintOriginNotSet
Constraint is not set.
QVector< QgsGeometry > coerceToType(QgsWkbTypes::Type type, double defaultZ=0, double defaultM=0) const
Attempts to coerce this geometry into the specified destination type.
static void matchAttributesToFields(QgsFeature &feature, const QgsFields &fields)
Matches the attributes in feature to the specified fields.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
bool nextFeature(QgsFeature &f)
A geometry is the spatial representation of a feature.
static bool runOnMainThread(const Func &func, QgsFeedback *feedback=nullptr)
Guarantees that func is executed on the main thread.
@ ChangeAttributeValues
Allows modification of attribute values.
Represents a vector layer which manages a vector based data sets.
QgsFeatureRequest & setLimit(long long limit)
Set the maximum number of features to request.
QgsEditFormConfig editFormConfig
QgsFeature joinedFeatureOf(const QgsVectorLayerJoinInfo *info, const QgsFeature &feature) const
Returns the joined feature corresponding to the feature.
static bool validateAttribute(const QgsVectorLayer *layer, const QgsFeature &feature, int attributeIndex, QStringList &errors, QgsFieldConstraints::ConstraintStrength strength=QgsFieldConstraints::ConstraintStrengthNotSet, QgsFieldConstraints::ConstraintOrigin origin=QgsFieldConstraints::ConstraintOriginNotSet)
Tests a feature attribute value to check whether it passes all constraints which are present on the c...
Partial snapshot of vector layer's state (only the members necessary for access to features)
static bool fieldIsEditable(const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature)
Tests whether a field is editable for a particular feature.
QgsVectorLayer * joinLayer() const
Returns joined layer (may be nullptr if the reference was set by layer ID and not resolved yet)
@ ConstraintExpression
Field has an expression constraint set. See constraintExpression().
static QgsFeatureList makeFeaturesCompatible(const QgsFeatureList &features, const QgsVectorLayer *layer, QgsFeatureSink::SinkFlags sinkFlags=QgsFeatureSink::SinkFlags())
Converts input features to be compatible with the given layer.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the mask.
static QString quotedColumnRef(QString name)
Returns a quoted column reference (in double quotes)
int fieldOriginIndex(int fieldIdx) const
Returns the field's origin index (its meaning is specific to each type of origin).
QgsFieldConstraints constraints
static GeometryType geometryType(Type type) SIP_HOLDGIL
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
bool containsJoins() const
Quick way to test if there is any join at all.
static bool impactsCascadeFeatures(const QgsVectorLayer *layer, const QgsFeatureIds &fids, const QgsProject *project, QgsDuplicateFeatureContext &context, QgsVectorLayerUtils::CascadedFeatureFlags flags=QgsVectorLayerUtils::CascadedFeatureFlags())
QHash< QString, QgsMaskedLayer > QgsMaskedLayers
static QgsFeatureList createFeatures(const QgsVectorLayer *layer, const QgsFeaturesDataList &featuresData, QgsExpressionContext *context=nullptr)
Creates a set of new features ready for insertion into a layer.
virtual QString defaultValueClause(int fieldIndex) const
Returns any default value clauses which are present at the provider for a specified field index.
A vector of attributes. Mostly equal to QVector<QVariant>.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
bool hasParserError() const
Returns true if an error occurred when parsing the input expression.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
@ ConstraintOriginProvider
Constraint was set at data provider.
ConstraintStrength
Strength of constraints.
QgsFeatureIds duplicatedFeatures(QgsVectorLayer *layer) const
Returns the duplicated features in the given layer.
bool enabled() const
Returns whether the effect is enabled.
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
static bool fieldIsReadOnly(const QgsVectorLayer *layer, int fieldIndex)
static QVariant createUniqueValueFromCache(const QgsVectorLayer *layer, int fieldIndex, const QSet< QVariant > &existingValues, const QVariant &seed=QVariant())
Returns a new attribute value for the specified field index which is guaranteed to be unique within r...
QgsExpressionContext createExpressionContext() const FINAL
This method needs to be reimplemented in all classes which implement this interface and return an exp...
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
Class for parsing and evaluation of expressions (formerly called "search strings")....
QString displayExpression
QString identifier
A string identifying the node.
static bool valueExists(const QgsVectorLayer *layer, int fieldIndex, const QVariant &value, const QgsFeatureIds &ignoreIds=QgsFeatureIds())
Returns true if the specified value already exists within a field.
Wrapper for iterator of features from vector data provider or vector layer.
QgsVectorLayer * clone() const override
Returns a new instance equivalent to this one.
bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) FINAL
Adds a single feature to the sink.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the labeling...
QgsFeatureRequest & setFlags(QgsFeatureRequest::Flags flags)
Sets flags that affect how features will be fetched.
static QHash< QString, QgsMaskedLayers > labelMasks(const QgsVectorLayer *)
Returns masks defined in labeling options of a layer.
bool convertCompatible(QVariant &v, QString *errorMessage=nullptr) const
Converts the provided variant to a compatible format.
static bool fieldEditabilityDependsOnFeature(const QgsVectorLayer *layer, int fieldIndex)
Returns true if the editability of the field at index fieldIndex from layer may vary feature by featu...
static QString guessFriendlyIdentifierField(const QgsFields &fields, bool *foundFriendly=nullptr)
Given a set of fields, attempts to pick the "most useful" field for user-friendly identification of f...
QgsStyleEntityVisitorInterface::NodeType type
Node type.
@ OriginJoin
Field comes from a joined layer (originIndex / 1000 = index of the join, originIndex % 1000 = index w...
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
QgsVectorLayerJoinBuffer * joinBuffer()
Returns the join buffer object.
ConstraintOrigin constraintOrigin(Constraint constraint) const
Returns the origin of a field constraint, or ConstraintOriginNotSet if the constraint is not present ...
virtual bool setSubsetString(const QString &subset)
Sets the string (typically sql) used to define a subset of the layer.
int symbolLayerCount() const
Returns the total number of symbol layers contained in the symbol.
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
static QString getFeatureDisplayString(const QgsVectorLayer *layer, const QgsFeature &feature)
static QList< double > getDoubleValues(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly=false, int *nullCount=nullptr, QgsFeedback *feedback=nullptr)
Fetches all double values from a specified field name or expression.
Encapsulate a field in an attribute table or data source.