QGIS API Documentation  3.12.1-BucureČ™ti (121cc00ff0)
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 <QMap>
20 #include <QWidget>
21 #include <QMetaEnum>
22 
23 #include "qgsdistancearea.h"
24 #include "qgsvectorlayertools.h"
25 #include "qgsvectorlayer.h"
26 #include "qgis_gui.h"
27 #include "qgsproject.h"
28 
29 class QgsMapCanvas;
31 class QgsMessageBar;
32 
40 class GUI_EXPORT QgsAttributeEditorContext
41 {
42  Q_GADGET
43 
44  public:
45 
47  enum Mode
48  {
50  AddFeatureMode,
55  IdentifyMode
56  };
57  Q_ENUM( Mode )
58 
59 
63  {
66  Single
67  };
68 
69  enum FormMode
70  {
73  Popup
74  };
75 
77  QgsAttributeEditorContext() = default;
78 
80  : mParentContext( &parentContext )
81  , mVectorLayerTools( parentContext.mVectorLayerTools )
82  , mMapCanvas( parentContext.mMapCanvas )
83  , mMainMessageBar( parentContext.mMainMessageBar )
84  , mCadDockWidget( parentContext.mCadDockWidget )
85  , mDistanceArea( parentContext.mDistanceArea )
86  , mFormFeature( parentContext.mFormFeature )
87  , mFormMode( formMode )
88  {
89  Q_ASSERT( parentContext.vectorLayerTools() );
90  }
91 
92  QgsAttributeEditorContext( const QgsAttributeEditorContext &parentContext, const QgsRelation &relation, RelationMode relationMode, FormMode widgetMode )
93  : mParentContext( &parentContext )
94  , mVectorLayerTools( parentContext.mVectorLayerTools )
95  , mMapCanvas( parentContext.mMapCanvas )
96  , mMainMessageBar( parentContext.mMainMessageBar )
97  , mCadDockWidget( parentContext.mCadDockWidget )
98  , mDistanceArea( parentContext.mDistanceArea )
99  , mRelation( relation )
100  , mRelationMode( relationMode )
101  , mFormMode( widgetMode )
102  {
103  Q_ASSERT( parentContext.vectorLayerTools() );
104  }
105 
111  inline void setDistanceArea( const QgsDistanceArea &distanceArea )
112  {
113  if ( mLayer )
114  {
115  mDistanceArea = distanceArea;
116  mDistanceArea.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
117  }
118  }
119 
125  inline const QgsDistanceArea &distanceArea() const { return mDistanceArea; }
126 
132  inline void setMapCanvas( QgsMapCanvas *mapCanvas ) { mMapCanvas = mapCanvas; }
133 
139  inline QgsMapCanvas *mapCanvas() const { return mMapCanvas; }
140 
147  void setCadDockWidget( QgsAdvancedDigitizingDockWidget *cadDockWidget );
148 
155  QgsAdvancedDigitizingDockWidget *cadDockWidget() const { return mCadDockWidget; }
156 
163  inline void setVectorLayerTools( QgsVectorLayerTools *vlTools ) { mVectorLayerTools = vlTools; }
164  // TODO QGIS 4.0 - rename vlTools to tools
165 
171  inline const QgsVectorLayerTools *vectorLayerTools() const { return mVectorLayerTools; }
172 
181  inline void setRelation( const QgsRelation &relation, RelationMode mode ) { mRelation = relation; mRelationMode = mode; }
182 
189  inline const QgsRelation &relation() const { return mRelation; }
190 
197  inline RelationMode relationMode() const { return mRelationMode; }
198 
203  inline FormMode formMode() const { return mFormMode; }
204 
211  inline void setFormMode( FormMode mode ) { mFormMode = mode; }
212 
218  bool allowCustomUi() const { return mAllowCustomUi; }
219 
227  void setAllowCustomUi( bool allow ) { mAllowCustomUi = allow; }
228 
229  inline const QgsAttributeEditorContext *parentContext() const { return mParentContext; }
230 
236  QgsFeature formFeature() const { return mFormFeature; }
237 
243  void setFormFeature( const QgsFeature &feature ) { mFormFeature = feature ; }
244 
249  Mode attributeFormMode() const { return mAttributeFormMode; }
250 
255  void setAttributeFormMode( const Mode &attributeFormMode ) { mAttributeFormMode = attributeFormMode; }
256 
261  QString attributeFormModeString() const
262  {
263  const QMetaEnum metaEnum( QMetaEnum::fromType<Mode>() );
264  return metaEnum.valueToKey( static_cast<int>( mAttributeFormMode ) );
265  }
266 
271  void setMainMessageBar( QgsMessageBar *messageBar ) { mMainMessageBar = messageBar; }
272 
277  QgsMessageBar *mainMessageBar() { return mMainMessageBar; }
278 
279  private:
280  const QgsAttributeEditorContext *mParentContext = nullptr;
281  QgsVectorLayer *mLayer = nullptr;
282  QgsVectorLayerTools *mVectorLayerTools = nullptr;
283  QgsMapCanvas *mMapCanvas = nullptr;
284  QgsMessageBar *mMainMessageBar = nullptr;
285  QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr;
286  QgsDistanceArea mDistanceArea;
287  QgsRelation mRelation;
288  RelationMode mRelationMode = Undefined;
290  QgsFeature mFormFeature;
291  FormMode mFormMode = Embed;
292  bool mAllowCustomUi = true;
293  Mode mAttributeFormMode = SingleEditMode;
294 };
295 
296 #endif // QGSATTRIBUTEEDITORCONTEXT_H
Methods in this class are used to handle basic operations on vector layers.
const QgsVectorLayerTools * vectorLayerTools() const
Returns the associated vector layer tools.
void setAttributeFormMode(const Mode &attributeFormMode)
Set attributeFormMode for the edited form.
Form is in aggregate search mode, show each widget in this mode.
This class contains context information for attribute editor widgets.
QgsAttributeEditorContext(const QgsAttributeEditorContext &parentContext, FormMode formMode)
void setMapCanvas(QgsMapCanvas *mapCanvas)
Sets the associated map canvas, mapCanvas, (e.g.
When showing a list of features (e.g. houses as an embedded form in a district form) ...
A bar for displaying non-blocking messages to the user.
Definition: qgsmessagebar.h:45
QgsMessageBar * mainMessageBar()
Returns the main message bar.
QgsAttributeEditorContext(const QgsAttributeEditorContext &parentContext, const QgsRelation &relation, RelationMode relationMode, FormMode widgetMode)
void setVectorLayerTools(QgsVectorLayerTools *vlTools)
Sets the associated vector layer tools.
Multi edit mode, for editing fields of multiple features at once.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:55
void setAllowCustomUi(bool allow)
Sets whether the attribute editor should permit use of custom UI forms.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:75
void setFormFeature(const QgsFeature &feature)
Set current feature for the currently edited form or table row.
This context is not defined by a relation.
RelationMode
Determines in which direction a relation was resolved.
const QgsRelation & relation() const
Returns the attribute relation.
void setDistanceArea(const QgsDistanceArea &distanceArea)
Sets distance area object, distanceArea, for area/length calculations.
QgsFeature formFeature() const
Returns current feature from the currently edited form or table row.
QgsAdvancedDigitizingDockWidget * cadDockWidget() const
Returns the associated CAD dock widget (e.g.
Mode attributeFormMode() const
Returns current attributeFormMode.
const QgsAttributeEditorContext * parentContext() const
FormMode formMode() const
Returns the form mode.
QgsCoordinateTransformContext transformContext
Definition: qgsproject.h:98
A general purpose distance and area calculator, capable of performing ellipsoid based calculations...
void setFormMode(FormMode mode)
Sets the form mode.
bool allowCustomUi() const
Returns true if the attribute editor should permit use of custom UI forms.
Single edit mode, for editing a single feature.
static QgsProject * instance()
Returns the QgsProject singleton instance.
Definition: qgsproject.cpp:450
QString attributeFormModeString() const
Returns given attributeFormMode as string.
const QgsDistanceArea & distanceArea() const
Returns the distance area object used for area/length calculations.
void setSourceCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets source spatial reference system crs.
RelationMode relationMode() const
Returns the attribute relation mode.
Form values are used for searching/filtering the layer.
The QgsAdvancedDigitizingDockWidget class is a dockable widget used to handle the CAD tools on top of...
Represents a vector layer which manages a vector based data sets.
void setRelation(const QgsRelation &relation, RelationMode mode)
Set attribute relation and mode.
void setMainMessageBar(QgsMessageBar *messageBar)
Set current messageBar as the main message bar.
QgsMapCanvas * mapCanvas() const
Returns the associated map canvas (e.g.
A form was embedded as a widget on another form.