QGIS API Documentation  3.20.0-Odense (decaadbb31)
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_sip.h"
21 #include "qgsexpressioncontext.h"
22 #include "qgis_gui.h"
23 #include <memory>
24 
25 class QgsFilterLineEdit;
26 class QToolButton;
27 class QgsDistanceArea;
30 
48 class GUI_EXPORT QgsExpressionLineEdit : public QWidget
49 {
50  Q_OBJECT
51 
52  public:
53 
58  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 
125  bool isValidExpression( QString *expressionError SIP_OUT = nullptr ) const;
126 
133  void registerExpressionContextGenerator( const QgsExpressionContextGenerator *generator );
134 
135  signals:
136 
141  void expressionChanged( const QString &expression );
142 
143  public slots:
144 
150  void setExpression( const QString &expression );
151 
152  protected:
153 
154  void changeEvent( QEvent *event ) override;
155 
156  private slots:
157 
159  void expressionEdited( const QString &expression );
160  void expressionEdited();
161 
163  void editExpression();
164 
170  void updateLineEditStyle( const QString &expression = QString() );
171 
172  private:
173  QgsFilterLineEdit *mLineEdit = nullptr;
174  QgsCodeEditorExpression *mCodeEditor = nullptr;
175  QToolButton *mButton = nullptr;
176  QString mExpressionDialogTitle;
177  std::unique_ptr<QgsDistanceArea> mDa;
178  QgsExpressionContext mExpressionContext;
179  const QgsExpressionContextGenerator *mExpressionContextGenerator = nullptr;
180  QgsVectorLayer *mLayer = nullptr;
181  QString mExpectedOutputFormat;
182 
183  bool isExpressionValid( const QString &expressionStr );
184 
185  friend class TestQgsFieldExpressionWidget;
186 };
187 
188 #endif // QGSEXPRESSIONLINEEDIT_H
A QGIS expression editor based on QScintilla2.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
Abstract interface for generating an expression context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
The QgsExpressionLineEdit widget includes a line edit for entering expressions together with a button...
QString expressionDialogTitle() const
Returns the title used for the expression dialog.
~QgsExpressionLineEdit() override
void expressionChanged(const QString &expression)
Emitted when the expression is changed.
QLineEdit subclass with built in support for clearing the widget's value and handling custom null val...
Represents a vector layer which manages a vector based data sets.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_OUT
Definition: qgis_sip.h:58