27 setTitle( tr(
"Expression Editor" ) );
29 setAutoCompletionCaseSensitivity(
false );
43 for (
const QString &var : variableNames )
45 mVariables <<
'@' + var;
50 mVariables << QStringLiteral(
"@feature" );
51 mVariables << QStringLiteral(
"@id" );
52 mVariables << QStringLiteral(
"@geometry" );
59 for (
int i = 0; i < count; i++ )
71 QString signature = func->
name();
72 if ( !signature.startsWith(
'$' ) )
76 QStringList paramNames;
80 paramNames << param.name();
84 if ( parameters.isEmpty() && func->
params() )
85 signature += QChar( 0x2026 );
87 signature += paramNames.join(
", " );
91 mFunctions << signature;
101 for (
const QgsField &field : fields )
103 mFieldNames << field.name();
114 mSqlLexer =
new QgsLexerExpression(
this );
115 mSqlLexer->setDefaultFont( font );
118 mSqlLexer->setFont( font, -1 );
119 font.setBold(
true );
120 mSqlLexer->setFont( font, QsciLexerSQL::Keyword );
122 font.setBold(
false );
123 font.setItalic(
true );
124 mSqlLexer->setFont( font, QsciLexerSQL::Comment );
125 mSqlLexer->setFont( font, QsciLexerSQL::CommentLine );
127 mSqlLexer->setColor( Qt::darkYellow, QsciLexerSQL::DoubleQuotedString );
129 mSqlLexer->setColor(
defaultColor, QsciLexerSQL::Default );
141 setLexer( mSqlLexer );
145void QgsCodeEditorExpression::updateApis()
147 mApis =
new QgsSciApisExpression( mSqlLexer );
149 for (
const QString &var : std::as_const( mVariables ) )
154 for (
const QString &function : std::as_const( mContextFunctions ) )
156 mApis->add( function );
159 for (
const QString &function : std::as_const( mFunctions ) )
161 mApis->add( function );
164 for (
const QString &fieldName : std::as_const( mFieldNames ) )
166 mApis->add( fieldName );
169 mApis->add( QString(
"NULL" ) );
171 mSqlLexer->setAPIs( mApis );
175QgsLexerExpression::QgsLexerExpression( QObject *parent )
176 : QsciLexerSQL( parent )
178 setBackslashEscapes(
true );
181const char *QgsLexerExpression::language()
const
183 return "QGIS Expression";
186bool QgsLexerExpression::caseSensitive()
const
191const char *QgsLexerExpression::wordCharacters()
const
193 return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@";
196QgsSciApisExpression::QgsSciApisExpression( QsciLexer *lexer )
202QStringList QgsSciApisExpression::callTips(
const QStringList &context,
int commas, QsciScintilla::CallTipsStyle style, QList<int> &shifts )
204 const QStringList originalTips = QsciAPIs::callTips( context, commas, style, shifts );
205 QStringList lowercaseTips;
206 for (
const QString &tip : originalTips )
207 lowercaseTips << tip.toLower();
209 return lowercaseTips;
ScriptLanguage
Scripting languages.
@ QgisExpression
QGIS expressions.
@ QuotedOperator
Quoted operator color.
@ Identifier
Identifier color.
@ DoubleQuote
Double quote color.
@ QuotedIdentifier
Quoted identifier color.
@ CommentLine
Line comment color.
@ Default
Default text color.
@ Background
Background color.
@ SingleQuote
Single quote color.
@ Operator
Operator color.
void initializeLexer() override
Called when the dialect specific code lexer needs to be initialized (or reinitialized).
QgsCodeEditorExpression(QWidget *parent=nullptr)
Constructor for QgsCodeEditorExpression.
void setExpressionContext(const QgsExpressionContext &context)
Variables and functions from this expression context will be added to the API.
void setFields(const QgsFields &fields)
Field names will be added to the API.
Qgis::ScriptLanguage language() const override
Returns the associated scripting language.
A text editor based on QScintilla2.
void runPostLexerConfigurationTasks()
Performs tasks which must be run after a lexer has been set for the widget.
void setTitle(const QString &title)
Set the widget title.
QFont lexerFont() const
Returns the font to use in the lexer.
QColor lexerColor(QgsCodeEditorColorScheme::ColorRole role) const
Returns the color to use in the lexer for the specified role.
static QColor defaultColor(QgsCodeEditorColorScheme::ColorRole role, const QString &theme=QString())
Returns the default color for the specified role.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QStringList functionNames() const
Retrieves a list of function names contained in the context.
QStringList filteredVariableNames() const
Returns a filtered list of variables names set by all scopes in the context.
Represents a single parameter passed to a function.
A abstract base class for defining QgsExpression functions.
QList< QgsExpressionFunction::Parameter > ParameterList
List of parameters, used for function definition.
bool isContextual() const
Returns whether the function is only available if provided by a QgsExpressionContext object.
int params() const
The number of parameters this function takes.
virtual bool isDeprecated() const
Returns true if the function is deprecated and should not be presented as a valid option to users in ...
QString name() const
The name of the function.
const QgsExpressionFunction::ParameterList & parameters() const
Returns the list of named parameters for the function, if set.
static const QList< QgsExpressionFunction * > & Functions()
static int functionCount()
Returns the number of functions defined in the parser.
Encapsulate a field in an attribute table or data source.
Container of fields for a vector layer.