[QGIS Commit] r11856 - in trunk/qgis/src: app app/attributetable
core ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Oct 27 12:09:36 EDT 2009
Author: mhugent
Date: 2009-10-27 12:09:34 -0400 (Tue, 27 Oct 2009)
New Revision: 11856
Modified:
trunk/qgis/src/app/attributetable/qgsattributetabledialog.cpp
trunk/qgis/src/app/qgsfieldcalculator.cpp
trunk/qgis/src/app/qgsfieldcalculator.h
trunk/qgis/src/core/qgssearchstringlexer.ll
trunk/qgis/src/core/qgssearchstringparser.yy
trunk/qgis/src/core/qgssearchtreenode.cpp
trunk/qgis/src/core/qgssearchtreenode.h
trunk/qgis/src/ui/qgsfieldcalculatorbase.ui
Log:
[FEATURE]: possibility to use feature length, feature area, string concatenation and type conversions in field calculator
Modified: trunk/qgis/src/app/attributetable/qgsattributetabledialog.cpp
===================================================================
--- trunk/qgis/src/app/attributetable/qgsattributetabledialog.cpp 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/app/attributetable/qgsattributetabledialog.cpp 2009-10-27 16:09:34 UTC (rev 11856)
@@ -558,7 +558,7 @@
void QgsAttributeTableDialog::on_mOpenFieldCalculator_clicked()
{
QgsFieldCalculator calc( mLayer );
- if ( calc.exec() )
+ if ( calc.exec() == QDialog::Accepted )
{
// update model - a field has been added or updated
mModel->reload( mModel->index( 0, 0 ), mModel->index( mModel->rowCount(), mModel->columnCount() ) );
Modified: trunk/qgis/src/app/qgsfieldcalculator.cpp
===================================================================
--- trunk/qgis/src/app/qgsfieldcalculator.cpp 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/app/qgsfieldcalculator.cpp 2009-10-27 16:09:34 UTC (rev 11856)
@@ -43,6 +43,15 @@
mNewFieldGroupBox->setEnabled( false );
mNewFieldGroupBox->setTitle( mNewFieldGroupBox->title() + tr( " (not supported by provider)" ) );
}
+
+ if ( vl->geometryType() != QGis::Polygon )
+ {
+ mAreaButton->setEnabled( false );
+ }
+ if ( vl->geometryType() != QGis::Line )
+ {
+ mLengthButton->setEnabled( false );
+ }
}
QgsFieldCalculator::~QgsFieldCalculator()
@@ -133,7 +142,9 @@
// block layerModified signals (that would trigger table update)
mVectorLayer->blockSignals( true );
- mVectorLayer->select( mVectorLayer->pendingAllAttributesList(), QgsRectangle(), false, false );
+ bool useGeometry = calcString.contains( "$area" ) || calcString.contains( "$length" );
+
+ mVectorLayer->select( mVectorLayer->pendingAllAttributesList(), QgsRectangle(), useGeometry, false );
while ( mVectorLayer->nextFeature( feature ) )
{
if ( onlySelected )
@@ -144,7 +155,15 @@
}
}
- QgsSearchTreeValue value = searchTree->valueAgainst( mVectorLayer->pendingFields(), feature.attributeMap() );
+ QgsSearchTreeValue value;
+ if ( useGeometry )
+ {
+ searchTree->getValue( value, searchTree, mVectorLayer->pendingFields(), feature.attributeMap(), feature.geometry() );
+ }
+ else
+ {
+ searchTree->getValue( value, searchTree, mVectorLayer->pendingFields(), feature.attributeMap() );
+ }
if ( value.isError() )
{
calculationSuccess = false;
@@ -332,6 +351,31 @@
mExpressionTextEdit->insertPlainText( " ) " );
}
+void QgsFieldCalculator::on_mToRealButton_clicked()
+{
+ mExpressionTextEdit->insertPlainText( " to real ( " );
+}
+
+void QgsFieldCalculator::on_mToIntButton_clicked()
+{
+ mExpressionTextEdit->insertPlainText( " to int ( " );
+}
+
+void QgsFieldCalculator::on_mToStringButton_clicked()
+{
+ mExpressionTextEdit->insertPlainText( " to string ( " );
+}
+
+void QgsFieldCalculator::on_mLengthButton_clicked()
+{
+ mExpressionTextEdit->insertPlainText( "$length" );
+}
+
+void QgsFieldCalculator::on_mAreaButton_clicked()
+{
+ mExpressionTextEdit->insertPlainText( "$area" );
+}
+
void QgsFieldCalculator::on_mSamplePushButton_clicked()
{
getFieldValues( 25 );
Modified: trunk/qgis/src/app/qgsfieldcalculator.h
===================================================================
--- trunk/qgis/src/app/qgsfieldcalculator.h 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/app/qgsfieldcalculator.h 2009-10-27 16:09:34 UTC (rev 11856)
@@ -48,6 +48,11 @@
void on_mATanButton_clicked();
void on_mOpenBracketPushButton_clicked();
void on_mCloseBracketPushButton_clicked();
+ void on_mToRealButton_clicked();
+ void on_mToIntButton_clicked();
+ void on_mToStringButton_clicked();
+ void on_mLengthButton_clicked();
+ void on_mAreaButton_clicked();
void on_mSamplePushButton_clicked();
void on_mAllPushButton_clicked();
void on_mOutputFieldNameLineEdit_textChanged( const QString& text );
Modified: trunk/qgis/src/core/qgssearchstringlexer.ll
===================================================================
--- trunk/qgis/src/core/qgssearchstringlexer.ll 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/core/qgssearchstringlexer.ll 2009-10-27 16:09:34 UTC (rev 11856)
@@ -52,6 +52,7 @@
str_char ('')|(\\.)|[^'\\]
string "'"{str_char}*"'"
+
%%
"NOT" { return NOT; }
@@ -75,6 +76,9 @@
"asin" { yylval.op = QgsSearchTreeNode::opASIN; return FUNCTION;}
"acos" { yylval.op = QgsSearchTreeNode::opACOS; return FUNCTION;}
"atan" { yylval.op = QgsSearchTreeNode::opATAN; return FUNCTION;}
+"to int" { yylval.op = QgsSearchTreeNode::opTOINT; return FUNCTION;}
+"to real" { yylval.op = QgsSearchTreeNode::opTOREAL; return FUNCTION;}
+"to string" { yylval.op = QgsSearchTreeNode::opTOSTRING; return FUNCTION;}
[+-/*^] { return yytext[0]; }
@@ -84,6 +88,9 @@
{string} { return STRING; }
+"$area" { return AREA; }
+"$length" { return LENGTH; }
+
{column_ref} { return COLUMN_REF; }
{white} /* skip blanks and tabs */
Modified: trunk/qgis/src/core/qgssearchstringparser.yy
===================================================================
--- trunk/qgis/src/core/qgssearchstringparser.yy 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/core/qgssearchstringparser.yy 2009-10-27 16:09:34 UTC (rev 11856)
@@ -61,6 +61,8 @@
%token <number> NUMBER
%token <op> COMPARISON
%token <op> FUNCTION
+%token AREA
+%token LENGTH
%token STRING
%token COLUMN_REF
@@ -126,10 +128,12 @@
| '(' scalar_exp ')' { $$ = $2; }
| '+' scalar_exp %prec UMINUS { $$ = $2; }
| '-' scalar_exp %prec UMINUS { $$ = $2; if ($$->type() == QgsSearchTreeNode::tNumber) $$->setNumber(- $$->number()); }
+ | AREA { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opAREA, 0, 0); addToTmpNodes($$); }
+ | LENGTH { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opLENGTH, 0, 0); addToTmpNodes($$); }
| NUMBER { $$ = new QgsSearchTreeNode($1); addToTmpNodes($$); }
| STRING { $$ = new QgsSearchTreeNode(QString::fromUtf8(yytext), 0); addToTmpNodes($$); }
| COLUMN_REF { $$ = new QgsSearchTreeNode(QString::fromUtf8(yytext), 1); addToTmpNodes($$); }
- ;
+;
%%
Modified: trunk/qgis/src/core/qgssearchtreenode.cpp
===================================================================
--- trunk/qgis/src/core/qgssearchtreenode.cpp 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/core/qgssearchtreenode.cpp 2009-10-27 16:09:34 UTC (rev 11856)
@@ -19,9 +19,11 @@
#include "qgslogger.h"
#include "qgsfield.h"
+#include "qgsgeometry.h"
#include "qgssearchtreenode.h"
#include <QRegExp>
#include <QObject>
+#include <QSettings>
#include <iostream>
#ifndef Q_OS_MACX
@@ -50,6 +52,15 @@
mOp = op;
mLeft = left;
mRight = right;
+
+ if ( mOp == opLENGTH || mOp == opAREA )
+ {
+ //initialize QgsDistanceArea
+ mCalc.setProjectionsEnabled( false );
+ QSettings settings;
+ QString ellipsoid = settings.value( "/qgis/measure/ellipsoid", "WGS84" ).toString();
+ mCalc.setEllipsoid( ellipsoid );
+ }
}
@@ -138,7 +149,10 @@
str += "(";
if ( mOp != opNOT )
{
- str += mLeft->makeSearchString();
+ if ( mLeft )
+ {
+ str += mLeft->makeSearchString();
+ }
switch ( mOp )
{
case opAND: str += " AND "; break;
@@ -284,9 +298,9 @@
}
}
-bool QgsSearchTreeNode::getValue( QgsSearchTreeValue& value, QgsSearchTreeNode* node, const QgsFieldMap& fields, const QgsAttributeMap& attributes )
+bool QgsSearchTreeNode::getValue( QgsSearchTreeValue& value, QgsSearchTreeNode* node, const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom )
{
- value = node->valueAgainst( fields, attributes );
+ value = node->valueAgainst( fields, attributes, geom );
if ( value.isError() )
{
switch (( int )value.number() )
@@ -316,7 +330,7 @@
return true;
}
-QgsSearchTreeValue QgsSearchTreeNode::valueAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes )
+QgsSearchTreeValue QgsSearchTreeNode::valueAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom )
{
QgsDebugMsgLevel( "valueAgainst: " + makeSearchString(), 2 );
@@ -370,14 +384,55 @@
QgsSearchTreeValue value1, value2;
if ( mLeft )
{
- if ( !getValue( value1, mLeft, fields, attributes ) ) return value1;
+ if ( !getValue( value1, mLeft, fields, attributes, geom ) ) return value1;
}
if ( mRight )
{
- if ( !getValue( value2, mRight, fields, attributes ) ) return value2;
+ if ( !getValue( value2, mRight, fields, attributes, geom ) ) return value2;
}
- // convert to numbers if needed
+ if ( mOp == opLENGTH || mOp == opAREA )
+ {
+ if ( !geom )
+ {
+ return QgsSearchTreeValue( 2, "Geometry is 0" );
+ }
+
+ //check that we don't use area for lines or length for polygons
+ if ( mOp == opLENGTH && geom->type() != QGis::Line )
+ {
+ return QgsSearchTreeValue( 0 );
+ }
+ if ( mOp == opAREA && geom->type() != QGis::Polygon )
+ {
+ return QgsSearchTreeValue( 0 );
+ }
+ return QgsSearchTreeValue( mCalc.measure( geom ) );
+ }
+
+ //string operations with one argument
+ if ( !mRight && !value1.isNumeric() )
+ {
+ if ( mOp == opTOINT )
+ {
+ return QgsSearchTreeValue( value1.string().toInt() );
+ }
+ else if ( mOp == opTOREAL )
+ {
+ return QgsSearchTreeValue( value1.string().toDouble() );
+ }
+ }
+
+ //don't convert to numbers in case of string concatenation
+ if ( mLeft && mRight && !value1.isNumeric() && !value2.isNumeric() )
+ {
+ if ( mOp == opPLUS )
+ {
+ return QgsSearchTreeValue( value1.string() + value2.string() );
+ }
+ }
+
+ // for other operators, convert strings to numbers if needed
double val1, val2;
if ( value1.isNumeric() )
val1 = value1.number();
@@ -423,6 +478,12 @@
return QgsSearchTreeValue( acos( val1 ) );
case opATAN:
return QgsSearchTreeValue( atan( val1 ) );
+ case opTOINT:
+ return QgsSearchTreeValue( int( val1 ) );
+ case opTOREAL:
+ return QgsSearchTreeValue( val1 );
+ case opTOSTRING:
+ return QgsSearchTreeValue( QString::number( val1 ) );
}
}
Modified: trunk/qgis/src/core/qgssearchtreenode.h
===================================================================
--- trunk/qgis/src/core/qgssearchtreenode.h 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/core/qgssearchtreenode.h 2009-10-27 16:09:34 UTC (rev 11856)
@@ -24,6 +24,7 @@
#include <QString>
#include <QVariant>
+#include <qgsdistancearea.h>
#include <qgsfield.h>
#include <qgsfeature.h>
@@ -70,6 +71,11 @@
opASIN,
opACOS,
opATAN,
+ opTOINT,
+ opTOREAL,
+ opTOSTRING,
+ opLENGTH,
+ opAREA,
// comparison
opEQ, // =
@@ -126,14 +132,16 @@
//! returns error message
const QString& errorMsg() { return mError; }
- //! returns scalar value of node
- QgsSearchTreeValue valueAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes );
-
- protected:
//! wrapper around valueAgainst()
bool getValue( QgsSearchTreeValue& value, QgsSearchTreeNode* node,
- const QgsFieldMap& fields, const QgsAttributeMap& attributes );
+ const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom = 0 );
+ protected:
+
+
+ //! returns scalar value of node
+ QgsSearchTreeValue valueAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom = 0 );
+
//! strips mText when node is of string type
void stripText();
@@ -152,6 +160,9 @@
//! children
QgsSearchTreeNode* mLeft;
QgsSearchTreeNode* mRight;
+
+ /**For length() and area() functions*/
+ QgsDistanceArea mCalc;
};
// TODO: poslat do zvlast suboru
Modified: trunk/qgis/src/ui/qgsfieldcalculatorbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsfieldcalculatorbase.ui 2009-10-27 13:04:58 UTC (rev 11855)
+++ trunk/qgis/src/ui/qgsfieldcalculatorbase.ui 2009-10-27 16:09:34 UTC (rev 11856)
@@ -1,127 +1,128 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>QgsFieldCalculatorBase</class>
- <widget class="QDialog" name="QgsFieldCalculatorBase" >
- <property name="geometry" >
+ <widget class="QDialog" name="QgsFieldCalculatorBase">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>615</width>
- <height>628</height>
+ <width>478</width>
+ <height>686</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Field calculator</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QCheckBox" name="mUpdateExistingFieldCheckBox" >
- <property name="text" >
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="mUpdateExistingFieldCheckBox">
+ <property name="text">
<string>Update existing field</string>
</property>
</widget>
</item>
- <item row="0" column="1" colspan="2" >
- <widget class="QComboBox" name="mExistingFieldComboBox" />
+ <item row="0" column="1">
+ <widget class="QComboBox" name="mExistingFieldComboBox"/>
</item>
- <item row="1" column="0" colspan="3" >
- <widget class="QCheckBox" name="mOnlyUpdateSelectedCheckBox" >
- <property name="text" >
+ <item row="1" column="0" colspan="2">
+ <widget class="QCheckBox" name="mOnlyUpdateSelectedCheckBox">
+ <property name="text">
<string>Only update selected features</string>
</property>
</widget>
</item>
- <item row="2" column="0" colspan="3" >
- <widget class="QGroupBox" name="mNewFieldGroupBox" >
- <property name="title" >
+ <item row="2" column="0" colspan="3">
+ <widget class="QGroupBox" name="mNewFieldGroupBox">
+ <property name="title">
<string>New field</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="mFieldNameLabel" >
- <property name="text" >
+ <layout class="QGridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="mFieldNameLabel">
+ <property name="text">
<string>Output field name</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>mOutputFieldNameLineEdit</cstring>
</property>
</widget>
</item>
- <item row="0" column="1" colspan="3" >
- <widget class="QLineEdit" name="mOutputFieldNameLineEdit" />
+ <item row="0" column="1" colspan="3">
+ <widget class="QLineEdit" name="mOutputFieldNameLineEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="mOutputFieldTypeLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="mOutputFieldTypeLabel">
+ <property name="text">
<string>Output field type</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>mOutputFieldTypeComboBox</cstring>
</property>
</widget>
</item>
- <item row="1" column="1" colspan="3" >
- <widget class="QComboBox" name="mOutputFieldTypeComboBox" />
+ <item row="1" column="1" colspan="3">
+ <widget class="QComboBox" name="mOutputFieldTypeComboBox"/>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="mOutputFieldWidthLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="mOutputFieldWidthLabel">
+ <property name="text">
<string>Output field width</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>mOuputFieldWidthSpinBox</cstring>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QSpinBox" name="mOuputFieldWidthSpinBox" />
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="mOuputFieldWidthSpinBox"/>
</item>
- <item row="2" column="2" >
- <widget class="QLabel" name="mOutputFieldPrecisionLabel" >
- <property name="text" >
+ <item row="2" column="2">
+ <widget class="QLabel" name="mOutputFieldPrecisionLabel">
+ <property name="text">
<string>Output field precision</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>mOutputFieldPrecisionSpinBox</cstring>
</property>
</widget>
</item>
- <item row="2" column="3" >
- <widget class="QSpinBox" name="mOutputFieldPrecisionSpinBox" />
+ <item row="2" column="3">
+ <widget class="QSpinBox" name="mOutputFieldPrecisionSpinBox"/>
</item>
</layout>
</widget>
</item>
- <item row="3" column="0" colspan="2" >
- <widget class="QGroupBox" name="mFieldsGroupBox" >
- <property name="title" >
+ <item row="3" column="0" colspan="2">
+ <widget class="QGroupBox" name="mFieldsGroupBox">
+ <property name="title">
<string>Fields</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QListWidget" name="mFieldsListWidget" />
+ <layout class="QGridLayout">
+ <item row="0" column="0">
+ <widget class="QListWidget" name="mFieldsListWidget"/>
</item>
</layout>
</widget>
</item>
- <item row="3" column="2" >
- <widget class="QGroupBox" name="mValuesGroupBox" >
- <property name="title" >
+ <item row="3" column="2">
+ <widget class="QGroupBox" name="mValuesGroupBox">
+ <property name="title">
<string>Values</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" colspan="2" >
- <widget class="QListWidget" name="mValueListWidget" />
+ <layout class="QGridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QListWidget" name="mValueListWidget"/>
</item>
- <item row="1" column="0" >
- <widget class="QPushButton" name="mSamplePushButton" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QPushButton" name="mSamplePushButton">
+ <property name="text">
<string>Sample</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QPushButton" name="mAllPushButton" >
- <property name="text" >
+ <item row="1" column="1">
+ <widget class="QPushButton" name="mAllPushButton">
+ <property name="text">
<string>All</string>
</property>
</widget>
@@ -129,133 +130,168 @@
</layout>
</widget>
</item>
- <item row="4" column="0" colspan="3" >
- <widget class="QGroupBox" name="mOperatorsGroupBox" >
- <property name="title" >
+ <item row="4" column="0" colspan="3">
+ <widget class="QGroupBox" name="mOperatorsGroupBox">
+ <property name="title">
<string>Operators</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QPushButton" name="mPlusPushButton" >
- <property name="text" >
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="mPlusPushButton">
+ <property name="text">
<string>+</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QPushButton" name="mMultiplyPushButton" >
- <property name="text" >
+ <item row="0" column="1">
+ <widget class="QPushButton" name="mMultiplyPushButton">
+ <property name="text">
<string>*</string>
</property>
</widget>
</item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="mSqrtButton" >
- <property name="text" >
+ <item row="0" column="2">
+ <widget class="QPushButton" name="mSqrtButton">
+ <property name="text">
<string>sqrt</string>
</property>
</widget>
</item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="mSinButton" >
- <property name="text" >
+ <item row="0" column="3">
+ <widget class="QPushButton" name="mSinButton">
+ <property name="text">
<string>sin</string>
</property>
</widget>
</item>
- <item row="0" column="4" >
- <widget class="QPushButton" name="mTanButton" >
- <property name="text" >
+ <item row="0" column="4">
+ <widget class="QPushButton" name="mTanButton">
+ <property name="text">
<string>tan</string>
</property>
</widget>
</item>
- <item row="0" column="5" >
- <widget class="QPushButton" name="mACosButton" >
- <property name="text" >
+ <item row="0" column="5">
+ <widget class="QPushButton" name="mACosButton">
+ <property name="text">
<string>acos</string>
</property>
</widget>
</item>
- <item row="0" column="6" >
- <widget class="QPushButton" name="mOpenBracketPushButton" >
- <property name="text" >
+ <item row="0" column="6">
+ <widget class="QPushButton" name="mOpenBracketPushButton">
+ <property name="text">
<string>(</string>
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QPushButton" name="mMinusPushButton" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QPushButton" name="mMinusPushButton">
+ <property name="text">
<string>-</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QPushButton" name="mDividePushButton" >
- <property name="text" >
+ <item row="1" column="1">
+ <widget class="QPushButton" name="mDividePushButton">
+ <property name="text">
<string>/</string>
</property>
</widget>
</item>
- <item row="1" column="2" >
- <widget class="QPushButton" name="mExpButton" >
- <property name="text" >
+ <item row="1" column="2">
+ <widget class="QPushButton" name="mExpButton">
+ <property name="text">
<string>^</string>
</property>
</widget>
</item>
- <item row="1" column="3" >
- <widget class="QPushButton" name="mCosButton" >
- <property name="text" >
+ <item row="1" column="3">
+ <widget class="QPushButton" name="mCosButton">
+ <property name="text">
<string>cos</string>
</property>
</widget>
</item>
- <item row="1" column="4" >
- <widget class="QPushButton" name="mASinButton" >
- <property name="text" >
+ <item row="1" column="4">
+ <widget class="QPushButton" name="mASinButton">
+ <property name="text">
<string>asin</string>
</property>
</widget>
</item>
- <item row="1" column="5" >
- <widget class="QPushButton" name="mATanButton" >
- <property name="text" >
+ <item row="1" column="5">
+ <widget class="QPushButton" name="mATanButton">
+ <property name="text">
<string>atan</string>
</property>
</widget>
</item>
- <item row="1" column="6" >
- <widget class="QPushButton" name="mCloseBracketPushButton" >
- <property name="text" >
+ <item row="1" column="6">
+ <widget class="QPushButton" name="mCloseBracketPushButton">
+ <property name="text">
<string>)</string>
</property>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="mToRealButton">
+ <property name="text">
+ <string>to real</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QPushButton" name="mToIntButton">
+ <property name="text">
+ <string>to int</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QPushButton" name="mToStringButton">
+ <property name="text">
+ <string>to string</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QPushButton" name="mLengthButton">
+ <property name="text">
+ <string>length</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="4">
+ <widget class="QPushButton" name="mAreaButton">
+ <property name="text">
+ <string>area</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
- <item row="5" column="0" colspan="2" >
- <widget class="QLabel" name="mFieldCalculatorExpressionLabel" >
- <property name="text" >
+ <item row="5" column="0">
+ <widget class="QLabel" name="mFieldCalculatorExpressionLabel">
+ <property name="text">
<string>Field calculator expression</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>mExpressionTextEdit</cstring>
</property>
</widget>
</item>
- <item row="6" column="0" colspan="3" >
- <widget class="QTextEdit" name="mExpressionTextEdit" />
+ <item row="6" column="0" colspan="3">
+ <widget class="QTextEdit" name="mExpressionTextEdit"/>
</item>
- <item row="7" column="0" colspan="3" >
- <widget class="QDialogButtonBox" name="mButtonBox" >
- <property name="orientation" >
+ <item row="7" column="0">
+ <widget class="QDialogButtonBox" name="mButtonBox">
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="standardButtons" >
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
@@ -269,11 +305,11 @@
<receiver>QgsFieldCalculatorBase</receiver>
<slot>accept()</slot>
<hints>
- <hint type="sourcelabel" >
+ <hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
- <hint type="destinationlabel" >
+ <hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
@@ -285,11 +321,11 @@
<receiver>QgsFieldCalculatorBase</receiver>
<slot>reject()</slot>
<hints>
- <hint type="sourcelabel" >
+ <hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
- <hint type="destinationlabel" >
+ <hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
More information about the QGIS-commit
mailing list