Skip to content

Commit

Permalink
Expose QgsFieldCalculator to public API (#46748)
Browse files Browse the repository at this point in the history
* shows QgsFieldCalculator in public API

* removed unnecessary comment

* QgsFieldCalculator:
made public slots private and added code documentation

* fixed doc string

* Apply suggestions from code review

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>

* updated sip file

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
  • Loading branch information
jakimowb and nyalldawson committed Jan 8, 2022
1 parent e98ab3f commit d7bf988
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 4 deletions.
54 changes: 54 additions & 0 deletions python/gui/auto_generated/vector/qgsfieldcalculator.sip.in
@@ -0,0 +1,54 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/vector/qgsfieldcalculator.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/




class QgsFieldCalculator: QDialog
{
%Docstring(signature="appended")

A dialog class that provides calculation of new fields using existing fields, values and a set of operators

Sample usage of the :py:class:`QgsFieldCalculator` class:

.. code-block:: python

uri = "point?crs=epsg:4326&field=id:integer"
layer = QgsVectorLayer(uri, "Scratch point layer", "memory")
layer.startEditing()
dialog = QgsFieldCalculator(layer)
dialog.exec_()
%End

%TypeHeaderCode
#include "qgsfieldcalculator.h"
%End
public:
QgsFieldCalculator( QgsVectorLayer *vl, QWidget *parent = 0 );

int changedAttributeId() const;
%Docstring
Returns the field index of the field for which new attribute values were calculated.

:return: The field index if attribute values were calculated or -1, e.g. in case of geometry changes.
%End

public slots:
virtual void accept();


};

/************************************************************************
* This file has been generated automatically from *
* *
* src/gui/vector/qgsfieldcalculator.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
1 change: 1 addition & 0 deletions python/gui/gui_auto.sip
Expand Up @@ -398,6 +398,7 @@
%Include auto_generated/raster/qgssinglebandpseudocolorrendererwidget.sip
%Include auto_generated/raster/qgsrasterlayerproperties.sip
%Include auto_generated/raster/qgsrasterlayertemporalpropertieswidget.sip
%Include auto_generated/vector/qgsfieldcalculator.sip
%Include auto_generated/vector/qgsvectorlayerproperties.sip
%Include auto_generated/symbology/characterwidget.sip
%Include auto_generated/symbology/qgs25drendererwidget.sip
Expand Down
20 changes: 16 additions & 4 deletions src/gui/vector/qgsfieldcalculator.h
Expand Up @@ -16,9 +16,6 @@
#ifndef QGSFIELDCALCULATOR_H
#define QGSFIELDCALCULATOR_H

// We don't want to expose this in the public API
#define SIP_NO_FILE

#include "ui_qgsfieldcalculatorbase.h"
#include "qgshelp.h"
#include "qgsfields.h"
Expand All @@ -31,25 +28,40 @@ class QgsVectorLayer;
* \class QgsFieldCalculator
*
* \brief A dialog class that provides calculation of new fields using existing fields, values and a set of operators
*
* Sample usage of the QgsFieldCalculator class:
*
* \code{.py}
* uri = "point?crs=epsg:4326&field=id:integer"
* layer = QgsVectorLayer(uri, "Scratch point layer", "memory")
* layer.startEditing()
* dialog = QgsFieldCalculator(layer)
* dialog.exec_()
* \endcode
*/
class GUI_EXPORT QgsFieldCalculator: public QDialog, private Ui::QgsFieldCalculatorBase
{
Q_OBJECT
public:
QgsFieldCalculator( QgsVectorLayer *vl, QWidget *parent = nullptr );

/**
* \brief Returns the field index of the field for which new attribute values were calculated.
*
* \returns The field index if attribute values were calculated or -1, e.g. in case of geometry changes.
*/
int changedAttributeId() const { return mAttributeId; }

public slots:
void accept() override;

private slots:
void mNewFieldGroupBox_toggled( bool on );
void mUpdateExistingGroupBox_toggled( bool on );
void mCreateVirtualFieldCheckbox_stateChanged( int state );
void mOutputFieldNameLineEdit_textChanged( const QString &text );
void mOutputFieldTypeComboBox_activated( int index );

private slots:
//! Sets the OK button enabled / disabled
void setOkButtonState();
void setPrecisionMinMax();
Expand Down

0 comments on commit d7bf988

Please sign in to comment.