mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-30 00:07:09 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			313 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			313 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /************************************************************************
 | |
|  * This file has been generated automatically from                      *
 | |
|  *                                                                      *
 | |
|  * src/gui/qgsfieldexpressionwidget.h                                   *
 | |
|  *                                                                      *
 | |
|  * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | |
|  ************************************************************************/
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| class QgsFieldExpressionWidget : QWidget
 | |
| {
 | |
| %Docstring(signature="appended")
 | |
| A widget for selection of layer fields or expression creation.
 | |
| 
 | |
| It contains a combo box to display the fields and expression and a button to open the expression dialog.
 | |
| The combo box is editable, allowing expressions to be edited inline.
 | |
| 
 | |
| The validity of the expression is checked live on key press, invalid expressions are displayed in red.
 | |
| The expression will be added to the model (and the fieldChanged signals emitted)
 | |
| only when editing in the line edit is finished (focus lost, enter key pressed).
 | |
| %End
 | |
| 
 | |
| %TypeHeaderCode
 | |
| #include "qgsfieldexpressionwidget.h"
 | |
| %End
 | |
|   public:
 | |
|     explicit QgsFieldExpressionWidget( QWidget *parent /TransferThis/ = 0 );
 | |
| %Docstring
 | |
| QgsFieldExpressionWidget creates a widget with a combo box to display the fields and expression and a button to open the expression dialog
 | |
| %End
 | |
| 
 | |
|     void setExpressionDialogTitle( const QString &title );
 | |
| %Docstring
 | |
| define the title used in the expression dialog
 | |
| %End
 | |
| 
 | |
|     void appendScope( QgsExpressionContextScope *scope /Transfer/ );
 | |
| %Docstring
 | |
| Appends a scope to the current expression context.
 | |
| 
 | |
| :param scope: The scope to add.
 | |
| 
 | |
| .. versionadded:: 3.2
 | |
| %End
 | |
| 
 | |
|     const QString expressionDialogTitle();
 | |
| %Docstring
 | |
| Returns the title used for the expression dialog
 | |
| %End
 | |
| 
 | |
|     void setFilters( QgsFieldProxyModel::Filters filters );
 | |
| %Docstring
 | |
| setFilters allows filtering according to the type of field
 | |
| %End
 | |
| 
 | |
|     void setAllowEmptyFieldName( bool allowEmpty );
 | |
| %Docstring
 | |
| Sets whether an optional empty field ("not set") option is shown in the combo box.
 | |
| 
 | |
| .. seealso:: :py:func:`allowEmptyFieldName`
 | |
| 
 | |
| .. versionadded:: 3.4.6
 | |
| %End
 | |
| 
 | |
|     bool allowEmptyFieldName() const;
 | |
| %Docstring
 | |
| Returns ``True`` if the combo box allows the empty field ("not set") choice.
 | |
| 
 | |
| .. seealso:: :py:func:`setAllowEmptyFieldName`
 | |
| 
 | |
| .. versionadded:: 3.4.6
 | |
| %End
 | |
| 
 | |
|     void setLeftHandButtonStyle( bool isLeft );
 | |
| 
 | |
|     QgsFieldProxyModel::Filters filters() const;
 | |
| %Docstring
 | |
| currently used filter on list of fields
 | |
| %End
 | |
| 
 | |
|     void setGeomCalculator( const QgsDistanceArea &da );
 | |
| %Docstring
 | |
| Sets the geometry calculator used in the expression dialog
 | |
| %End
 | |
| 
 | |
|     QString currentField( bool *isExpression = 0, bool *isValid = 0 ) const;
 | |
| %Docstring
 | |
| 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
 | |
| %End
 | |
| 
 | |
|     bool isValidExpression( QString *expressionError = 0 ) const;
 | |
| %Docstring
 | |
| Returns ``True`` if the current expression is valid
 | |
| %End
 | |
| 
 | |
|     bool isExpression() const;
 | |
| %Docstring
 | |
| If the content is not just a simple field this method will return ``True``.
 | |
| %End
 | |
| 
 | |
|     QString currentText() const;
 | |
| %Docstring
 | |
| Returns the current text that is set in the expression area
 | |
| %End
 | |
| 
 | |
|     QString asExpression() const;
 | |
| %Docstring
 | |
| 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).
 | |
| %End
 | |
| 
 | |
|     QString expression() const;
 | |
| %Docstring
 | |
| 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).
 | |
| 
 | |
| Alias for :py:func:`~QgsFieldExpressionWidget.asExpression`
 | |
| %End
 | |
| 
 | |
|     QgsVectorLayer *layer() const;
 | |
| %Docstring
 | |
| Returns the layer currently associated with the widget.
 | |
| 
 | |
| .. seealso:: :py:func:`setLayer`
 | |
| %End
 | |
| 
 | |
|     void registerExpressionContextGenerator( const QgsExpressionContextGenerator *generator );
 | |
| %Docstring
 | |
| Register an expression context generator class that will be used to retrieve
 | |
| an expression context for the widget.
 | |
| 
 | |
| :param generator: A :py:class:`QgsExpressionContextGenerator` class that will be used to
 | |
|                   create an expression context when required.
 | |
| %End
 | |
| 
 | |
| 
 | |
|     void setCustomPreviewGenerator( const QString &label, const QList<QPair<QString, QVariant>> &choices, SIP_PYCALLABLE );
 | |
| %Docstring
 | |
| Sets the widget to run using a custom preview generator.
 | |
| 
 | |
| In this mode, the widget will call a callback function to generate a new :py:class:`QgsExpressionContext`
 | |
| as the previewed object changes. This can be used to provide custom preview values for different
 | |
| objects (i.e. for objects which aren't vector layer features).
 | |
| 
 | |
| :param label: The label to display for the combo box presenting choices of objects. This should be a representative name, eg "Band" if the widget is showing choices of raster layer bands
 | |
| :param choices: A list of choices to present to the user. Each choice is a pair of a human-readable label and a QVariant representing the object to preview.
 | |
| :param previewContextGenerator: A function which takes a QVariant representing the object to preview, and returns a :py:class:`QgsExpressionContext` to use for previewing the object.
 | |
| 
 | |
| .. versionadded:: 3.38
 | |
| %End
 | |
| %MethodCode
 | |
|     Py_XINCREF( a2 );
 | |
|     Py_BEGIN_ALLOW_THREADS
 | |
|       sipCpp->setCustomPreviewGenerator( *a0, *a1, [a2]( const QVariant &value ) -> QgsExpressionContext {
 | |
|         QgsExpressionContext res;
 | |
|         SIP_BLOCK_THREADS
 | |
|         PyObject *s = sipCallMethod( NULL, a2, "D", &value, sipType_QVariant, NULL );
 | |
|         int state;
 | |
|         int sipIsError = 0;
 | |
|         QgsExpressionContext *t1 = reinterpret_cast<QgsExpressionContext *>( sipConvertToType( s, sipType_QgsExpressionContext, 0, SIP_NOT_NONE, &state, &sipIsError ) );
 | |
|         if ( sipIsError == 0 )
 | |
|         {
 | |
|           res = QgsExpressionContext( *t1 );
 | |
|         }
 | |
|         sipReleaseType( t1, sipType_QgsExpressionContext, state );
 | |
|         SIP_UNBLOCK_THREADS
 | |
|         return res;
 | |
|       } );
 | |
| 
 | |
|     Py_END_ALLOW_THREADS
 | |
| %End
 | |
| 
 | |
|     bool allowEvalErrors() const;
 | |
| %Docstring
 | |
| Allow accepting expressions with evaluation errors. This can be useful when we are not able to
 | |
| provide an expression context of which we are sure it's completely populated.
 | |
| %End
 | |
| 
 | |
|     void setAllowEvalErrors( bool allowEvalErrors );
 | |
| %Docstring
 | |
| Allow accepting expressions with evaluation errors. This can be useful when we are not able to
 | |
| provide an expression context of which we are sure it's completely populated.
 | |
| %End
 | |
| 
 | |
|     bool buttonVisible() const;
 | |
| %Docstring
 | |
| Returns the visibility of the button
 | |
| 
 | |
| If button is hidden, the widget essentially becomes an editable combo box
 | |
| 
 | |
| .. versionadded:: 3.36
 | |
| %End
 | |
| 
 | |
|     void setButtonVisible( bool visible );
 | |
| %Docstring
 | |
| Set the visibility of the button
 | |
| 
 | |
| If button is hidden, the widget essentially becomes an editable combo box
 | |
| 
 | |
| .. versionadded:: 3.36
 | |
| %End
 | |
| 
 | |
|   signals:
 | |
|     void fieldChanged( const QString &fieldName );
 | |
| %Docstring
 | |
| Emitted when the currently selected field changes.
 | |
| %End
 | |
| 
 | |
|     void fieldChanged( const QString &fieldName, bool isValid );
 | |
| %Docstring
 | |
| fieldChanged signal with indication of the validity of the expression
 | |
| %End
 | |
| 
 | |
|     void allowEvalErrorsChanged();
 | |
| %Docstring
 | |
| Allow accepting expressions with evaluation errors. This can be useful when we are not able to
 | |
| provide an expression context of which we are sure it's completely populated.
 | |
| %End
 | |
| 
 | |
|     void buttonVisibleChanged();
 | |
| %Docstring
 | |
| Emitted when the button visibility changes
 | |
| 
 | |
| .. versionadded:: 3.36
 | |
| %End
 | |
| 
 | |
|   public slots:
 | |
| 
 | |
|     void setLayer( QgsMapLayer *layer );
 | |
| %Docstring
 | |
| Sets the layer used to display the fields and expression.
 | |
| 
 | |
| .. seealso:: :py:func:`layer`
 | |
| %End
 | |
| 
 | |
|     void setRow( int row );
 | |
| %Docstring
 | |
| sets the current row in the widget
 | |
| %End
 | |
| 
 | |
|     void setField( const QString &fieldName );
 | |
| %Docstring
 | |
| sets the current field or expression in the widget
 | |
| %End
 | |
| 
 | |
|     void setFields( const QgsFields &fields );
 | |
| %Docstring
 | |
| Sets the fields used in the widget to ``fields``, this allows the widget to work without a layer.
 | |
| 
 | |
| .. versionadded:: 3.14
 | |
| %End
 | |
| 
 | |
|     void setExpression( const QString &expression );
 | |
| %Docstring
 | |
| Sets the current expression text and if applicable also the field.
 | |
| Alias for setField.
 | |
| %End
 | |
| 
 | |
|   protected slots:
 | |
|     void editExpression();
 | |
| %Docstring
 | |
| open the expression dialog to edit the current or add a new expression
 | |
| %End
 | |
| 
 | |
|     void expressionEdited( const QString &expression );
 | |
| %Docstring
 | |
| when expression is edited by the user in the line edit, it will be checked for validity
 | |
| %End
 | |
| 
 | |
|     void expressionEditingFinished();
 | |
| %Docstring
 | |
| when expression has been edited (finished) it will be added to the model
 | |
| %End
 | |
| 
 | |
|     void currentFieldChanged();
 | |
| 
 | |
|     void updateLineEditStyle( const QString &expression = QString() );
 | |
| %Docstring
 | |
| 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
 | |
| %End
 | |
| 
 | |
|     bool isExpressionValid( const QString &expressionStr );
 | |
| 
 | |
|   protected:
 | |
|     virtual void changeEvent( QEvent *event );
 | |
| 
 | |
| 
 | |
|     virtual bool eventFilter( QObject *watched, QEvent *event );
 | |
| 
 | |
| 
 | |
| };
 | |
| 
 | |
| /************************************************************************
 | |
|  * This file has been generated automatically from                      *
 | |
|  *                                                                      *
 | |
|  * src/gui/qgsfieldexpressionwidget.h                                   *
 | |
|  *                                                                      *
 | |
|  * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | |
|  ************************************************************************/
 |