QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
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 "qgsgrouplayer.h"
22#include "qgslayertreenode.h"
23#include "qgsmaplayerref.h"
24
25class QgsMapLayer;
28class QgsGroupLayer;
29
40class CORE_EXPORT QgsLayerTreeGroup : public QgsLayerTreeNode
41{
42 Q_OBJECT
43 public:
44
48 QgsLayerTreeGroup( const QString &name = QString(), bool checked = true );
49
50#ifndef SIP_RUN
52#endif
53
54#ifdef SIP_RUN
55 SIP_PYOBJECT __repr__();
56 % MethodCode
57 QString str = QStringLiteral( "<QgsLayerTreeGroup: %1>" ).arg( sipCpp->name() );
58 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
59 % End
60#endif
61
65 QString name() const override;
66
70 void setName( const QString &n ) override;
71
75 QgsLayerTreeGroup *insertGroup( int index, const QString &name );
76
80 QgsLayerTreeGroup *addGroup( const QString &name );
81
85 QgsLayerTreeLayer *insertLayer( int index, QgsMapLayer *layer );
86
91
97 QgsLayerTreeCustomNode *insertCustomNode( int index, const QString &id, const QString &name = QString() );
98
105
111 QgsLayerTreeCustomNode *addCustomNode( const QString &id, const QString &name = QString() );
112
116 void insertChildNodes( int index, const QList<QgsLayerTreeNode *> &nodes SIP_TRANSFER );
117
121 void insertChildNode( int index, QgsLayerTreeNode *node SIP_TRANSFER );
122
127
131 void removeChildNode( QgsLayerTreeNode *node );
132
136 void removeLayer( QgsMapLayer *layer );
137
145 void removeCustomNode( const QString &id );
146
150 void removeChildren( int from, int count );
151
156
160 void removeAllChildren();
161
165 QgsLayerTreeLayer *findLayer( QgsMapLayer *layer ) const;
166
170 QgsLayerTreeLayer *findLayer( const QString &layerId ) const;
171
177 QList<QgsLayerTreeLayer *> findLayers() const;
178
184 QgsLayerTreeCustomNode *findCustomNode( const QString &id ) const;
185
192 QList<QgsLayerTreeNode *> findLayersAndCustomNodes() const;
193
208 void reorderGroupLayers( const QList< QgsMapLayer * > &order );
209
225 void reorderGroupLayersAndCustomNodes( const QList< QgsLayerTreeNode * > &order );
226
235 QList<QgsMapLayer *> layerOrderRespectingGroupLayers() const SIP_SKIP;
236
246 QList<QgsLayerTreeNode *> layerAndCustomNodeOrderRespectingGroupLayers() const SIP_SKIP;
247
251 QStringList findLayerIds() const;
252
256 QStringList findCustomNodeIds() const;
257
261 QgsLayerTreeGroup *findGroup( const QString &name );
262
266 QList<QgsLayerTreeGroup *> findGroups( bool recursive = false ) const;
267
272 static QgsLayerTreeGroup *readXml( const QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY; // cppcheck-suppress duplInheritedMember
273
278 static QgsLayerTreeGroup *readXml( const QDomElement &element, const QgsProject *project, const QgsReadWriteContext &context ) SIP_FACTORY;
279
283 void writeXml( QDomElement &parentElement, const QgsReadWriteContext &context ) override;
284
289 void readChildrenFromXml( const QDomElement &element, const QgsReadWriteContext &context );
290
294 QString dump() const override;
295
299 QgsLayerTreeGroup *clone() const override SIP_FACTORY;
300
304 void resolveReferences( const QgsProject *project, bool looseMatching = false ) override;
305
309 void setItemVisibilityCheckedRecursive( bool checked ) override;
310
314 bool isMutuallyExclusive() const;
315
321 void setIsMutuallyExclusive( bool enabled, int initialChildIndex = -1 );
322
332
344 void setGroupLayer( QgsGroupLayer *layer );
345
361
367
373
384
394 bool hasWmsTimeDimension() const;
395
396 protected slots:
397
399
400 protected:
401
406
407 QString mName;
408
410
412 bool mMutuallyExclusive = false;
413
419
421
423 void makeOrphan() override SIP_SKIP;
424
425 private:
426
427#ifdef SIP_RUN
428
432 QgsLayerTreeGroup( const QgsLayerTreeGroup &other );
433#endif
434
435 QgsLayerTreeGroup &operator= ( const QgsLayerTreeGroup & ) = delete;
436
443 static void readLegacyServerProperties( QgsLayerTreeGroup *groupNode );
444
445 void init();
446 void updateGroupLayers();
447 void refreshParentGroupLayerMembers();
448
449 QgsMapLayerRef mGroupLayer;
450
454 std::unique_ptr< QgsMapLayerServerProperties > mServerProperties;
455};
456
457
458#endif // QGSLAYERTREEGROUP_H
A map layer which consists of a set of child layers, where all component layers are rendered as a sin...
Layer tree custom node serves as a node for objects that are not layers nor groups.
QStringList findCustomNodeIds() const
Find custom node IDs.
void insertChildNode(int index, QgsLayerTreeNode *node)
Insert existing node at specified position.
QgsLayerTreeCustomNode * insertCustomNode(int index, const QString &id, const QString &name=QString())
Insert a new custom node with the given id and name at specified index.
QgsLayerTreeCustomNode * findCustomNode(const QString &id) const
Find custom node representing an object specified by its ID.
QgsLayerTreeGroup * findGroup(const QString &name)
Find group node with specified name.
QgsGroupLayer * convertToGroupLayer(const QgsGroupLayer::LayerOptions &options)
Converts the group to a QgsGroupLayer.
void setHasWmsTimeDimension(const bool hasWmsTimeDimension)
Sets whether the WMS time dimension should be computed for this group or not.
QgsLayerTreeGroup * insertGroup(int index, const QString &name)
Insert a new group node with given name at specified position.
void readChildrenFromXml(const QDomElement &element, const QgsReadWriteContext &context)
Read children from XML and append them to the group.
void removeChildNode(QgsLayerTreeNode *node)
Remove a child node from this group.
QList< QgsLayerTreeNode * > findLayersAndCustomNodes() const
Find all layer and custom nodes.
QList< QgsLayerTreeGroup * > findGroups(bool recursive=false) const
Find group layer nodes.
QString name() const override
Returns the group's name.
QgsLayerTreeGroup(const QString &name=QString(), bool checked=true)
Constructor.
QStringList findLayerIds() const
Find layer IDs used in all layer nodes.
QList< QgsMapLayer * > layerOrderRespectingGroupLayers() const
Returns an ordered list of map layers in the group, ignoring any layers which are child layers of Qgs...
void removeCustomNode(const QString &id)
Remove a custom node from this group.
QgsMapLayerServerProperties * serverProperties()
Returns QGIS Server Properties for the layer tree group.
void addChildNode(QgsLayerTreeNode *node)
Append an existing node.
QList< QgsLayerTreeNode * > layerAndCustomNodeOrderRespectingGroupLayers() const
Returns an ordered list of map layers and custom nodes in the group, ignoring any layers which are ch...
void insertChildNodes(int index, const QList< QgsLayerTreeNode * > &nodes)
Insert existing nodes at specified position.
void removeAllChildren()
Remove all child nodes.
bool mMutuallyExclusive
Whether the group is mutually exclusive (i.e. only one child can be checked at a time).
void setIsMutuallyExclusive(bool enabled, int initialChildIndex=-1)
Set whether the group is mutually exclusive (only one child can be checked at a time).
QList< QgsLayerTreeLayer * > findLayers() const
Find all layer nodes.
QgsLayerTreeLayer * findLayer(QgsMapLayer *layer) const
Find layer node representing the map layer.
bool isMutuallyExclusive() const
Returns whether the group is mutually exclusive (only one child can be checked at a time).
QgsLayerTreeCustomNode * addCustomNode(const QString &id, const QString &name=QString())
Append a new custom node with the given id and name.
void updateChildVisibilityMutuallyExclusive()
Set check state of children - if mutually exclusive.
bool hasWmsTimeDimension() const
Returns whether the WMS time dimension should be computed for this group or not.
void setGroupLayer(QgsGroupLayer *layer)
Sets the associated group layer, if the layer tree group will be treated as group layer during map re...
QgsLayerTreeGroup * addGroup(const QString &name)
Append a new group node with given name.
void removeChildren(int from, int count)
Remove child nodes from index "from".
void removeChildrenGroupWithoutLayers()
Remove all child group nodes without layers.
QgsLayerTreeLayer * addLayer(QgsMapLayer *layer)
Append a new layer node for given map layer.
void removeLayer(QgsMapLayer *layer)
Remove map layer's node from this group.
QgsLayerTreeLayer * insertLayer(int index, QgsMapLayer *layer)
Insert a new layer node for given map layer at specified position.
void nodeVisibilityChanged(QgsLayerTreeNode *node)
void reorderGroupLayers(const QList< QgsMapLayer * > &order)
Reorders layers in the group to match the order specified by order.
int mMutuallyExclusiveChildIndex
Keeps track which child has been most recently selected (so if the whole group is unchecked and check...
void reorderGroupLayersAndCustomNodes(const QList< QgsLayerTreeNode * > &order)
Reorders layers and custom nodes in the group to match the order specified by order.
QgsGroupLayer * groupLayer()
Returns a reference to the associated group layer, if the layer tree group will be treated as group l...
Layer tree node points to a map layer.
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.
QgsLayerTreeNode(NodeType t, bool checked=true)
Constructor.
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.
Manages QGIS Server properties for a map layer.
Base class for all map layer types.
Definition qgsmaplayer.h:80
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:109
A container for the context for various read/write operations on objects.
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_FACTORY
Definition qgis_sip.h:84
_LayerRef< QgsMapLayer > QgsMapLayerRef
Setting options for loading group layers.