QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsgrouplayer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsgrouplayer.h
3 ----------------
4 Date : September 2021
5 Copyright : (C) 2021 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
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 QGSGROUPLAYER_H
19#define QGSGROUPLAYER_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgsmaplayer.h"
24#include "qgsmaplayerrenderer.h"
25#include "qgsmaplayerref.h"
26
27class QgsGroupLayerDataProvider;
28class QgsPaintEffect;
29
41class CORE_EXPORT QgsGroupLayer : public QgsMapLayer
42{
43 Q_OBJECT
44
45 public:
46
52 {
53
57 explicit LayerOptions( const QgsCoordinateTransformContext &transformContext )
58 : transformContext( transformContext )
59 {}
60
65
66 };
67
73 QgsGroupLayer( const QString &name, const QgsGroupLayer::LayerOptions &options );
74 ~QgsGroupLayer() override;
75
76#ifdef SIP_RUN
77 SIP_PYOBJECT __repr__();
78 % MethodCode
79 QString str = QStringLiteral( "<QgsGroupLayer: '%1'>" ).arg( sipCpp->name() );
80 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
81 % End
82#endif
83
84 QgsGroupLayer *clone() const override SIP_FACTORY;
85 QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
86 QgsRectangle extent() const override;
87 void setTransformContext( const QgsCoordinateTransformContext &context ) override;
88 bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
89 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
90 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &, StyleCategories categories = AllStyleCategories ) const override;
91 bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
92 QgsDataProvider *dataProvider() override;
93 const QgsDataProvider *dataProvider() const override SIP_SKIP;
94 QString htmlMetadata() const override;
95 void resolveReferences( QgsProject *project ) override;
96
105 void setChildLayers( const QList< QgsMapLayer * > &layers );
106
112 QList< QgsMapLayer * > childLayers() const;
113
118 QgsPaintEffect *paintEffect() const;
119
127 void setPaintEffect( QgsPaintEffect *effect SIP_TRANSFER );
128
138 void prepareLayersForRemovalFromGroup();
139
140 private:
141
142 QgsGroupLayerDataProvider *mDataProvider = nullptr;
143 QgsCoordinateTransformContext mTransformContext;
144
145 QList< QgsMapLayerRef > mChildren;
146 std::unique_ptr< QgsPaintEffect > mPaintEffect;
147
148};
149
150#ifndef SIP_RUN
152
158class QgsGroupLayerDataProvider : public QgsDataProvider
159{
160 Q_OBJECT
161
162 public:
163 QgsGroupLayerDataProvider( const QgsDataProvider::ProviderOptions &providerOptions,
165 void setCrs( const QgsCoordinateReferenceSystem &crs );
166 QgsCoordinateReferenceSystem crs() const override;
167 QString name() const override;
168 QString description() const override;
169 QgsRectangle extent() const override;
170 bool isValid() const override;
171
172 private:
173
175
176};
178#endif
179
180#endif // QGSGROUPLAYER_H
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for spatial data provider implementations.
QFlags< ReadFlag > ReadFlags
A map layer which consists of a set of child layers, where all component layers are rendered as a sin...
Definition: qgsgrouplayer.h:42
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for all map layer types.
Definition: qgsmaplayer.h:75
QFlags< StyleCategory > StyleCategories
Definition: qgsmaplayer.h:188
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
Base class for visual effects which can be applied to QPicture drawings.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:107
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Contains information about the context of a rendering operation.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:73
#define str(x)
Definition: qgis.cpp:38
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_FACTORY
Definition: qgis_sip.h:76
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.
Setting options for loading group layers.
Definition: qgsgrouplayer.h:52
LayerOptions(const QgsCoordinateTransformContext &transformContext)
Constructor for LayerOptions.
Definition: qgsgrouplayer.h:57
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Definition: qgsgrouplayer.h:64