diff --git a/resources/function_help/CASE ELSE-en_US b/resources/function_help/CASE ELSE-en_US new file mode 100644 index 00000000000..767381a86d1 --- /dev/null +++ b/resources/function_help/CASE ELSE-en_US @@ -0,0 +1,32 @@ +

CASE statement

+A conditional statement that can be used to evaluate exissions and +return a result. + +

Syntax

+
+     CASE
+        WHEN expression THEN result
+        [ ...n ]
+        ELSE result
+     END
+
+[ ] marks optional statements + + +

Arguments

+ + WHEN expression - The expression to evaluate.
+ THEN result - If expression evaluates True then result is returned.
+ ELSE result - If expression evaluates False then result is returned.
+ + + +

Example

+ +
+    CASE
+        WHEN "column" IS NULL THEN 'None'
+        ELSE "column"
+    END
+
+ diff --git a/resources/function_help/CASE-en_US b/resources/function_help/CASE-en_US new file mode 100644 index 00000000000..1f366447fc8 --- /dev/null +++ b/resources/function_help/CASE-en_US @@ -0,0 +1,31 @@ +

CASE statement

+A conditional statement that can be used to evaluate exissions and +return a result. + +

Syntax

+
+     CASE
+        WHEN expression THEN result
+        [ ...n ]
+        [ ELSE result ]
+     END
+
+[ ] marks optional statements + + +

Arguments

+ + WHEN expression - The expression to evaluate.
+ THEN result - If expression evaluates True then result is returned.
+ ELSE result - If expression evaluates False then result is returned.
+ + + +

Example

+ +
+    CASE
+        WHEN "column" IS NULL THEN 'None'
+    END
+
+ diff --git a/src/gui/qgsexpressionbuilderwidget.cpp b/src/gui/qgsexpressionbuilderwidget.cpp index 5d4eb88a2f0..8901145ce7e 100644 --- a/src/gui/qgsexpressionbuilderwidget.cpp +++ b/src/gui/qgsexpressionbuilderwidget.cpp @@ -79,6 +79,10 @@ QgsExpressionBuilderWidget::QgsExpressionBuilderWidget( QWidget *parent ) registerItem( tr( "Operators" ), "AND", " AND " ); registerItem( tr( "Operators" ), "NOT", " NOT " ); + QString casestring = "CASE WHEN condition THEN result END"; + QString caseelsestring = "CASE WHEN condition THEN result ELSE result END"; + registerItem( tr( "Conditionals" ), "CASE", casestring ); + registerItem( tr( "Conditionals" ), "CASE ELSE", caseelsestring ); // Load the functions from the QgsExpression class int count = QgsExpression::functionCount(); @@ -380,9 +384,9 @@ void QgsExpressionBuilderWidget::setExpressionState( bool state ) mExpressionValid = state; } -QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* functionName ) +QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* expressionItem ) { - if ( functionName == NULL ) + if ( expressionItem == NULL ) return ""; // set up the path to the help file @@ -410,9 +414,9 @@ QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* functio lang = "en_US"; } - QString name = functionName->text(); + QString name = expressionItem->text(); - if ( functionName->getItemType() == QgsExpressionItem::Field ) + if ( expressionItem->getItemType() == QgsExpressionItem::Field ) name = "Field"; QString fullHelpPath = helpFilesPath + name + "-" + lang; @@ -434,7 +438,7 @@ QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* functio missingError += tr( "It was neither available in your language (%1) nor English." ).arg( lang ); // try en_US next - fullHelpPath = helpFilesPath + functionName->text() + "-en_US"; + fullHelpPath = helpFilesPath + name + "-en_US"; file.setFileName( fullHelpPath ); } } @@ -449,11 +453,7 @@ QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* functio { QTextStream in( &file ); in.setCodec( "UTF-8" ); // Help files must be in Utf-8 - while ( !in.atEnd() ) - { - QString line = in.readLine(); - helpContents += line; - } + helpContents = in.readAll(); } file.close();