15#ifndef QGSEXPRESSIONCONTEXT_H
16#define QGSEXPRESSIONCONTEXT_H
51 const QString &helpText = QString(),
52 bool usesGeometry =
false,
53 const QSet<QString> &referencedColumns = QSet<QString>(),
54 bool lazyEval =
false,
55 bool handlesNull =
false,
56 bool isContextual =
true )
58 , mUsesGeometry( usesGeometry )
59 , mReferencedColumns( referencedColumns )
70 const QString &helpText = QString(),
71 bool usesGeometry =
false,
72 const QSet<QString> &referencedColumns = QSet<QString>(),
73 bool lazyEval =
false,
74 bool handlesNull =
false,
75 bool isContextual =
true )
77 , mUsesGeometry( usesGeometry )
78 , mReferencedColumns( referencedColumns )
96 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;
248 bool isStatic(
const QString &name )
const;
256 QString description(
const QString &name )
const;
270 bool hasFunction(
const QString &name )
const;
287 QStringList functionNames()
const;
367 void setFields(
const QgsFields &fields );
381 bool writeXml( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const;
392 QStringList hiddenVariables()
const;
404 void setHiddenVariables(
const QStringList &hiddenVariables );
417 void addHiddenVariable(
const QString &hiddenVariable );
428 void removeHiddenVariable(
const QString &hiddenVariable );
432 QHash<QString, StaticVariable> mVariables;
433 QHash<QString, QgsScopedExpressionFunction * > mFunctions;
434 bool mHasFeature =
false;
436 bool mHasGeometry =
false;
438 QStringList mHiddenVariables;
486 bool hasVariable(
const QString &name )
const;
497 QVariant variable(
const QString &name )
const;
504 QVariantMap variablesToMap()
const;
513 bool isHighlightedVariable(
const QString &name )
const;
521 QStringList highlightedVariables()
const;
530 void setHighlightedVariables(
const QStringList &variableNames );
540 bool isHighlightedFunction(
const QString &name )
const;
553 void setHighlightedFunctions(
const QStringList &names );
592 QList< QgsExpressionContextScope * >
scopes() {
return mStack; }
607 int indexOfScope(
const QString &scopeName )
const;
617 QStringList variableNames()
const;
625 QStringList filteredVariableNames()
const;
633 bool isReadOnly(
const QString &name )
const;
643 QString description(
const QString &name )
const;
651 bool hasFunction(
const QString &name )
const;
658 QStringList functionNames()
const;
673 int scopeCount()
const;
690 void appendScopes(
const QList<QgsExpressionContextScope *> &scopes
SIP_TRANSFER );
705 QList<QgsExpressionContextScope *> takeScopes()
SIP_SKIP;
728 bool hasFeature() const;
751 bool hasGeometry() const;
767 void setFields( const
QgsFields &fields );
781 void setOriginalValueVariable( const QVariant &value );
794 void setCachedValue( const QString &key, const QVariant &value ) const;
804 bool hasCachedValue( const QString &key ) const;
816 QVariant cachedValue( const QString &key ) const;
825 void clearCachedValues() const;
851 static const QString EXPR_FIELDS;
853 static const QString EXPR_ORIGINAL_VALUE;
855 static const QString EXPR_SYMBOL_COLOR;
857 static const QString EXPR_SYMBOL_ANGLE;
859 static const QString EXPR_GEOMETRY_PART_COUNT;
861 static const QString EXPR_GEOMETRY_PART_NUM;
867 static const QString EXPR_GEOMETRY_RING_NUM;
869 static const QString EXPR_GEOMETRY_POINT_COUNT;
871 static const QString EXPR_GEOMETRY_POINT_NUM;
873 static const QString EXPR_CLUSTER_SIZE;
875 static const QString EXPR_CLUSTER_COLOR;
880 QStringList mHighlightedVariables;
881 QStringList mHighlightedFunctions;
886 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...
QgsExpressionContext()=default
Constructor for QgsExpressionContext.
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.
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.