QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgslayertree.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayertree.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 QGSLAYERTREE_H
17#define QGSLAYERTREE_H
18
20#include "qgslayertreegroup.h"
21#include "qgslayertreelayer.h"
22#include "qgslayertreenode.h"
23
32class CORE_EXPORT QgsLayerTree : public QgsLayerTreeGroup
33{
34 Q_OBJECT
35
36 public:
37
42 static inline bool isGroup( QgsLayerTreeNode *node )
43 {
44 return node && node->nodeType() == QgsLayerTreeNode::NodeGroup;
45 }
46
51 static inline bool isLayer( const QgsLayerTreeNode *node )
52 {
53 return node && node->nodeType() == QgsLayerTreeNode::NodeLayer;
54 }
55
61 static inline bool isCustomNode( const QgsLayerTreeNode *node )
62 {
63 return node && node->nodeType() == QgsLayerTreeNode::NodeCustom;
64 }
65
72 {
73 return qobject_cast<QgsLayerTreeGroup *>( node );
74 }
75
82 {
83 return qobject_cast<QgsLayerTreeLayer *>( node );
84 }
85
91 static inline const QgsLayerTreeLayer *toLayer( const QgsLayerTreeNode *node ) SIP_SKIP
92 {
93 return qobject_cast< const QgsLayerTreeLayer *>( node );
94 }
95
103 {
104 return qobject_cast<QgsLayerTreeCustomNode *>( node );
105 }
106
110 QgsLayerTree();
111
112#ifdef SIP_RUN
113 SIP_PYOBJECT __repr__();
114 % MethodCode
115 // override parent QgsLayerTreeGroup __repr__ and resort back to default repr for QgsLayerTree -- there's no extra useful context we can show
116 QString str = QStringLiteral( "<qgis._core.QgsLayerTree object at 0x%1>" ).arg( reinterpret_cast<quintptr>( sipCpp ), 2 * QT_POINTER_SIZE, 16, QLatin1Char( '0' ) );
117 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
118 % End
119#endif
120
131 QList<QgsMapLayer *> customLayerOrder() const;
132
143 void setCustomLayerOrder( const QList<QgsMapLayer *> &customLayerOrder );
144
155 void setCustomLayerOrder( const QStringList &customLayerOrder ) SIP_PYNAME( setCustomLayerOrderByIds );
156
166 QList<QgsMapLayer *> layerOrder() const;
167
175 bool hasCustomLayerOrder() const;
176
184 void setHasCustomLayerOrder( bool hasCustomLayerOrder );
185
201 QList<QgsLayerTreeNode *> layerAndCustomNodeOrder() const;
202
210 static std::unique_ptr< QgsLayerTree > readXml( const QDomElement &element, const QgsReadWriteContext &context ); // cppcheck-suppress duplInheritedMember
211
217 void readLayerOrderFromXml( const QDomElement &doc );
218
219 void writeXml( QDomElement &parentElement, const QgsReadWriteContext &context ) override;
220
221 QgsLayerTree *clone() const override SIP_FACTORY;
222
227 void clear();
228
229 signals:
230
236
242
250
251 private slots:
252 void nodeAddedChildren( QgsLayerTreeNode *node, int indexFrom, int indexTo );
253 void nodeRemovedChildren();
254
255 private:
256 QgsLayerTree( const QgsLayerTree &other );
257
258 void init();
259
260 void addMissingLayers();
261 QgsWeakMapLayerPointerList mCustomLayerOrder;
262 bool mHasCustomLayerOrder = false;
263
264 QgsLayerTree &operator= ( const QgsLayerTree & ) = delete;
265};
266
267#endif // QGSLAYERTREE_H
Layer tree custom node serves as a node for objects that are not layers nor groups.
void writeXml(QDomElement &parentElement, const QgsReadWriteContext &context) override
Write group (tree) as XML element <layer-tree-group> and add it to the given parent element.
QgsLayerTreeGroup(const QString &name=QString(), bool checked=true)
Constructor.
QgsLayerTreeGroup * clone() const override
Returns a clone of the group.
static QgsLayerTreeGroup * readXml(const QDomElement &element, const QgsReadWriteContext &context)
Read group (tree) from XML element <layer-tree-group> and return the newly created group (or nullptr ...
Layer tree node points to a map layer.
@ NodeCustom
Leaf node pointing to a custom object.
@ NodeGroup
Container of other groups and layers.
@ NodeLayer
Leaf node pointing to a layer.
QgsLayerTreeNode(NodeType t, bool checked=true)
Constructor.
NodeType nodeType() const
Find out about type of the node. It is usually shorter to use convenience functions from QgsLayerTree...
Namespace with helper functions for layer tree operations.
bool hasCustomLayerOrder() const
Determines if the layer order should be derived from the layer tree or if a custom override order sha...
void customLayerOrderChanged()
Emitted when the custom layer order has changed.
static QgsLayerTreeLayer * toLayer(QgsLayerTreeNode *node)
Cast node to a layer.
QgsLayerTree()
Create a new empty layer tree.
void hasCustomLayerOrderChanged(bool hasCustomLayerOrder)
Emitted when the hasCustomLayerOrder flag changes.
static bool isLayer(const QgsLayerTreeNode *node)
Check whether the node is a valid layer node.
static const QgsLayerTreeLayer * toLayer(const QgsLayerTreeNode *node)
Cast node to a layer.
static bool isGroup(QgsLayerTreeNode *node)
Check whether the node is a valid group node.
static QgsLayerTreeGroup * toGroup(QgsLayerTreeNode *node)
Cast node to a group.
void layerOrderChanged()
Emitted when the layer order has changed.
static bool isCustomNode(const QgsLayerTreeNode *node)
Check whether the node is a valid custom node.
static QgsLayerTreeCustomNode * toCustomNode(QgsLayerTreeNode *node)
Cast node to a custom node.
A container for the context for various read/write operations on objects.
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_PYNAME(name)
Definition qgis_sip.h:89
#define SIP_FACTORY
Definition qgis_sip.h:84
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.