mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
* Save more data to QML * Virtual fields * Map tips * Display expression * Read only flag * Streamline expression context generation Whenever an object is able to generate an expression context it implements the method createExpressionContext() declared in QgsExpressionContextGenerator. This makes a cleaner API and allows using QgsFieldExpressionWidget and QgsDataDefinedButton from python because standard OO programming approaches are used instead of callbacks and void pointers. * Colorize output of doc and sip tests * Fix build * Fix sip complaints * Fix rebase problems * Workaround failing bindings test
114 lines
4.0 KiB
Plaintext
114 lines
4.0 KiB
Plaintext
|
|
class QgsFieldExpressionWidget : QWidget
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgsfieldexpressionwidget.h"
|
|
%End
|
|
|
|
public:
|
|
/**
|
|
* @brief QgsFieldExpressionWidget creates a widget with a combo box to display the fields and expression and a button to open the expression dialog
|
|
*/
|
|
explicit QgsFieldExpressionWidget( QWidget *parent /TransferThis/ = 0 );
|
|
|
|
//! define the title used in the expression dialog
|
|
void setExpressionDialogTitle( const QString& title );
|
|
|
|
//! return the title used for the expression dialog
|
|
const QString expressionDialogTitle();
|
|
|
|
//! setFilters allows fitering according to the type of field
|
|
void setFilters( const QgsFieldProxyModel::Filters& filters );
|
|
|
|
void setLeftHandButtonStyle( bool isLeft );
|
|
|
|
//! currently used filter on list of fields
|
|
QgsFieldProxyModel::Filters filters() const;
|
|
|
|
//! set the geometry calculator used in the expression dialog
|
|
void setGeomCalculator( const QgsDistanceArea &da );
|
|
|
|
/**
|
|
* @brief currentField returns the currently selected field or expression if allowed
|
|
* @param isExpression determines if the string returned is the name of a field or an expression
|
|
* @param isValid determines if the expression (or field) returned is valid
|
|
*/
|
|
QString currentField( bool *isExpression = 0, bool *isValid = 0 ) const;
|
|
|
|
/**
|
|
* Return true if the current expression is valid
|
|
*/
|
|
bool isValidExpression( QString *expressionError = 0 ) const;
|
|
|
|
bool isExpression() const;
|
|
/**
|
|
* Return the current text that is set in the expression area
|
|
*/
|
|
QString currentText() const;
|
|
|
|
/** Returns the currently selected field or expression. If a field is currently selected, the returned
|
|
* value will be converted to a valid expression referencing this field (ie enclosing the field name with
|
|
* appropriate quotations).
|
|
* @note added in QGIS 2.14
|
|
*/
|
|
QString asExpression() const;
|
|
|
|
//! Returns the currently used layer
|
|
QgsVectorLayer* layer() const;
|
|
|
|
/**
|
|
* Register an expression context generator class that will be used to retrieve
|
|
* an expression context for the widget.
|
|
* @param generator A QgsExpressionContextGenerator class that will be used to
|
|
* create an expression context when required.
|
|
* @note added in QGIS 3.0
|
|
*/
|
|
void registerExpressionContextGenerator( QgsExpressionContextGenerator* generator );
|
|
|
|
signals:
|
|
//! the signal is emitted when the currently selected field changes
|
|
void fieldChanged( const QString& fieldName );
|
|
|
|
//! fieldChanged signal with indication of the validity of the expression
|
|
void fieldChanged( const QString& fieldName, bool isValid );
|
|
|
|
// void returnPressed();
|
|
|
|
public slots:
|
|
//! set the layer used to display the fields and expression
|
|
void setLayer( QgsVectorLayer* layer );
|
|
|
|
//! convenience slot to connect QgsMapLayerComboBox layer signal
|
|
void setLayer( QgsMapLayer* layer );
|
|
|
|
//! sets the current row in the widget
|
|
void setRow( int row );
|
|
|
|
//! sets the current field or expression in the widget
|
|
void setField( const QString &fieldName );
|
|
|
|
protected slots:
|
|
//! open the expression dialog to edit the current or add a new expression
|
|
void editExpression();
|
|
|
|
//! when expression is edited by the user in the line edit, it will be checked for validity
|
|
void expressionEdited( const QString& expression );
|
|
|
|
//! when expression has been edited (finished) it will be added to the model
|
|
void expressionEditingFinished();
|
|
|
|
void currentFieldChanged();
|
|
|
|
/**
|
|
* @brief updateLineEditStyle will re-style (color/font) the line edit depending on content and status
|
|
* @param expression if expression is given it will be evaluated for the given string, otherwise it takes
|
|
* current expression from the model
|
|
*/
|
|
void updateLineEditStyle( const QString& expression = QString() );
|
|
|
|
bool isExpressionValid( const QString& expressionStr );
|
|
|
|
protected:
|
|
void changeEvent( QEvent* event );
|
|
};
|