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 )
170 QString
name()
const {
return mName; }
179 void setVariable(
const QString &name,
const QVariant &value,
bool isStatic =
false );
196 bool removeVariable(
const QString &name );
205 bool hasVariable(
const QString &name )
const;
214 QVariant variable(
const QString &name )
const;
221 QStringList variableNames()
const;
229 QStringList filteredVariableNames()
const;
237 bool isReadOnly(
const QString &name )
const;
244 bool isStatic(
const QString &name )
const;
251 QString description(
const QString &name )
const;
265 bool hasFunction(
const QString &name )
const;
282 QStringList functionNames()
const;
359 void setFields(
const QgsFields &fields );
373 bool writeXml( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const;
384 QStringList hiddenVariables()
const;
396 void setHiddenVariables(
const QStringList &hiddenVariables );
409 void addHiddenVariable(
const QString &hiddenVariable );
420 void removeHiddenVariable(
const QString &hiddenVariable );
440 QList< QgsMapLayerStore * > layerStores()
const;
444 QHash<QString, StaticVariable> mVariables;
445 QHash<QString, QgsScopedExpressionFunction * > mFunctions;
446 bool mHasFeature =
false;
448 bool mHasGeometry =
false;
450 QStringList mHiddenVariables;
452 QList< QPointer< QgsMapLayerStore > > mLayerStores;
494 bool hasVariable(
const QString &name )
const;
505 QVariant variable(
const QString &name )
const;
511 QVariantMap variablesToMap()
const;
520 bool isHighlightedVariable(
const QString &name )
const;
528 QStringList highlightedVariables()
const;
537 void setHighlightedVariables(
const QStringList &variableNames );
547 bool isHighlightedFunction(
const QString &name )
const;
560 void setHighlightedFunctions(
const QStringList &names );
599 QList< QgsExpressionContextScope * >
scopes() {
return mStack; }
613 int indexOfScope(
const QString &scopeName )
const;
623 QStringList variableNames()
const;
631 QStringList filteredVariableNames()
const;
639 bool isReadOnly(
const QString &name )
const;
648 QString description(
const QString &name )
const;
656 bool hasFunction(
const QString &name )
const;
663 QStringList functionNames()
const;
678 int scopeCount()
const;
694 void appendScopes(
const QList<QgsExpressionContextScope *> &scopes
SIP_TRANSFER );
708 QList<QgsExpressionContextScope *> takeScopes()
SIP_SKIP;
730 bool hasFeature() const;
753 bool hasGeometry() const;
769 void setFields( const
QgsFields &fields );
782 void setOriginalValueVariable( const QVariant &value );
794 void setCachedValue( const QString &key, const QVariant &value ) const;
803 bool hasCachedValue( const QString &key ) const;
814 QVariant cachedValue( const QString &key ) const;
822 void clearCachedValues() const;
877 static const QString EXPR_FIELDS;
879 static const QString EXPR_ORIGINAL_VALUE;
881 static const QString EXPR_SYMBOL_COLOR;
883 static const QString EXPR_SYMBOL_ANGLE;
885 static const QString EXPR_GEOMETRY_PART_COUNT;
887 static const QString EXPR_GEOMETRY_PART_NUM;
893 static const QString EXPR_GEOMETRY_RING_NUM;
895 static const QString EXPR_GEOMETRY_POINT_COUNT;
897 static const QString EXPR_GEOMETRY_POINT_NUM;
899 static const QString EXPR_CLUSTER_SIZE;
901 static const QString EXPR_CLUSTER_COLOR;
906 QStringList mHighlightedVariables;
907 QStringList mHighlightedFunctions;
911 std::unique_ptr< LoadLayerFunction > mLoadLayerFunction;
915 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.