QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgsexpressionlineedit.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsexpressionlineedit.h
3  ----------------------
4  Date : 18.08.2016
5  Copyright : (C) 2016 Nyall Dawson
6  Email : nyall dot dawson at gmail dot 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 QGSEXPRESSIONLINEEDIT_H
17 #define QGSEXPRESSIONLINEEDIT_H
18 
19 #include <QWidget>
20 #include "qgis.h"
21 #include "qgsexpressioncontext.h"
22 #include "qgsdistancearea.h"
23 #include "qgis_gui.h"
24 #include <memory>
25 
26 class QgsFilterLineEdit;
27 class QToolButton;
28 class QgsDistanceArea;
31 
49 class GUI_EXPORT QgsExpressionLineEdit : public QWidget
50 {
51  Q_OBJECT
52 
53  public:
54 
59  explicit QgsExpressionLineEdit( QWidget *parent SIP_TRANSFERTHIS = nullptr );
60 
66  void setExpressionDialogTitle( const QString &title );
67 
72  QString expressionDialogTitle() const { return mExpressionDialogTitle; }
73 
79  void setMultiLine( bool multiLine );
80 
88  QString expectedOutputFormat() const;
89 
96  void setExpectedOutputFormat( const QString &expected );
97 
102  void setGeomCalculator( const QgsDistanceArea &distanceArea );
103 
112  void setLayer( QgsVectorLayer *layer );
113 
118  QString expression() const;
119 
124  bool isValidExpression( QString *expressionError SIP_OUT = nullptr ) const;
125 
132  void registerExpressionContextGenerator( const QgsExpressionContextGenerator *generator );
133 
134  signals:
135 
140  void expressionChanged( const QString &expression );
141 
142  public slots:
143 
149  void setExpression( const QString &expression );
150 
151  protected:
152 
153  void changeEvent( QEvent *event ) override;
154 
155  private slots:
156 
158  void expressionEdited( const QString &expression );
159  void expressionEdited();
160 
162  void editExpression();
163 
169  void updateLineEditStyle( const QString &expression = QString() );
170 
171  private:
172  QgsFilterLineEdit *mLineEdit = nullptr;
173  QgsCodeEditorExpression *mCodeEditor = nullptr;
174  QToolButton *mButton = nullptr;
175  QString mExpressionDialogTitle;
176  std::unique_ptr<QgsDistanceArea> mDa;
177  QgsExpressionContext mExpressionContext;
178  const QgsExpressionContextGenerator *mExpressionContextGenerator = nullptr;
179  QgsVectorLayer *mLayer = nullptr;
180  QString mExpectedOutputFormat;
181 
182  bool isExpressionValid( const QString &expressionStr );
183 
184  friend class TestQgsFieldExpressionWidget;
185 };
186 
187 #endif // QGSEXPRESSIONLINEEDIT_H
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
A QGIS expression editor based on QScintilla2.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QLineEdit subclass with built in support for clearing the widget&#39;s value and handling custom null val...
Abstract interface for generating an expression context.
QString expressionDialogTitle() const
Returns the title used for the expression dialog.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations...
The QgsExpressionLineEdit widget includes a line edit for entering expressions together with a button...
#define SIP_OUT
Definition: qgis_sip.h:51
Represents a vector layer which manages a vector based data sets.