From 74545848cb5d46518d58f79dc806d7c1ad7130be Mon Sep 17 00:00:00 2001 From: NathanW Date: Wed, 13 Jul 2011 23:26:50 +1000 Subject: [PATCH] Added support to show help about selected function --- src/gui/qgsexpressionbuilder.cpp | 21 ++++-- src/gui/qgsexpressionbuilder.h | 15 ++++- src/ui/qgsexpressionbuilder.ui | 106 +++++++++++++++++++++++++++++-- 3 files changed, 127 insertions(+), 15 deletions(-) diff --git a/src/gui/qgsexpressionbuilder.cpp b/src/gui/qgsexpressionbuilder.cpp index cd3c9d104440..f7514e89c73d 100644 --- a/src/gui/qgsexpressionbuilder.cpp +++ b/src/gui/qgsexpressionbuilder.cpp @@ -32,14 +32,17 @@ QgsExpressionBuilderWidget::QgsExpressionBuilderWidget(QgsVectorLayer *layer) this->registerItem("Operators","-"," -"); this->registerItem("Operators","*"," * "); this->registerItem("Operators","/"," / "); + this->registerItem("Operators","^"," ^ "); + this->registerItem("Operators","="," = "); + this->registerItem("Operators","||"," || ","|| (String Concatenation)
Concats two values together into a string
Usage:
'Dia' || Diameter"); - this->registerItem("Geometry","Area"," $area "); - this->registerItem("Geometry","Length"," $length "); + this->registerItem("Geometry","Area"," $area ","$area
Returns the area the object.
Only applies to polygons."); + this->registerItem("Geometry","Length"," $length ","$length
Returns the length the object.
Only applies to polylines."); this->registerItem("Geometry","Perimeter"," $perimeter "); this->registerItem("Geometry","X"," $x "); this->registerItem("Geometry","Y"," $y "); - this->registerItem("Geometry","XAt"," xat() "); - this->registerItem("Geometry","YAt"," yat() "); + this->registerItem("Geometry","XAt"," xat( "); + this->registerItem("Geometry","YAt"," yat( "); } QgsExpressionBuilderWidget::~QgsExpressionBuilderWidget() @@ -72,8 +75,9 @@ void QgsExpressionBuilderWidget::on_expressionTree_clicked(const QModelIndex &in } else { - // We might be able to show help for the current selected item here. + // Show the help for the current item. mValueListWidget->clear(); + txtHelpText->setText(item->getHelpText()); } } @@ -124,7 +128,12 @@ void QgsExpressionBuilderWidget::fillFieldValues(int fieldIndex, int countLimit) void QgsExpressionBuilderWidget::registerItem(QString group, QString label, QString expressionText) { - QgsExpressionItem* item = new QgsExpressionItem(label,expressionText); + this->registerItem(group,label,expressionText,""); +} + +void QgsExpressionBuilderWidget::registerItem(QString group, QString label, QString expressionText, QString helpText) +{ + QgsExpressionItem* item = new QgsExpressionItem(label,expressionText, helpText); // Look up the group and insert the new function. if (mExpressionGroups.contains(group)) { diff --git a/src/gui/qgsexpressionbuilder.h b/src/gui/qgsexpressionbuilder.h index f9c73cc1ce7a..b4127af81188 100644 --- a/src/gui/qgsexpressionbuilder.h +++ b/src/gui/qgsexpressionbuilder.h @@ -37,18 +37,26 @@ class QgsExpressionItem : public QStandardItem { public: - QgsExpressionItem(QString label, QString expressionText) + QgsExpressionItem(QString label, QString expressionText, QString helpText) : QStandardItem(label) { mExpressionText = expressionText; + mHelpText = helpText; } - QString getExpressionText() + QgsExpressionItem(QString label, QString expressionText) + : QStandardItem(label) { - return mExpressionText; + mExpressionText = expressionText; } + + QString getExpressionText() { return mExpressionText; } + + QString getHelpText() { return mHelpText; } + private: QString mExpressionText; + QString mHelpText; }; class QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExpressionBuilder { @@ -62,6 +70,7 @@ class QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExpressionBuil QString getExpressionString(); void setExpressionString(const QString expressionString); void registerItem(QString group, QString label, QString expressionText); + void registerItem(QString group, QString label, QString expressionText, QString helpText); public slots: void on_mAllPushButton_clicked(); diff --git a/src/ui/qgsexpressionbuilder.ui b/src/ui/qgsexpressionbuilder.ui index f875dfea7ea4..9f7917953211 100644 --- a/src/ui/qgsexpressionbuilder.ui +++ b/src/ui/qgsexpressionbuilder.ui @@ -6,8 +6,8 @@ 0 0 - 482 - 452 + 538 + 615 @@ -23,7 +23,16 @@ Operation List - + + 2 + + + 4 + + + 2 + + 2 @@ -55,7 +64,83 @@ - + + + 0 + + + 0 + + + 0 + + + + + + + + Function Help + + + Qt::AutoText + + + + + + + + 0 + 0 + + + + + 16777215 + 300 + + + + QFrame::NoFrame + + + true + + + + + 0 + 0 + 261 + 82 + + + + + + + + 0 + 0 + + + + fsbn + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + + @@ -108,7 +193,16 @@ 2 - + + 0 + + + 4 + + + 0 + + 0 @@ -222,7 +316,7 @@ 0 - 2 + 4 0