17#include "moc_qgscodeeditorexpression.cpp" 
   28    setTitle( tr( 
"Expression Editor" ) );
 
   30  setAutoCompletionCaseSensitivity( 
false );
 
 
   54  for ( 
const QString &var : variableNames )
 
   56    mVariables << 
'@' + var;
 
   61  mVariables << QStringLiteral( 
"@feature" );
 
   62  mVariables << QStringLiteral( 
"@id" );
 
   63  mVariables << QStringLiteral( 
"@geometry" );
 
   70  for ( 
int i = 0; i < count; i++ )
 
   82    QString signature = func->
name();
 
   83    if ( !signature.startsWith( 
'$' ) )
 
   87      QStringList paramNames;
 
   91        paramNames << param.name();
 
   95      if ( parameters.isEmpty() && func->
params() )
 
   96        signature += QChar( 0x2026 );
 
   98      signature += paramNames.join( 
", " );
 
  102    mFunctions << signature;
 
 
  112  for ( 
const QgsField &field : fields )
 
  114    mFieldNames << field.name();
 
 
  125  mSqlLexer = 
new QgsLexerExpression( 
this );
 
  126  mSqlLexer->setDefaultFont( font );
 
  129  mSqlLexer->setFont( font, -1 );
 
  130  font.setBold( 
true );
 
  131  mSqlLexer->setFont( font, QsciLexerSQL::Keyword );
 
  133  font.setBold( 
false );
 
  134  font.setItalic( 
true );
 
  135  mSqlLexer->setFont( font, QsciLexerSQL::Comment );
 
  136  mSqlLexer->setFont( font, QsciLexerSQL::CommentLine );
 
  138  mSqlLexer->setColor( Qt::darkYellow, QsciLexerSQL::DoubleQuotedString ); 
 
  140  mSqlLexer->setColor( 
defaultColor, QsciLexerSQL::Default );
 
  152  setLexer( mSqlLexer );
 
 
  156void QgsCodeEditorExpression::updateApis()
 
  158  mApis = 
new QgsSciApisExpression( mSqlLexer );
 
  160  for ( 
const QString &var : std::as_const( mVariables ) )
 
  165  for ( 
const QString &function : std::as_const( mContextFunctions ) )
 
  167    mApis->add( function );
 
  170  for ( 
const QString &function : std::as_const( mFunctions ) )
 
  172    mApis->add( function );
 
  175  for ( 
const QString &fieldName : std::as_const( mFieldNames ) )
 
  177    mApis->add( fieldName );
 
  180  mApis->add( QString( 
"NULL" ) );
 
  182  mSqlLexer->setAPIs( mApis );
 
  186QgsLexerExpression::QgsLexerExpression( QObject *parent )
 
  187  : QsciLexerSQL( parent )
 
  189  setBackslashEscapes( 
true );
 
  192const char *QgsLexerExpression::language()
 const 
  194  return "QGIS Expression";
 
  197bool QgsLexerExpression::caseSensitive()
 const 
  202const char *QgsLexerExpression::wordCharacters()
 const 
  204  return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@";
 
  207QgsSciApisExpression::QgsSciApisExpression( QsciLexer *lexer )
 
  212QStringList QgsSciApisExpression::callTips( 
const QStringList &context, 
int commas, QsciScintilla::CallTipsStyle style, QList<int> &shifts )
 
  214  const QStringList originalTips = QsciAPIs::callTips( context, commas, style, shifts );
 
  215  QStringList lowercaseTips;
 
  216  for ( 
const QString &tip : originalTips )
 
  217    lowercaseTips << tip.toLower();
 
  219  return lowercaseTips;
 
@ ToggleComment
Language supports comment toggling.
 
ScriptLanguage
Scripting languages.
 
@ QgisExpression
QGIS expressions.
 
QFlags< ScriptLanguageCapability > ScriptLanguageCapabilities
Script language capabilities.
 
@ 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.
 
Qgis::ScriptLanguageCapabilities languageCapabilities() const override
Returns the associated scripting language capabilities.
 
void setExpressionContext(const QgsExpressionContext &context)
Variables and functions from this expression context will be added to the API.
 
void toggleComment() override
Toggle comment for the selected text.
 
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.
 
void toggleLineComments(const QString &commentPrefix)
Toggles comment for selected lines with the given comment prefix.
 
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.
 
An 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.