QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsfieldexpressionwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfieldexpressionwidget.h
3  --------------------------------------
4  Date : 01.04.2014
5  Copyright : (C) 2014 Denis Rouzaud
6  Email : denis.rouzaud@gmail.com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15 
16 #ifndef QGSFIELDEXPRESSIONWIDGET_H
17 #define QGSFIELDEXPRESSIONWIDGET_H
18 
19 #include <QSharedPointer>
20 #include <QWidget>
21 #include <QToolButton>
22 #include <QComboBox>
23 #include <QColor>
24 
25 #include "qgsdistancearea.h"
26 #include "qgsfieldproxymodel.h"
27 
28 class QgsMapLayer;
29 class QgsVectorLayer;
30 
31 
40 class GUI_EXPORT QgsFieldExpressionWidget : public QWidget
41 {
42  Q_OBJECT
43  Q_PROPERTY( QString expressionDialogTitle READ expressionDialogTitle WRITE setExpressionDialogTitle )
44  Q_FLAGS( QgsFieldProxyModel::Filters )
45  Q_PROPERTY( QgsFieldProxyModel::Filters filters READ filters WRITE setFilters )
46 
47  public:
51  explicit QgsFieldExpressionWidget( QWidget *parent = 0 );
52 
54  void setExpressionDialogTitle( QString title );
55 
57  const QString expressionDialogTitle() { return mExpressionDialogTitle; }
58 
60  void setFilters( QgsFieldProxyModel::Filters filters );
61 
62  void setLeftHandButtonStyle( bool isLeft );
63 
65  QgsFieldProxyModel::Filters filters() { return mFieldProxyModel->filters(); }
66 
68  void setGeomCalculator( const QgsDistanceArea &da );
69 
75  QString currentField( bool *isExpression = 0, bool *isValid = 0 );
76 
80  bool isValidExpression( QString *expressionError = 0 );
81 
82  bool isExpression();
86  QString currentText();
87 
89  QgsVectorLayer* layer();
90 
91  signals:
93  void fieldChanged( QString fieldName );
94 
96  void fieldChanged( QString fieldName, bool isValid );
97 
98 // void returnPressed();
99 
100  public slots:
102  void setLayer( QgsVectorLayer* layer );
103 
105  void setLayer( QgsMapLayer* layer );
106 
108  void setField( const QString &fieldName );
109 
110  protected slots:
112  void editExpression();
113 
115  void expressionEdited( const QString expression );
116 
118  void expressionEditingFinished();
119 
120  void currentFieldChanged();
121 
127  void updateLineEditStyle( const QString expression = QString() );
128 
129  bool isExpressionValid( const QString expressionStr );
130 
131  protected:
132  void changeEvent( QEvent* event );
133 
134  private:
135  QComboBox* mCombo;
136  QToolButton* mButton;
139  QSharedPointer<const QgsDistanceArea> mDa;
140 };
141 
142 #endif // QGSFIELDEXPRESSIONWIDGET_H