15#ifndef QGSEXPRESSIONCONTEXT_H
16#define QGSEXPRESSIONCONTEXT_H
32class LoadLayerFunction;
53 const QString &helpText = QString(),
54 bool usesGeometry =
false,
55 const QSet<QString> &referencedColumns = QSet<QString>(),
56 bool lazyEval =
false,
57 bool handlesNull =
false,
58 bool isContextual =
true )
60 , mUsesGeometry( usesGeometry )
61 , mReferencedColumns( referencedColumns )
71 const QString &helpText = QString(),
72 bool usesGeometry =
false,
73 const QSet<QString> &referencedColumns = QSet<QString>(),
74 bool lazyEval =
false,
75 bool handlesNull =
false,
76 bool isContextual =
true )
78 , mUsesGeometry( usesGeometry )
79 , mReferencedColumns( referencedColumns )
97 QSet<QString> mReferencedColumns;
131 StaticVariable(
const QString &name = QString(),
const QVariant &value = QVariant(),
bool readOnly =
false,
bool isStatic =
false,
const QString &description = QString() )
134 , readOnly( readOnly )
135 , isStatic( isStatic )
136 , description( description )
173 QString
name()
const {
return mName; }
182 void setVariable(
const QString &name,
const QVariant &value,
bool isStatic =
false );
199 bool removeVariable(
const QString &name );
208 bool hasVariable(
const QString &name )
const;
217 QVariant variable(
const QString &name )
const;
224 QStringList variableNames()
const;
232 QStringList filteredVariableNames()
const;
240 bool isReadOnly(
const QString &name )
const;
247 bool isStatic(
const QString &name )
const;
254 QString description(
const QString &name )
const;
268 bool hasFunction(
const QString &name )
const;
285 QStringList functionNames()
const;
362 void setFields(
const QgsFields &fields );
376 bool writeXml( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const;
387 QStringList hiddenVariables()
const;
399 void setHiddenVariables(
const QStringList &hiddenVariables );
412 void addHiddenVariable(
const QString &hiddenVariable );
423 void removeHiddenVariable(
const QString &hiddenVariable );
443 QList< QgsMapLayerStore * > layerStores()
const;
447 QHash<QString, StaticVariable> mVariables;
448 QHash<QString, QgsScopedExpressionFunction * > mFunctions;
449 bool mHasFeature =
false;
451 bool mHasGeometry =
false;
453 QStringList mHiddenVariables;
455 QList< QPointer< QgsMapLayerStore > > mLayerStores;
501 bool hasVariable(
const QString &name )
const;
512 QVariant variable(
const QString &name )
const;
518 QVariantMap variablesToMap()
const;
527 bool isHighlightedVariable(
const QString &name )
const;
535 QStringList highlightedVariables()
const;
544 void setHighlightedVariables(
const QStringList &variableNames );
554 bool isHighlightedFunction(
const QString &name )
const;
567 void setHighlightedFunctions(
const QStringList &names );
606 QList< QgsExpressionContextScope * >
scopes() {
return mStack; }
620 int indexOfScope(
const QString &scopeName )
const;
630 QStringList variableNames()
const;
638 QStringList filteredVariableNames()
const;
646 bool isReadOnly(
const QString &name )
const;
655 QString description(
const QString &name )
const;
663 bool hasFunction(
const QString &name )
const;
670 QStringList functionNames()
const;
685 int scopeCount()
const;
701 void appendScopes(
const QList<QgsExpressionContextScope *> &scopes
SIP_TRANSFER );
715 QList<QgsExpressionContextScope *> takeScopes()
SIP_SKIP;
737 bool hasFeature() const;
760 bool hasGeometry() const;
776 void setFields( const
QgsFields &fields );
789 void setOriginalValueVariable( const QVariant &value );
801 void setCachedValue( const QString &key, const QVariant &value ) const;
810 bool hasCachedValue( const QString &key ) const;
821 QVariant cachedValue( const QString &key ) const;
829 void clearCachedValues() const;
884 static const QString EXPR_FIELDS;
886 static const QString EXPR_ORIGINAL_VALUE;
888 static const QString EXPR_SYMBOL_COLOR;
890 static const QString EXPR_SYMBOL_ANGLE;
892 static const QString EXPR_GEOMETRY_PART_COUNT;
894 static const QString EXPR_GEOMETRY_PART_NUM;
900 static const QString EXPR_GEOMETRY_RING_NUM;
902 static const QString EXPR_GEOMETRY_POINT_COUNT;
904 static const QString EXPR_GEOMETRY_POINT_NUM;
906 static const QString EXPR_CLUSTER_SIZE;
908 static const QString EXPR_CLUSTER_COLOR;
913 QStringList mHighlightedVariables;
914 QStringList mHighlightedFunctions;
918 std::unique_ptr< LoadLayerFunction > mLoadLayerFunction;
922 mutable QMap< QString, QVariant > mCachedValues;
Single scope for storing variables and functions for use within a QgsExpressionContext.
void removeGeometry()
Removes any geometry associated with the scope.
void removeFeature()
Removes any feature associated with the scope.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the scope.
bool hasFeature() const
Returns true if the scope has a feature associated with it.
QgsGeometry geometry() const
Sets the geometry associated with the scope.
QString name() const
Returns the friendly display name of the context scope.
int variableCount() const
Returns the count of variables contained within the scope.
bool hasGeometry() const
Returns true if the scope has a geometry associated with it.
void setGeometry(const QgsGeometry &geometry)
Convenience function for setting a geometry for the scope.
QgsFeature feature() const
Sets the feature associated with the scope.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QList< QgsExpressionContextScope * > scopes()
Returns a list of scopes contained within the stack.
A abstract base class for defining QgsExpression functions.
QList< QgsExpressionFunction::Parameter > ParameterList
List of parameters, used for function definition.
virtual bool isStatic(const QgsExpressionNodeFunction *node, QgsExpression *parent, const QgsExpressionContext *context) const
Will be called during prepare to determine if the function is static.
virtual QSet< QString > referencedColumns(const QgsExpressionNodeFunction *node) const
Returns a set of field names which are required for this function.
virtual bool usesGeometry(const QgsExpressionNodeFunction *node) const
Does this function use a geometry object.
An expression node for expression functions.
Class for parsing and evaluation of expressions (formerly called "search strings").
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
The class is used as a container of context for various read/write operations on other objects.
Expression function for use within a QgsExpressionContextScope.
virtual QgsScopedExpressionFunction * clone() const =0
Returns a clone of the function.
QgsScopedExpressionFunction(const QString &fnname, int params, const QString &group, const QString &helpText=QString(), bool usesGeometry=false, const QSet< QString > &referencedColumns=QSet< QString >(), bool lazyEval=false, bool handlesNull=false, bool isContextual=true)
Create a new QgsScopedExpressionFunction.
QgsScopedExpressionFunction(const QString &fnname, const QgsExpressionFunction::ParameterList ¶ms, const QString &group, const QString &helpText=QString(), bool usesGeometry=false, const QSet< QString > &referencedColumns=QSet< QString >(), bool lazyEval=false, bool handlesNull=false, bool isContextual=true)
Create a new QgsScopedExpressionFunction using named parameters.
QVariant func(const QVariantList &values, const QgsExpressionContext *context, QgsExpression *parent, const QgsExpressionNodeFunction *node) override=0
Returns result of evaluating the function.
Single variable definition for use within a QgsExpressionContextScope.
bool readOnly
True if variable should not be editable by users.
StaticVariable(const QString &name=QString(), const QVariant &value=QVariant(), bool readOnly=false, bool isStatic=false, const QString &description=QString())
Constructor for StaticVariable.
bool isStatic
A static variable can be cached for the lifetime of a context.
QString name
Variable name.
QVariant value
Variable value.
QString description
Translated description of variable, for use within expression builder widgets.