QGIS API Documentation 3.29.0-Master (ade4f0cf0f)
qgsabstractrelationeditorwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsabstractrelationeditorwidget.h
3 ----------------------
4 begin : October 2020
5 copyright : (C) 2020 by Ivan Ivanov
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSABSTRACTRELATIONEDITORWIDGET_H
19#define QGSABSTRACTRELATIONEDITORWIDGET_H
20
21#include <QWidget>
22#include "qobjectuniqueptr.h"
23
25#include "qgsrelation.h"
26#include "qgis_sip.h"
27#include "qgis_gui.h"
28
29#ifdef SIP_RUN
30// this is needed for the "convert to subclass" code below to compile
31% ModuleHeaderCode
33% End
34#endif
35
36class QgsFeature;
37class QgsVectorLayer;
38
45class GUI_EXPORT QgsAbstractRelationEditorWidget : public QWidget
46{
47
48#ifdef SIP_RUN
50 if ( qobject_cast<QgsRelationEditorWidget *>( sipCpp ) )
51 sipType = sipType_QgsRelationEditorWidget;
52 else
53 sipType = 0;
55#endif
56
57 Q_OBJECT
58
59 public:
60
61
65 QgsAbstractRelationEditorWidget( const QVariantMap &config, QWidget *parent SIP_TRANSFERTHIS = nullptr );
66
70 void setRelationFeature( const QgsRelation &relation, const QgsFeature &feature );
71
81 void setRelations( const QgsRelation &relation, const QgsRelation &nmrelation );
82
87 QgsRelation relation() const {return mRelation;}
88
93 QgsRelation nmRelation() const {return mNmRelation;}
94
98 void setFeature( const QgsFeature &feature, bool update = true );
99
105 void setMultiEditFeatureIds( const QgsFeatureIds &fids );
106
112 virtual void setEditorContext( const QgsAttributeEditorContext &context );
113
117 QgsAttributeEditorContext editorContext( ) const;
118
123 Q_DECL_DEPRECATED bool showLabel() const SIP_DEPRECATED;
124
129 Q_DECL_DEPRECATED void setShowLabel( bool showLabel ) SIP_DEPRECATED;
130
134 QVariant nmRelationId() const;
135
140 void setNmRelationId( const QVariant &nmRelationId = QVariant() );
141
146 Q_DECL_DEPRECATED QString label() const SIP_DEPRECATED;
147
152 void setLabel( const QString &label = QString() );
153
159 QgsFeature feature() const;
160
165 QList<QgsFeature> features() const;
166
170 bool forceSuppressFormPopup() const;
171
176 void setForceSuppressFormPopup( bool forceSuppressFormPopup );
177
181 virtual QVariantMap config() const = 0;
182
186 virtual void setConfig( const QVariantMap &config ) = 0;
187
192 bool multiEditModeActive() const;
193
194 signals:
195
203 void relatedFeaturesChanged();
204
205 public slots:
206
210 virtual void parentFormValueChanged( const QString &attribute, const QVariant &newValue ) = 0;
211
212 protected slots:
213
217 void toggleEditing( bool state );
218
222 void saveEdits();
223
228 QgsFeatureIds addFeature( const QgsGeometry &geometry = QgsGeometry() );
229
233 void deleteFeature( QgsFeatureId fid = QgsFeatureId() );
234
238 void linkFeature();
239
243 void onLinkFeatureDlgAccepted();
244
248 void unlinkFeature( QgsFeatureId fid = QgsFeatureId() );
249
253 void duplicateFeature( const QgsFeatureId &fid );
254
258 void duplicateFeatures( const QgsFeatureIds &fids );
259
260 protected:
261
263 QgsRelation mRelation;
264 QgsRelation mNmRelation;
265 QgsFeatureList mFeatureList;
266
267 bool mLayerInSameTransactionGroup = false;
268
269 bool mForceSuppressFormPopup = false;
270
274 void showEvent( QShowEvent * );
275
280 Q_DECL_DEPRECATED void updateTitle() SIP_DEPRECATED;
281
285 void deleteFeatures( const QgsFeatureIds &fids );
286
290 void unlinkFeatures( const QgsFeatureIds &fids );
291
292 // Following virtual methods need to be protected so they can be overridden in bindings
293
300 virtual void updateUi();
301
306 Q_DECL_DEPRECATED virtual void setTitle( const QString &title ) SIP_DEPRECATED;
307
312 virtual void beforeSetRelationFeature( const QgsRelation &newRelation, const QgsFeature &newFeature );
313
318 virtual void afterSetRelationFeature();
319
324 virtual void beforeSetRelations( const QgsRelation &newRelation, const QgsRelation &newNmRelation );
325
330 virtual void afterSetRelations();
331};
332
333
343class GUI_EXPORT QgsAbstractRelationEditorConfigWidget : public QWidget
344{
345
346#ifdef SIP_RUN
348 if ( qobject_cast<QgsRelationEditorConfigWidget *>( sipCpp ) )
349 sipType = sipType_QgsRelationEditorConfigWidget;
350 else
351 sipType = 0;
352 SIP_END
353#endif
354
355 Q_OBJECT
356 public:
357
364 explicit QgsAbstractRelationEditorConfigWidget( const QgsRelation &relation, QWidget *parent SIP_TRANSFERTHIS );
365
371 virtual QVariantMap config() = 0;
372
378 virtual void setConfig( const QVariantMap &config ) = 0;
379
385 QgsVectorLayer *layer();
386
392 QgsRelation relation() const;
393
399 virtual void setNmRelation( const QgsRelation &nmRelation );
400
406 virtual QgsRelation nmRelation() const;
407
408 private:
409 QgsVectorLayer *mLayer = nullptr;
410 QgsRelation mRelation;
411 QgsRelation mNmRelation;
412};
413
414
416
417
425{
426 public:
427
432
434
438 virtual QString type() const = 0;
439
443 virtual QString name() const = 0;
444
455 virtual QgsAbstractRelationEditorWidget *create( const QVariantMap &config, QWidget *parent = nullptr ) const = 0 SIP_FACTORY;
456
466 virtual QgsAbstractRelationEditorConfigWidget *configWidget( const QgsRelation &relation, QWidget *parent ) const = 0 SIP_FACTORY;
467};
468
469#endif // QGSABSTRACTRELATIONEDITORWIDGET_H
This class should be subclassed for every configurable relation widget type.
virtual QVariantMap config()=0
Create a configuration from the current GUI state.
virtual void setConfig(const QVariantMap &config)=0
Update the configuration widget to represent the given configuration.
Factory class for creating relation widgets and their corresponding config widgets.
virtual QString type() const =0
Returns the machine readable identifier name of this widget type.
virtual QString name() const =0
Returns the human readable identifier name of this widget type.
virtual QgsAbstractRelationEditorConfigWidget * configWidget(const QgsRelation &relation, QWidget *parent) const =0
Override this in your implementation.
virtual QgsAbstractRelationEditorWidget * create(const QVariantMap &config, QWidget *parent=nullptr) const =0
Override this in your implementation.
virtual ~QgsAbstractRelationEditorWidgetFactory()=default
Base class to build new relation widgets.
QgsRelation relation() const
Returns the relation.
QgsRelation nmRelation() const
Returns the nm relation.
This class contains context information for attribute editor widgets.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:164
Represents a vector layer which manages a vector based data sets.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:186
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_END
Definition: qgis_sip.h:203
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:922
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28