QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
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 
25 class QgsMapLayer;
26 class QgsLayerTreeLayer;
27 class QgsGroupLayer;
28 
39 class 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
50  QgsLayerTreeGroup( const QgsLayerTreeGroup &other );
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 QgsLayerTreeNode * clone() const =0
Create a copy of the node. Returns new instance.
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 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