QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgslayertreegroup.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayertreegroup.h
3 --------------------------------------
4 Date : May 2014
5 Copyright : (C) 2014 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
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 QGSLAYERTREEGROUP_H
17#define QGSLAYERTREEGROUP_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
21#include "qgslayertreenode.h"
22#include "qgsmaplayerref.h"
23#include "qgsgrouplayer.h"
24
25class QgsMapLayer;
27class QgsGroupLayer;
28
39class CORE_EXPORT QgsLayerTreeGroup : public QgsLayerTreeNode
40{
41 Q_OBJECT
42 public:
43
47 QgsLayerTreeGroup( const QString &name = QString(), bool checked = true );
48
49#ifndef SIP_RUN
51#endif
52
53#ifdef SIP_RUN
54 SIP_PYOBJECT __repr__();
55 % MethodCode
56 QString str = QStringLiteral( "<QgsLayerTreeGroup: %1>" ).arg( sipCpp->name() );
57 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
58 % End
59#endif
60
64 QString name() const override;
65
69 void setName( const QString &n ) override;
70
74 QgsLayerTreeGroup *insertGroup( int index, const QString &name );
75
79 QgsLayerTreeGroup *addGroup( const QString &name );
80
84 QgsLayerTreeLayer *insertLayer( int index, QgsMapLayer *layer );
85
89 QgsLayerTreeLayer *addLayer( QgsMapLayer *layer );
90
94 void insertChildNodes( int index, const QList<QgsLayerTreeNode *> &nodes SIP_TRANSFER );
95
99 void insertChildNode( int index, QgsLayerTreeNode *node SIP_TRANSFER );
100
104 void addChildNode( QgsLayerTreeNode *node SIP_TRANSFER );
105
109 void removeChildNode( QgsLayerTreeNode *node );
110
114 void removeLayer( QgsMapLayer *layer );
115
119 void removeChildren( int from, int count );
120
124 void removeChildrenGroupWithoutLayers();
125
129 void removeAllChildren();
130
134 QgsLayerTreeLayer *findLayer( QgsMapLayer *layer ) const;
135
139 QgsLayerTreeLayer *findLayer( const QString &layerId ) const;
140
144 QList<QgsLayerTreeLayer *> findLayers() const;
145
158 void reorderGroupLayers( const QList< QgsMapLayer * > &order );
159
167 QList<QgsMapLayer *> layerOrderRespectingGroupLayers() const SIP_SKIP;
168
172 QStringList findLayerIds() const;
173
177 QgsLayerTreeGroup *findGroup( const QString &name );
178
182 QList<QgsLayerTreeGroup *> findGroups( bool recursive = false ) const;
183
188 static QgsLayerTreeGroup *readXml( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
189
194 static QgsLayerTreeGroup *readXml( QDomElement &element, const QgsProject *project, const QgsReadWriteContext &context ) SIP_FACTORY;
195
199 void writeXml( QDomElement &parentElement, const QgsReadWriteContext &context ) override;
200
205 void readChildrenFromXml( QDomElement &element, const QgsReadWriteContext &context );
206
210 QString dump() const override;
211
215 QgsLayerTreeGroup *clone() const override SIP_FACTORY;
216
220 void resolveReferences( const QgsProject *project, bool looseMatching = false ) override;
221
225 void setItemVisibilityCheckedRecursive( bool checked ) override;
226
230 bool isMutuallyExclusive() const;
231
237 void setIsMutuallyExclusive( bool enabled, int initialChildIndex = -1 );
238
247 QgsGroupLayer *groupLayer();
248
260 void setGroupLayer( QgsGroupLayer *layer );
261
276 QgsGroupLayer *convertToGroupLayer( const QgsGroupLayer::LayerOptions &options ) SIP_FACTORY;
277
278 protected slots:
279
280 void nodeVisibilityChanged( QgsLayerTreeNode *node );
281
282 protected:
283
287 void updateChildVisibilityMutuallyExclusive();
288
289 QString mName;
290
291 bool mChangingChildVisibility = false;
292
294 bool mMutuallyExclusive = false;
295
300 int mMutuallyExclusiveChildIndex = -1;
301
303 virtual void makeOrphan() override SIP_SKIP;
304
305 private:
306
307#ifdef SIP_RUN
308
312 QgsLayerTreeGroup( const QgsLayerTreeGroup &other );
313#endif
314
315 QgsLayerTreeGroup &operator= ( const QgsLayerTreeGroup & ) = delete;
316
317 void init();
318 void updateGroupLayers();
319 void refreshParentGroupLayerMembers();
320
321 QgsMapLayerRef mGroupLayer;
322};
323
324
325#endif // QGSLAYERTREEGROUP_H
A map layer which consists of a set of child layers, where all component layers are rendered as a sin...
Definition: qgsgrouplayer.h:42
Layer tree group node serves as a container for layers and further groups.
Layer tree node points to a map layer.
This class is a base class for nodes in a layer tree.
virtual void setName(const QString &name)=0
Set name of the node.
virtual void makeOrphan()
Sets parent to nullptr and disconnects all external and forwarded signals.
virtual QString dump() const =0
Returns string with layer tree structure. For debug purposes only.
virtual void writeXml(QDomElement &parentElement, const QgsReadWriteContext &context)=0
Write layer tree to XML.
static QgsLayerTreeNode * readXml(QDomElement &element, const QgsReadWriteContext &context)
Read layer tree from XML.
virtual QString name() const =0
Returns name of the node.
virtual void setItemVisibilityCheckedRecursive(bool checked)
Check or uncheck a node and all its children (taking into account exclusion rules)
virtual QgsLayerTreeNode * clone() const =0
Create a copy of the node. Returns new instance.
virtual void resolveReferences(const QgsProject *project, bool looseMatching=false)=0
Turn textual references to layers into map layer object from project.
Base class for all map layer types.
Definition: qgsmaplayer.h:75
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.
#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
Setting options for loading group layers.
Definition: qgsgrouplayer.h:52