QGIS API Documentation  3.17.0-Master (3b262f2a79)
qgslayertreelayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayertreelayer.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 QGSLAYERTREELAYER_H
17 #define QGSLAYERTREELAYER_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgslayertreenode.h"
22 #include "qgsmaplayerref.h"
23 #include "qgsreadwritecontext.h"
24 #include "qgslegendpatchshape.h"
25 
26 class QgsMapLayer;
27 
43 class CORE_EXPORT QgsLayerTreeLayer : public QgsLayerTreeNode
44 {
45  Q_OBJECT
46  public:
47  explicit QgsLayerTreeLayer( QgsMapLayer *layer );
48 
49 #ifndef SIP_RUN
50  QgsLayerTreeLayer( const QgsLayerTreeLayer &other );
51 #endif
52 
56  explicit QgsLayerTreeLayer( const QString &layerId, const QString &name = QString(), const QString &source = QString(), const QString &provider = QString() );
57 
63  QString layerId() const { return mRef.layerId; }
64 
74  QgsMapLayer *layer() const { return mRef.get(); }
75 
83  QString name() const override;
84 
92  void setName( const QString &n ) override;
93 
99  void setUseLayerName( bool use = true );
100 
105  bool useLayerName() const;
106 
111  static QgsLayerTreeLayer *readXml( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
112 
118  static QgsLayerTreeLayer *readXml( QDomElement &element, const QgsProject *project, const QgsReadWriteContext &context ) SIP_FACTORY;
119 
120  void writeXml( QDomElement &parentElement, const QgsReadWriteContext &context ) override;
121 
122  QString dump() const override;
123 
124  QgsLayerTreeLayer *clone() const override SIP_FACTORY;
125 
130  void resolveReferences( const QgsProject *project, bool looseMatching = false ) override;
131 
137  void setLabelExpression( const QString &expression );
138 
144  QString labelExpression() const { return mLabelExpression; }
145 
152  QgsLegendPatchShape patchShape() const;
153 
160  void setPatchShape( const QgsLegendPatchShape &shape );
161 
171  QSizeF patchSize() const { return mPatchSize; }
172 
182  void setPatchSize( QSizeF size ) { mPatchSize = size; }
183 
190  {
194  };
195 
204  LegendNodesSplitBehavior legendSplitBehavior() const { return mSplitBehavior; }
205 
214  void setLegendSplitBehavior( LegendNodesSplitBehavior behavior ) { mSplitBehavior = behavior; }
215 
216  signals:
217 
221  void layerLoaded();
222 
227  void layerWillBeUnloaded();
228 
229  protected:
230  void attachToLayer();
231 
235  QString mLayerName;
238 
240  bool mUseLayerName = true;
241 
242  private slots:
243 
248  void layerNameChanged();
249 
254  void layerWillBeDeleted();
255 
256  private:
257 
258 #ifdef SIP_RUN
259 
263  QgsLayerTreeLayer( const QgsLayerTreeLayer &other );
264 #endif
265 
266  QgsLegendPatchShape mPatchShape;
267  QSizeF mPatchSize;
268  LegendNodesSplitBehavior mSplitBehavior = UseDefaultLegendSetting;
269 
270  QgsLayerTreeLayer &operator=( const QgsLayerTreeLayer & ) = delete;
271 };
272 
273 
274 
275 #endif // QGSLAYERTREELAYER_H
The class is used as a container of context for various read/write operations on other objects...
QSizeF patchSize() const
Returns the user (overridden) size for the legend node.
Base class for all map layer types.
Definition: qgsmaplayer.h:84
virtual QString name() const =0
Returns name of the node.
QString labelExpression() const
Returns the expression member of the LayerTreeNode.
virtual void setName(const QString &name)=0
Set name of the node.
virtual void writeXml(QDomElement &parentElement, const QgsReadWriteContext &context)=0
Write layer tree to XML.
virtual QgsLayerTreeNode * clone() const =0
Create a copy of the node. Returns new instance.
virtual QString dump() const =0
Returns string with layer tree structure. For debug purposes only.
static QgsLayerTreeNode * readXml(QDomElement &element, const QgsReadWriteContext &context)
Read layer tree from XML.
Inherit default legend column splitting setting.
QString layerId() const
Returns the ID for the map layer associated with this node.
Represents a patch shape for use in map legends.
QgsMapLayerRef mRef
Weak reference to the layer (or just it's ID if the reference is not resolved yet) ...
void setPatchSize(QSizeF size)
Sets the user (overridden) size for the legend node.
QString mLayerName
Layer name - only used if layer does not exist or if mUseLayerName is false.
Prevent splitting node's legend nodes across multiple columns.
This class is a base class for nodes in a layer tree.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts, annotations, canvases, etc.
Definition: qgsproject.h:94
#define SIP_FACTORY
Definition: qgis_sip.h:76
LegendNodesSplitBehavior
Legend node column split behavior.
QgsMapLayer * layer() const
Returns the map layer associated with this node.
Allow splitting node's legend nodes across multiple columns.
QString mLabelExpression
Expression to evaluate in the legend.
virtual void resolveReferences(const QgsProject *project, bool looseMatching=false)=0
Turn textual references to layers into map layer object from project.
LegendNodesSplitBehavior legendSplitBehavior() const
Returns the column split behavior for the node.
Layer tree node points to a map layer.
void setLegendSplitBehavior(LegendNodesSplitBehavior behavior)
Sets the column split behavior for the node.