QGIS API Documentation 3.99.0-Master (a8882ad4560)
Loading...
Searching...
No Matches
qgsattributeeditorcontext.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsattributeeditorcontext.h
3 --------------------------------------
4 Date : 30.7.2013
5 Copyright : (C) 2013 Matthias Kuhn
6 Email : matthias at opengis dot ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSATTRIBUTEEDITORCONTEXT_H
17#define QGSATTRIBUTEEDITORCONTEXT_H
18
19#include "qgis_gui.h"
20#include "qgsdistancearea.h"
21#include "qgsproject.h"
22#include "qgsvectorlayer.h"
23#include "qgsvectorlayertools.h"
24
25#include <QMap>
26#include <QMetaEnum>
27#include <QWidget>
28
29class QgsMapCanvas;
31class QgsMessageBar;
32
40
42{
43 Q_GADGET
44
45 public:
59 Q_ENUM( Mode )
60
61
70
77
79
81 : mParentContext( &parentContext )
82 , mVectorLayerTools( parentContext.mVectorLayerTools )
83 , mMapCanvas( parentContext.mMapCanvas )
84 , mMainMessageBar( parentContext.mMainMessageBar )
85 , mCadDockWidget( parentContext.mCadDockWidget )
86 , mDistanceArea( parentContext.mDistanceArea )
87 , mFormFeature( parentContext.mFormFeature )
88 , mFormMode( formMode )
89 {
90 Q_ASSERT( parentContext.vectorLayerTools() );
91 }
92
94 : mParentContext( &parentContext )
95 , mVectorLayerTools( parentContext.mVectorLayerTools )
96 , mMapCanvas( parentContext.mMapCanvas )
97 , mMainMessageBar( parentContext.mMainMessageBar )
98 , mCadDockWidget( parentContext.mCadDockWidget )
99 , mDistanceArea( parentContext.mDistanceArea )
100 , mRelation( relation )
101 , mRelationMode( relationMode )
102 , mFormMode( widgetMode )
103 {
104 Q_ASSERT( parentContext.vectorLayerTools() );
105 }
106
112 {
113 if ( mLayer )
114 {
115 mDistanceArea = distanceArea;
116 mDistanceArea.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
117 }
118 }
119
124 inline const QgsDistanceArea &distanceArea() const { return mDistanceArea; }
125
131 inline void setMapCanvas( QgsMapCanvas *mapCanvas ) { mMapCanvas = mapCanvas; }
132
138 inline QgsMapCanvas *mapCanvas() const { return mMapCanvas; }
139
146 void setCadDockWidget( QgsAdvancedDigitizingDockWidget *cadDockWidget );
147
154 QgsAdvancedDigitizingDockWidget *cadDockWidget() const { return mCadDockWidget; }
155
161 inline void setVectorLayerTools( QgsVectorLayerTools *vlTools ) { mVectorLayerTools = vlTools; }
162 // TODO QGIS 5.0 - rename vlTools to tools
163
168 inline const QgsVectorLayerTools *vectorLayerTools() const { return mVectorLayerTools; }
169
177 inline void setRelation( const QgsRelation &relation, RelationMode mode )
178 {
179 mRelation = relation;
180 mRelationMode = mode;
181 }
182
188 inline const QgsRelation &relation() const { return mRelation; }
189
195 inline RelationMode relationMode() const { return mRelationMode; }
196
201 inline FormMode formMode() const { return mFormMode; }
202
208 inline void setFormMode( FormMode mode ) { mFormMode = mode; }
209
214 bool allowCustomUi() const { return mAllowCustomUi; }
215
222 void setAllowCustomUi( bool allow ) { mAllowCustomUi = allow; }
223
224 inline const QgsAttributeEditorContext *parentContext() const { return mParentContext; }
225
231 QgsFeature formFeature() const { return mFormFeature; }
232
238 void setFormFeature( const QgsFeature &feature ) { mFormFeature = feature; }
239
245 QgsFeature parentFormFeature() const { return mParentFormFeature; }
246
252 void setParentFormFeature( const QgsFeature &feature ) { mParentFormFeature = feature; }
253
258 Mode attributeFormMode() const { return mAttributeFormMode; }
259
264 void setAttributeFormMode( const Mode &attributeFormMode ) { mAttributeFormMode = attributeFormMode; }
265
271 {
272 const QMetaEnum metaEnum( QMetaEnum::fromType<Mode>() );
273 return metaEnum.valueToKey( static_cast<int>( mAttributeFormMode ) );
274 }
275
280 void setMainMessageBar( QgsMessageBar *messageBar ) { mMainMessageBar = messageBar; }
281
286 QgsMessageBar *mainMessageBar() { return mMainMessageBar; }
287
288 private:
289 const QgsAttributeEditorContext *mParentContext = nullptr;
290 QgsVectorLayer *mLayer = nullptr;
291 QgsVectorLayerTools *mVectorLayerTools = nullptr;
292 QgsMapCanvas *mMapCanvas = nullptr;
293 QgsMessageBar *mMainMessageBar = nullptr;
294 QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr;
295 QgsDistanceArea mDistanceArea;
296 QgsRelation mRelation;
297 RelationMode mRelationMode = Undefined;
299 QgsFeature mFormFeature;
301 QgsFeature mParentFormFeature;
302 FormMode mFormMode = Embed;
303 bool mAllowCustomUi = true;
304 Mode mAttributeFormMode = SingleEditMode;
305};
306
307#endif // QGSATTRIBUTEEDITORCONTEXT_H
A dockable widget used to handle the CAD tools on top of a selection of map tools.
Contains context information for attribute editor widgets.
void setMapCanvas(QgsMapCanvas *mapCanvas)
Sets the associated map canvas, mapCanvas, (e.g.
RelationMode relationMode() const
Returns the attribute relation mode.
QgsAttributeEditorContext()=default
QgsMapCanvas * mapCanvas() const
Returns the associated map canvas (e.g.
FormMode formMode() const
Returns the form mode.
void setFormFeature(const QgsFeature &feature)
Set current feature for the currently edited form or table row.
void setRelation(const QgsRelation &relation, RelationMode mode)
Set attribute relation and mode.
const QgsDistanceArea & distanceArea() const
Returns the distance area object used for area/length calculations.
QgsAdvancedDigitizingDockWidget * cadDockWidget() const
Returns the associated CAD dock widget (e.g.
QString attributeFormModeString() const
Returns given attributeFormMode as string.
RelationMode
Determines in which direction a relation was resolved.
@ Multiple
When showing a list of features (e.g. houses as an embedded form in a district form).
@ Single
When showing a single feature (e.g. district information when looking at the form of a house).
@ Undefined
This context is not defined by a relation.
QgsFeature parentFormFeature() const
Returns the feature of the currently edited parent form in its actual state.
const QgsVectorLayerTools * vectorLayerTools() const
Returns the associated vector layer tools.
@ Embed
A form was embedded as a widget on another form.
@ StandaloneDialog
A form was opened as a new dialog.
@ Popup
A widget was opened as a popup (e.g. attribute table editor widget).
void setParentFormFeature(const QgsFeature &feature)
Sets the feature of the currently edited parent form.
QgsAttributeEditorContext(const QgsAttributeEditorContext &parentContext, const QgsRelation &relation, RelationMode relationMode, FormMode widgetMode)
void setFormMode(FormMode mode)
Sets the form mode.
QgsMessageBar * mainMessageBar()
Returns the main message bar.
void setVectorLayerTools(QgsVectorLayerTools *vlTools)
Sets the associated vector layer tools.
void setMainMessageBar(QgsMessageBar *messageBar)
Set current messageBar as the main message bar.
QgsAttributeEditorContext(const QgsAttributeEditorContext &parentContext, FormMode formMode)
bool allowCustomUi() const
Returns true if the attribute editor should permit use of custom UI forms.
@ SearchMode
Form values are used for searching/filtering the layer.
@ FixAttributeMode
Fix feature mode, for modifying the feature attributes without saving. The updated feature is availab...
@ IdentifyMode
Identify the feature.
@ SingleEditMode
Single edit mode, for editing a single feature.
@ AggregateSearchMode
Form is in aggregate search mode, show each widget in this mode.
@ MultiEditMode
Multi edit mode, for editing fields of multiple features at once.
@ PreviewMode
Preview mode, for previewing attribute configurations.
void setAttributeFormMode(const Mode &attributeFormMode)
Set attributeFormMode for the edited form.
QgsFeature formFeature() const
Returns current feature from the currently edited form or table row.
void setAllowCustomUi(bool allow)
Sets whether the attribute editor should permit use of custom UI forms.
const QgsAttributeEditorContext * parentContext() const
const QgsRelation & relation() const
Returns the attribute relation.
Mode attributeFormMode() const
Returns current attributeFormMode.
void setDistanceArea(const QgsDistanceArea &distanceArea)
Sets distance area object, distanceArea, for area/length calculations.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
Map canvas is a class for displaying all GIS data types on a canvas.
A bar for displaying non-blocking messages to the user.
static QgsProject * instance()
Returns the QgsProject singleton instance.
Represents a relationship between two vector layers.
Definition qgsrelation.h:42
Used to handle basic editing operations on vector layers.
Represents a vector layer which manages a vector based dataset.