Skip to content

Commit f5559b5

Browse files
committedNov 20, 2017
Add QgsAttributeFormWidget
1 parent 6d0f2af commit f5559b5

10 files changed

+223
-119
lines changed
 

‎python/gui/gui_auto.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
%Include qgsattributedialog.sip
5656
%Include qgsattributeform.sip
5757
%Include qgsattributeformeditorwidget.sip
58+
%Include qgsattributeformwidget.sip
5859
%Include qgsattributetypeloaddialog.sip
5960
%Include qgsblendmodecombobox.sip
6061
%Include qgsbrowsertreeview.sip

‎python/gui/qgsattributeformeditorwidget.sip

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111

12-
class QgsAttributeFormEditorWidget : QWidget
12+
class QgsAttributeFormEditorWidget : QgsAttributeFormWidget
1313
{
1414
%Docstring
1515
A widget consisting of both an editor widget and additional widgets for controlling the behavior
@@ -24,15 +24,8 @@ class QgsAttributeFormEditorWidget : QWidget
2424
%End
2525
public:
2626

27-
enum Mode
28-
{
29-
DefaultMode,
30-
MultiEditMode,
31-
SearchMode,
32-
};
33-
34-
explicit QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget,
35-
QgsAttributeForm *form /TransferThis/ );
27+
explicit QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget, const QString &widgetType,
28+
QgsAttributeForm *form /TransferThis/ );
3629
%Docstring
3730
Constructor for QgsAttributeFormEditorWidget.
3831
\param editorWidget associated editor widget wrapper (for default/edit modes)
@@ -41,32 +34,7 @@ class QgsAttributeFormEditorWidget : QWidget
4134

4235
~QgsAttributeFormEditorWidget();
4336

44-
void createSearchWidgetWrappers( const QString &widgetId, int fieldIdx,
45-
const QVariantMap &config );
46-
47-
%Docstring
48-
Creates the search widget wrappers for the widget used when the form is in
49-
search mode.
50-
\param widgetId id of the widget type to create a search wrapper for
51-
\param fieldIdx index of field associated with widget
52-
\param config configuration which should be used for the widget creation
53-
\param context editor context (not available in Python bindings)
54-
%End
55-
56-
void setMode( Mode mode );
57-
%Docstring
58-
Sets the current mode for the widget. The widget will adapt its state and visible widgets to
59-
reflect the updated mode. For example, showing multi edit tool buttons if the mode is set to MultiEditMode.
60-
\param mode widget mode
61-
.. seealso:: mode()
62-
%End
63-
64-
Mode mode() const;
65-
%Docstring
66-
Returns the current mode for the widget.
67-
.. seealso:: setMode()
68-
:rtype: Mode
69-
%End
37+
virtual void createSearchWidgetWrappers();
7038

7139
void initialize( const QVariant &initialValue, bool mixedValues = false );
7240
%Docstring
@@ -88,7 +56,8 @@ class QgsAttributeFormEditorWidget : QWidget
8856
:rtype: QVariant
8957
%End
9058

91-
QString currentFilterExpression() const;
59+
virtual QString currentFilterExpression() const;
60+
9261
%Docstring
9362
Creates an expression matching the current search filter value and
9463
search properties represented in the widget.
@@ -156,7 +125,7 @@ class QgsAttributeFormEditorWidget : QWidget
156125
.. note::
157126

158127
this method is in place for unit testing only, and is not considered
159-
stable AP
128+
stable API
160129
%End
161130

162131
QWidget *searchWidgetFrame();
@@ -177,7 +146,7 @@ class QgsAttributeFormEditorWidget : QWidget
177146
.. note::
178147

179148
this method is in place for unit testing only, and is not considered
180-
stable AP
149+
stable API
181150
:rtype: list of QgsSearchWidgetWrapper
182151
%End
183152

‎python/gui/qgsattributeformwidget.sip

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/************************************************************************
2+
* This file has been generated automatically from *
3+
* *
4+
* src/gui/qgsattributeformwidget.h *
5+
* *
6+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
7+
************************************************************************/
8+
9+
10+
11+
12+
class QgsAttributeFormWidget : QWidget /Abstract/
13+
{
14+
15+
%TypeHeaderCode
16+
#include "qgsattributeformwidget.h"
17+
%End
18+
public:
19+
20+
enum Mode
21+
{
22+
DefaultMode,
23+
MultiEditMode,
24+
SearchMode,
25+
};
26+
27+
explicit QgsAttributeFormWidget( QgsWidgetWrapper *widget, QgsAttributeForm *form );
28+
29+
virtual void createSearchWidgetWrappers() = 0;
30+
%Docstring
31+
Creates the search widget wrappers for the widget used when the form is in
32+
search mode.
33+
34+
\param context editor context (not available in Python bindings)
35+
%End
36+
37+
virtual QString currentFilterExpression() const = 0;
38+
%Docstring
39+
Creates an expression matching the current search filter value and
40+
search properties represented in the widget.
41+
.. versionadded:: 2.16
42+
:rtype: str
43+
%End
44+
45+
46+
void setMode( Mode mode );
47+
%Docstring
48+
Sets the current mode for the widget. The widget will adapt its state and visible widgets to
49+
reflect the updated mode. For example, showing multi edit tool buttons if the mode is set to MultiEditMode.
50+
\param mode widget mode
51+
.. seealso:: mode()
52+
%End
53+
54+
Mode mode() const;
55+
%Docstring
56+
Returns the current mode for the widget.
57+
.. seealso:: setMode()
58+
:rtype: Mode
59+
%End
60+
61+
QgsVectorLayer *layer();
62+
%Docstring
63+
:rtype: QgsVectorLayer
64+
%End
65+
66+
QgsAttributeForm *form() const;
67+
%Docstring
68+
:rtype: QgsAttributeForm
69+
%End
70+
71+
};
72+
73+
/************************************************************************
74+
* This file has been generated automatically from *
75+
* *
76+
* src/gui/qgsattributeformwidget.h *
77+
* *
78+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
79+
************************************************************************/

‎src/gui/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ SET(QGIS_GUI_SRCS
197197
qgsattributeforminterface.cpp
198198
qgsattributeformlegacyinterface.cpp
199199
qgsattributetypeloaddialog.cpp
200+
qgsattributeformwidget.cpp
200201
qgsblendmodecombobox.cpp
201202
qgsbrowsertreeview.cpp
202203
qgsbrowserdockwidget.cpp
@@ -370,6 +371,7 @@ SET(QGIS_GUI_MOC_HDRS
370371
qgsattributedialog.h
371372
qgsattributeform.h
372373
qgsattributeformeditorwidget.h
374+
qgsattributeformwidget.h
373375
qgsattributetypeloaddialog.h
374376
qgsblendmodecombobox.h
375377
qgsbrowsertreeview.h

‎src/gui/qgsattributeform.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,24 +151,24 @@ void QgsAttributeForm::setMode( QgsAttributeForm::Mode mode )
151151
}
152152

153153
//update all form editor widget modes to match
154-
Q_FOREACH ( QgsAttributeFormEditorWidget *w, findChildren< QgsAttributeFormEditorWidget * >() )
154+
for ( QgsAttributeFormWidget *w : findChildren< QgsAttributeFormWidget * >() )
155155
{
156156
switch ( mode )
157157
{
158158
case QgsAttributeForm::SingleEditMode:
159-
w->setMode( QgsAttributeFormEditorWidget::DefaultMode );
159+
w->setMode( QgsAttributeFormWidget::DefaultMode );
160160
break;
161161

162162
case QgsAttributeForm::AddFeatureMode:
163-
w->setMode( QgsAttributeFormEditorWidget::DefaultMode );
163+
w->setMode( QgsAttributeFormWidget::DefaultMode );
164164
break;
165165

166166
case QgsAttributeForm::MultiEditMode:
167-
w->setMode( QgsAttributeFormEditorWidget::MultiEditMode );
167+
w->setMode( QgsAttributeFormWidget::MultiEditMode );
168168
break;
169169

170170
case QgsAttributeForm::SearchMode:
171-
w->setMode( QgsAttributeFormEditorWidget::SearchMode );
171+
w->setMode( QgsAttributeFormWidget::SearchMode );
172172
break;
173173
}
174174
}
@@ -1221,10 +1221,10 @@ void QgsAttributeForm::init()
12211221
QWidget *w = nullptr;
12221222
if ( eww )
12231223
{
1224-
QgsAttributeFormEditorWidget *formWidget = new QgsAttributeFormEditorWidget( eww, this );
1224+
QgsAttributeFormEditorWidget *formWidget = new QgsAttributeFormEditorWidget( eww, widgetSetup.type(), this );
12251225
w = formWidget;
12261226
mFormEditorWidgets.insert( idx, formWidget );
1227-
formWidget->createSearchWidgetWrappers( widgetSetup.type(), idx, widgetSetup.config(), mContext );
1227+
formWidget->createSearchWidgetWrappers( mContext );
12281228

12291229
l->setBuddy( eww->widget() );
12301230
}
@@ -1523,10 +1523,10 @@ QgsAttributeForm::WidgetInfo QgsAttributeForm::createWidgetFromDef( const QgsAtt
15231523
const QgsEditorWidgetSetup widgetSetup = QgsGui::editorWidgetRegistry()->findBest( mLayer, fieldDef->name() );
15241524

15251525
QgsEditorWidgetWrapper *eww = QgsGui::editorWidgetRegistry()->create( widgetSetup.type(), mLayer, fldIdx, widgetSetup.config(), nullptr, this, mContext );
1526-
QgsAttributeFormEditorWidget *w = new QgsAttributeFormEditorWidget( eww, this );
1526+
QgsAttributeFormEditorWidget *w = new QgsAttributeFormEditorWidget( eww, widgetSetup.type(), this );
15271527
mFormEditorWidgets.insert( fldIdx, w );
15281528

1529-
w->createSearchWidgetWrappers( widgetSetup.type(), fldIdx, widgetSetup.config(), mContext );
1529+
w->createSearchWidgetWrappers( mContext );
15301530

15311531
newWidgetInfo.widget = w;
15321532
addWidgetWrapper( eww );

‎src/gui/qgsattributeform.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class QgsMessageBar;
3434
class QgsMessageBarItem;
3535
class QgsWidgetWrapper;
3636
class QgsTabWidget;
37+
class QgsAttributeFormWidget;
3738

3839
/**
3940
* \ingroup gui

‎src/gui/qgsattributeformeditorwidget.cpp

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@
2626
#include <QLabel>
2727
#include <QStackedWidget>
2828

29-
QgsAttributeFormEditorWidget::QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget,
30-
QgsAttributeForm *form )
31-
: QWidget( form )
29+
QgsAttributeFormEditorWidget::QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget, const QString &widgetType, QgsAttributeForm *form )
30+
: QgsAttributeFormWidget( editorWidget, form )
31+
, mWidgetType( widgetType )
3232
, mWidget( editorWidget )
3333
, mForm( form )
34-
, mMode( DefaultMode )
3534
, mMultiEditButton( new QgsMultiEditToolButton() )
3635
, mBlockValueUpdate( false )
3736
, mIsMixed( false )
@@ -99,16 +98,20 @@ QgsAttributeFormEditorWidget::~QgsAttributeFormEditorWidget()
9998
delete mMultiEditButton;
10099
}
101100

102-
void QgsAttributeFormEditorWidget::createSearchWidgetWrappers( const QString &widgetId, int fieldIdx, const QVariantMap &config, const QgsAttributeEditorContext &context )
101+
void QgsAttributeFormEditorWidget::createSearchWidgetWrappers( const QgsAttributeEditorContext &context )
103102
{
104-
QgsSearchWidgetWrapper *sww = QgsGui::editorWidgetRegistry()->createSearchWidget( widgetId, layer(), fieldIdx, config,
103+
Q_ASSERT( !mWidgetType.isEmpty() );
104+
const QVariantMap config = mWidget->config();
105+
const int fieldIdx = mWidget->fieldIdx();
106+
107+
QgsSearchWidgetWrapper *sww = QgsGui::editorWidgetRegistry()->createSearchWidget( mWidgetType, layer(), fieldIdx, config,
105108
mSearchFrame, context );
106109
setSearchWidgetWrapper( sww );
107110
if ( sww->supportedFlags() & QgsSearchWidgetWrapper::Between ||
108111
sww->supportedFlags() & QgsSearchWidgetWrapper::IsNotBetween )
109112
{
110113
// create secondary widget for between type searches
111-
QgsSearchWidgetWrapper *sww2 = QgsGui::editorWidgetRegistry()->createSearchWidget( widgetId, layer(), fieldIdx, config,
114+
QgsSearchWidgetWrapper *sww2 = QgsGui::editorWidgetRegistry()->createSearchWidget( mWidgetType, layer(), fieldIdx, config,
112115
mSearchFrame, context );
113116
mSearchWidgets << sww2;
114117
mSearchFrame->layout()->addWidget( sww2->widget() );
@@ -164,12 +167,6 @@ void QgsAttributeFormEditorWidget::setConstraintResultVisible( bool editable )
164167
mConstraintResultLabel->setHidden( !editable );
165168
}
166169

167-
void QgsAttributeFormEditorWidget::setMode( QgsAttributeFormEditorWidget::Mode mode )
168-
{
169-
mMode = mode;
170-
updateWidgets();
171-
}
172-
173170
void QgsAttributeFormEditorWidget::setIsMixed( bool mixed )
174171
{
175172
if ( mWidget && mixed )
@@ -249,7 +246,7 @@ void QgsAttributeFormEditorWidget::editorWidgetChanged( const QVariant &value )
249246

250247
mIsChanged = true;
251248

252-
switch ( mMode )
249+
switch ( mode() )
253250
{
254251
case DefaultMode:
255252
case SearchMode:
@@ -269,7 +266,7 @@ void QgsAttributeFormEditorWidget::resetValue()
269266
mWidget->setValue( mPreviousValue );
270267
mBlockValueUpdate = false;
271268

272-
switch ( mMode )
269+
switch ( mode() )
273270
{
274271
case DefaultMode:
275272
case SearchMode:
@@ -313,11 +310,6 @@ QgsSearchWidgetToolButton *QgsAttributeFormEditorWidget::searchWidgetToolButton(
313310
return mSearchWidgetToolButton;
314311
}
315312

316-
QgsVectorLayer *QgsAttributeFormEditorWidget::layer()
317-
{
318-
return mForm ? mForm->layer() : nullptr;
319-
}
320-
321313
void QgsAttributeFormEditorWidget::updateWidgets()
322314
{
323315
//first update the tool buttons
@@ -326,21 +318,21 @@ void QgsAttributeFormEditorWidget::updateWidgets()
326318

327319
if ( hasMultiEditButton )
328320
{
329-
if ( mMode != MultiEditMode || fieldReadOnly )
321+
if ( mode() != MultiEditMode || fieldReadOnly )
330322
{
331323
mEditPage->layout()->removeWidget( mMultiEditButton );
332324
mMultiEditButton->setParent( nullptr );
333325
}
334326
}
335327
else
336328
{
337-
if ( mMode == MultiEditMode && !fieldReadOnly )
329+
if ( mode() == MultiEditMode && !fieldReadOnly )
338330
{
339331
mEditPage->layout()->addWidget( mMultiEditButton );
340332
}
341333
}
342334

343-
switch ( mMode )
335+
switch ( mode() )
344336
{
345337
case DefaultMode:
346338
case MultiEditMode:

‎src/gui/qgsattributeformeditorwidget.h

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,11 @@
1616
#ifndef QGSATTRIBUTEFORMEDITORWIDGET_H
1717
#define QGSATTRIBUTEFORMEDITORWIDGET_H
1818

19-
#include <QWidget>
2019
#include "qgis_sip.h"
21-
#include "qgis.h"
22-
#include <QVariant>
23-
#include "qgsattributeeditorcontext.h"
24-
#include "qgssearchwidgetwrapper.h"
2520
#include "qgis_gui.h"
2621
#include "qgseditorwidgetwrapper.h"
22+
#include "qgsattributeformwidget.h"
2723

28-
class QgsAttributeForm;
2924
class QgsEditorWidgetWrapper;
3025
class QgsMultiEditToolButton;
3126
class QgsSearchWidgetToolButton;
@@ -43,55 +38,23 @@ class QLabel;
4338
* controlling the multi edit results.
4439
* \since QGIS 2.16
4540
*/
46-
class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
41+
class GUI_EXPORT QgsAttributeFormEditorWidget : public QgsAttributeFormWidget
4742
{
4843
Q_OBJECT
4944

5045
public:
5146

52-
//! Widget modes
53-
enum Mode
54-
{
55-
DefaultMode, //!< Default mode, only the editor widget is shown
56-
MultiEditMode, //!< Multi edit mode, both the editor widget and a QgsMultiEditToolButton is shown
57-
SearchMode, //!< Layer search/filter mode
58-
};
59-
6047
/**
6148
* Constructor for QgsAttributeFormEditorWidget.
6249
* \param editorWidget associated editor widget wrapper (for default/edit modes)
6350
* \param form parent attribute form
6451
*/
65-
explicit QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget,
66-
QgsAttributeForm *form SIP_TRANSFERTHIS );
52+
explicit QgsAttributeFormEditorWidget( QgsEditorWidgetWrapper *editorWidget, const QString &widgetType,
53+
QgsAttributeForm *form SIP_TRANSFERTHIS );
6754

6855
~QgsAttributeFormEditorWidget();
6956

70-
/**
71-
* Creates the search widget wrappers for the widget used when the form is in
72-
* search mode.
73-
* \param widgetId id of the widget type to create a search wrapper for
74-
* \param fieldIdx index of field associated with widget
75-
* \param config configuration which should be used for the widget creation
76-
* \param context editor context (not available in Python bindings)
77-
*/
78-
void createSearchWidgetWrappers( const QString &widgetId, int fieldIdx,
79-
const QVariantMap &config,
80-
const QgsAttributeEditorContext &context SIP_PYARGREMOVE = QgsAttributeEditorContext() );
81-
82-
/**
83-
* Sets the current mode for the widget. The widget will adapt its state and visible widgets to
84-
* reflect the updated mode. For example, showing multi edit tool buttons if the mode is set to MultiEditMode.
85-
* \param mode widget mode
86-
* \see mode()
87-
*/
88-
void setMode( Mode mode );
89-
90-
/**
91-
* Returns the current mode for the widget.
92-
* \see setMode()
93-
*/
94-
Mode mode() const { return mMode; }
57+
virtual void createSearchWidgetWrappers( const QgsAttributeEditorContext &context SIP_PYARGREMOVE = QgsAttributeEditorContext() ) override;
9558

9659
/**
9760
* Resets the widget to an initial value.
@@ -116,7 +79,7 @@ class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
11679
* search properties represented in the widget.
11780
* \since QGIS 2.16
11881
*/
119-
QString currentFilterExpression() const;
82+
QString currentFilterExpression() const override;
12083

12184
/**
12285
* Set the constraint status for this widget.
@@ -184,7 +147,7 @@ class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
184147
* \note the search widget wrapper should be created using searchWidgetFrame()
185148
* as its parent
186149
* \note this method is in place for unit testing only, and is not considered
187-
* stable AP
150+
* stable API
188151
*/
189152
void setSearchWidgetWrapper( QgsSearchWidgetWrapper *wrapper );
190153

@@ -200,7 +163,7 @@ class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
200163
* Returns the search widget wrapper used in this widget. The wrapper must
201164
* first be created using createSearchWidgetWrapper()
202165
* \note this method is in place for unit testing only, and is not considered
203-
* stable AP
166+
* stable API
204167
*/
205168
QList< QgsSearchWidgetWrapper * > searchWidgetWrappers();
206169

@@ -211,11 +174,11 @@ class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
211174
QStackedWidget *mStack = nullptr;
212175
QWidget *mSearchFrame = nullptr;
213176

177+
QString mWidgetType;
214178
QgsEditorWidgetWrapper *mWidget = nullptr;
215179
QList< QgsSearchWidgetWrapper * > mSearchWidgets;
216180
QgsAttributeForm *mForm = nullptr;
217181
QLabel *mConstraintResultLabel = nullptr;
218-
Mode mMode;
219182

220183
QgsMultiEditToolButton *mMultiEditButton = nullptr;
221184
QgsSearchWidgetToolButton *mSearchWidgetToolButton = nullptr;
@@ -224,8 +187,7 @@ class GUI_EXPORT QgsAttributeFormEditorWidget : public QWidget
224187
bool mIsMixed;
225188
bool mIsChanged;
226189

227-
QgsVectorLayer *layer();
228-
void updateWidgets();
190+
void updateWidgets() override;
229191
};
230192

231193
#endif // QGSATTRIBUTEFORMEDITORWIDGET_H

‎src/gui/qgsattributeformwidget.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include "qgsattributeformwidget.h"
2+
3+
#include "qgsattributeform.h"
4+
5+
QgsAttributeFormWidget::QgsAttributeFormWidget( QgsWidgetWrapper *widget, QgsAttributeForm *form )
6+
: QWidget( form )
7+
, mMode( DefaultMode )
8+
, mForm( form )
9+
{
10+
11+
}
12+
13+
void QgsAttributeFormWidget::setMode( QgsAttributeFormWidget::Mode mode )
14+
{
15+
mMode = mode;
16+
updateWidgets();
17+
}
18+
19+
QgsAttributeForm *QgsAttributeFormWidget::form() const
20+
{
21+
return mForm;
22+
}
23+
24+
QgsVectorLayer *QgsAttributeFormWidget::layer()
25+
{
26+
QgsAttributeForm *aform = form();
27+
return aform ? aform->layer() : nullptr;
28+
}

‎src/gui/qgsattributeformwidget.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#ifndef QGSATTRIBUTEFORMWIDGET_H
2+
#define QGSATTRIBUTEFORMWIDGET_H
3+
4+
#include "qgis.h"
5+
#include "qgis_gui.h"
6+
#include "qgsattributeeditorcontext.h"
7+
#include "qgssearchwidgetwrapper.h"
8+
9+
#include <QWidget>
10+
#include <QVariant>
11+
12+
class QgsAttributeForm;
13+
14+
class GUI_EXPORT QgsAttributeFormWidget : public QWidget // SIP_ABSTRACT
15+
{
16+
Q_OBJECT
17+
18+
public:
19+
20+
//! Widget modes
21+
enum Mode
22+
{
23+
DefaultMode, //!< Default mode, only the editor widget is shown
24+
MultiEditMode, //!< Multi edit mode, both the editor widget and a QgsMultiEditToolButton is shown
25+
SearchMode, //!< Layer search/filter mode
26+
};
27+
28+
explicit QgsAttributeFormWidget( QgsWidgetWrapper *widget, QgsAttributeForm *form );
29+
30+
/**
31+
* Creates the search widget wrappers for the widget used when the form is in
32+
* search mode.
33+
*
34+
* \param context editor context (not available in Python bindings)
35+
*/
36+
virtual void createSearchWidgetWrappers( const QgsAttributeEditorContext &context SIP_PYARGREMOVE = QgsAttributeEditorContext() ) = 0;
37+
38+
/**
39+
* Creates an expression matching the current search filter value and
40+
* search properties represented in the widget.
41+
* \since QGIS 2.16
42+
*/
43+
virtual QString currentFilterExpression() const = 0;
44+
45+
46+
/**
47+
* Sets the current mode for the widget. The widget will adapt its state and visible widgets to
48+
* reflect the updated mode. For example, showing multi edit tool buttons if the mode is set to MultiEditMode.
49+
* \param mode widget mode
50+
* \see mode()
51+
*/
52+
void setMode( Mode mode );
53+
54+
/**
55+
* Returns the current mode for the widget.
56+
* \see setMode()
57+
*/
58+
Mode mode() const { return mMode; }
59+
60+
QgsVectorLayer *layer();
61+
62+
QgsAttributeForm *form() const;
63+
64+
private:
65+
QgsAttributeFormWidget::Mode mMode = DefaultMode;
66+
virtual void updateWidgets() = 0;
67+
QgsAttributeForm *mForm = nullptr;
68+
};
69+
70+
#endif // QGSATTRIBUTEFORMWIDGET_H

0 commit comments

Comments
 (0)
Please sign in to comment.