Skip to content

Commit

Permalink
pass tags to registerItem so we can find e.g. '/' and '%' by writing …
Browse files Browse the repository at this point in the history
…"division" fixes #52157
  • Loading branch information
signedav authored and github-actions[bot] committed Mar 20, 2023
1 parent 4f41d10 commit 4806bfb
Showing 1 changed file with 30 additions and 27 deletions.
57 changes: 30 additions & 27 deletions src/gui/qgsexpressiontreeview.cpp
Expand Up @@ -258,35 +258,38 @@ void QgsExpressionTreeView::updateFunctionTree()
mModel->clear();
mExpressionGroups.clear();

// TODO Can we move this stuff to QgsExpression, like the functions?
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "+" ), QStringLiteral( " + " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "-" ), QStringLiteral( " - " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "*" ), QStringLiteral( " * " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "/" ), QStringLiteral( " / " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "%" ), QStringLiteral( " % " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "^" ), QStringLiteral( " ^ " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "=" ), QStringLiteral( " = " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "~" ), QStringLiteral( " ~ " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( ">" ), QStringLiteral( " > " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "<" ), QStringLiteral( " < " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "<>" ), QStringLiteral( " <> " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "<=" ), QStringLiteral( " <= " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( ">=" ), QStringLiteral( " >= " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "[]" ), QStringLiteral( "[ ]" ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "||" ), QStringLiteral( " || " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "BETWEEN" ), QStringLiteral( " BETWEEN " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "NOT BETWEEN" ), QStringLiteral( " NOT BETWEEN " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "IN" ), QStringLiteral( " IN " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "LIKE" ), QStringLiteral( " LIKE " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "ILIKE" ), QStringLiteral( " ILIKE " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "IS" ), QStringLiteral( " IS " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "IS NOT" ), QStringLiteral( " IS NOT " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "OR" ), QStringLiteral( " OR " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "AND" ), QStringLiteral( " AND " ) );
registerItem( QStringLiteral( "Operators" ), QStringLiteral( "NOT" ), QStringLiteral( " NOT " ) );
static const QStringList operators = QStringList() << QStringLiteral( "+" )
<< QStringLiteral( "-" )
<< QStringLiteral( "*" )
<< QStringLiteral( "/" )
<< QStringLiteral( "%" )
<< QStringLiteral( "^" )
<< QStringLiteral( "=" )
<< QStringLiteral( "~" )
<< QStringLiteral( ">" )
<< QStringLiteral( "<" )
<< QStringLiteral( "<>" )
<< QStringLiteral( "<=" )
<< QStringLiteral( ">=" )
<< QStringLiteral( "[]" )
<< QStringLiteral( "||" )
<< QStringLiteral( "BETWEEN" )
<< QStringLiteral( "NOT BETWEEN" )
<< QStringLiteral( "IN" )
<< QStringLiteral( "LIKE" )
<< QStringLiteral( "ILIKE" )
<< QStringLiteral( "IS" )
<< QStringLiteral( "IS NOT" )
<< QStringLiteral( "OR" )
<< QStringLiteral( "AND" )
<< QStringLiteral( "NOT" );
for ( const auto &name : operators )
{
registerItem( QStringLiteral( "Operators" ), name, ' ' + name + ' ', QString(), QgsExpressionItem::ExpressionNode, false, -1, QIcon(), QgsExpression::tags( name ) );
}

QString casestring = QStringLiteral( "CASE WHEN condition THEN result END" );
registerItem( QStringLiteral( "Conditionals" ), QStringLiteral( "CASE" ), casestring );
registerItem( QStringLiteral( "Conditionals" ), QStringLiteral( "CASE" ), casestring, QString(), QgsExpressionItem::ExpressionNode, false, -1, QIcon(), QgsExpression::tags( "CASE" ) );

// use -1 as sort order here -- NULL should always show before the field list
registerItem( QStringLiteral( "Fields and Values" ), QStringLiteral( "NULL" ), QStringLiteral( "NULL" ), QString(), QgsExpressionItem::ExpressionNode, false, -1 );
Expand Down

0 comments on commit 4806bfb

Please sign in to comment.