QGIS/python/gui/qgsattributeform.sip
Nyall Dawson ca5c7e2cd4 [FEATURE] Form based select/filter in attribute table
This commit adds a new mode to the attribute table dialog for searching
and filtering features. When activated (using a button on the toolbar
or by pressng CTRL+F), the dialog will switch to form view and all
widgets are replaced with their search widget wrapper variant.

Alongside each widget is a tool button with options for controlling
the search/filter behaviour for that field, eg "equal to", "not equal
to", "is null", "greater than", etc.., with the options presented
matching themselves to the corresponding field and widget type.

New buttons appear at the bottom of the form for either selecting
matching features (with options for add to selection/remove from
selection/select within current selection) or filtering features
in the table (with options for adding features to a current filter
or further restricting a current filter).

Sponsored by SIGE
2016-05-24 00:26:14 +10:00

216 lines
6.6 KiB
Plaintext

/***************************************************************************
qgsattributeform.h
--------------------------------------
Date : 3.5.2014
Copyright : (C) 2014 Matthias Kuhn
Email : matthias at opengis dot ch
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
class QgsAttributeForm : QWidget
{
%TypeHeaderCode
#include <qgsattributeform.h>
%End
public:
//! Form modes
enum Mode
{
SingleEditMode, /*!< Single edit mode, for editing a single feature */
AddFeatureMode, /*!< Add feature mode, for setting attributes for a new feature. In this mode the dialog will be editable even with an invalid feature and
will add a new feature when the form is accepted. */
MultiEditMode, /*!< Multi edit mode, for editing fields of multiple features at once */
SearchMode, /*!< Form values are used for searching/filtering the layer */
};
//! Filter types
enum FilterType
{
ReplaceFilter, /*!< Filter should replace any existing filter */
FilterAnd, /*!< Filter should be combined using "AND" */
FilterOr, /*!< Filter should be combined using "OR" */
};
explicit QgsAttributeForm( QgsVectorLayer* vl, const QgsFeature& feature = QgsFeature(), const QgsAttributeEditorContext& context = QgsAttributeEditorContext(), QWidget *parent /TransferThis/ = 0 );
~QgsAttributeForm();
const QgsFeature& feature();
/**
* Hides the button box (Ok/Cancel) and enables auto-commit
*/
void hideButtonBox();
/**
* Shows the button box (Ok/Cancel) and disables auto-commit
*/
void showButtonBox();
/**
* Disconnects the button box (Ok/Cancel) from the accept/resetValues slots
* If this method is called, you have to create these connections from outside
*/
void disconnectButtonBox();
/**
* Takes ownership
* @param iface
*/
void addInterface( QgsAttributeFormInterface* iface /Transfer/ );
/**
* Returns the layer for which this form is shown
*
* @return Layer
*/
QgsVectorLayer* layer();
/**
* Returns if the form is currently in editable mode.
*
* @return Editable mode of this form
*/
bool editable();
/** Returns the current mode of the form.
* @note added in QGIS 2.16
* @see setMode()
*/
Mode mode() const;
/** Sets the current mode of the form.
* @param mode form mode
* @note added in QGIS 2.16
* @see mode()
*/
void setMode( Mode mode );
/**
* Toggles the form mode between edit feature and add feature.
* If set to true, the dialog will be editable even with an invalid feature.
* If set to true, the dialog will add a new feature when the form is accepted.
*
* @param isAddDialog If set to true, turn this dialog into an add feature dialog.
*/
void setIsAddDialog( bool isAddDialog );
/**
* Sets the edit command message (Undo) that will be used when the dialog is accepted
*
* @param message The message
*/
void setEditCommandMessage( const QString& message );
/**
* Intercepts keypress on custom form (escape should not close it)
*
* @param object The object for which the event has been sent
* @param event The event which is being filtered
*
* @return true if the event has been handled (key was ESC)
*/
bool eventFilter( QObject* object, QEvent* event );
/** Sets all feature IDs which are to be edited if the form is in multiedit mode
* @param fids feature ID list
* @note added in QGIS 2.16
*/
void setMultiEditFeatureIds( const QgsFeatureIds& fids );
signals:
/**
* Notifies about changes of attributes
*
* @param attribute The name of the attribute that changed.
* @param value The new value of the attribute.
*/
void attributeChanged( const QString& attribute, const QVariant& value );
/**
* Will be emitted before the feature is saved. Use this signal to perform sanity checks.
* You can set the parameter ok to false to notify the form that you don't want it to be saved.
* If you want the form to be saved, leave the parameter untouched.
*
* @param ok Set this parameter to false if you don't want the form to be saved
* @note not available in python bindings
*/
// void beforeSave( bool& ok );
/**
* Is emitted, when a feature is changed or added
*/
void featureSaved( const QgsFeature& feature );
/** Is emitted when a filter expression is set using the form.
* @param expression filter expression
* @param type filter type
* @note added in QGIS 2.16
*/
void filterExpressionSet( const QString& expression, QgsAttributeForm::FilterType type );
/** Emitted when the form changes mode.
* @param mode new mode
*/
void modeChanged( QgsAttributeForm::Mode mode );
public slots:
/**
* Call this to change the content of a given attribute. Will update the editor(s) related to this field.
*
* @param field The field to change
* @param value The new value
*/
void changeAttribute( const QString& field, const QVariant& value );
/**
* Update all editors to correspond to a different feature.
*
* @param feature The feature which will be represented by the form
*/
void setFeature( const QgsFeature& feature );
/**
* Save all the values from the editors to the layer.
*
* @return True if successful
*/
bool save();
/**
* Alias for save()
*
* @deprecated
*/
void accept() /Deprecated/;
/**
* Alias for resetValues()
*
* @deprecated
*/
void reject() /Deprecated/;
/**
* Sets all values to the values of the current feature
*/
void resetValues();
/** Resets the search/filter form values.
* @note added in QGIS 2.16
*/
void resetSearch();
/**
* reload current feature
*/
void refreshFeature();
};