54 QAction *a =
new QAction(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionInOverview.svg" ) ), tr(
"&Show in Overview" ), parent );
56 a->setCheckable(
true );
57 a->setChecked( node->
customProperty( QStringLiteral(
"overview" ), 0 ).toInt() );
69 text = tr(
"Re&name Group" );
71 text = tr(
"Re&name Layer" );
73 QAction *a =
new QAction( text, parent );
84 QAction *a =
new QAction( tr(
"Show Feature Count" ), parent );
86 a->setCheckable(
true );
87 a->setChecked( node->
customProperty( QStringLiteral(
"showFeatureCount" ), 0 ).toInt() );
94 tr(
"&Zoom to Layer" ), parent );
95 a->setData( QVariant::fromValue( reinterpret_cast<void *>( canvas ) ) );
103 tr(
"&Zoom to Selection" ), parent );
104 a->setData( QVariant::fromValue( reinterpret_cast<void *>( canvas ) ) );
112 tr(
"&Zoom to Group" ), parent );
113 a->setData( QVariant::fromValue( reinterpret_cast<void *>( canvas ) ) );
120 QAction *a =
new QAction( tr(
"&Move to Top-level" ), parent );
129 QAction *a =
new QAction( tr(
"Move Out of &Group" ), parent );
136 QAction *a =
new QAction( tr(
"Move to &Top" ), parent );
143 QAction *a =
new QAction( tr(
"&Group Selected" ), parent );
154 QAction *a =
new QAction( tr(
"Mutually Exclusive Group" ), parent );
155 a->setCheckable(
true );
167 QAction *a =
new QAction( tr(
"Check and All its Children (⌘-click)" ), parent );
169 QAction *a =
new QAction( tr(
"Check and All its Children (Ctrl-click)" ), parent );
171 connect( a, &QAction::triggered,
this, &QgsLayerTreeViewDefaultActions::checkAndAllChildren );
181 QAction *a =
new QAction( tr(
"Uncheck and All its Children (⌘-click)" ), parent );
183 QAction *a =
new QAction( tr(
"Uncheck and All its Children (Ctrl-click)" ), parent );
185 connect( a, &QAction::triggered,
this, &QgsLayerTreeViewDefaultActions::uncheckAndAllChildren );
194 QAction *a =
new QAction( tr(
"Check and All its Parents" ), parent );
195 connect( a, &QAction::triggered,
this, &QgsLayerTreeViewDefaultActions::checkAndAllParents );
199 void QgsLayerTreeViewDefaultActions::checkAndAllChildren()
207 void QgsLayerTreeViewDefaultActions::uncheckAndAllChildren()
215 void QgsLayerTreeViewDefaultActions::checkAndAllParents()
252 int newValue = node->
customProperty( QStringLiteral(
"overview" ), 0 ).toInt();
263 int newValue = node->
customProperty( QStringLiteral(
"showFeatureCount" ), 0 ).toInt();
275 QList<QgsMapLayer *> layers;
295 QList<QgsMapLayer *> layers;
296 Q_FOREACH (
const QString &layerId, groupNode->
findLayerIds() )
304 QAction *s = qobject_cast<QAction *>( sender() );
306 QApplication::setOverrideCursor( Qt::WaitCursor );
308 QApplication::restoreOverrideCursor();
313 QAction *s = qobject_cast<QAction *>( sender() );
321 QAction *s = qobject_cast<QAction *>( sender() );
323 QApplication::setOverrideCursor( Qt::WaitCursor );
325 QApplication::restoreOverrideCursor();
334 for (
int i = 0; i < layers.size(); ++i )
348 layerExtent = vLayer->
extent();
352 if ( layerExtent.
isNull() )
365 extent.
scale( 1.05 );
376 QString newName = prefix +
'1';
377 for (
int i = 2; parentGroup->
findGroup( newName ); ++i )
378 newName = prefix + QString::number( i );
389 if ( !parentGroup || parentGroup == rootGroup )
405 if ( !parentGroup || parentGroup == rootGroup )
408 while ( tempGroup->
parent() != rootGroup )
413 int insertIdx = rootGroup->
children().indexOf( tempGroup );
422 QMap <QgsLayerTreeGroup *, int> groupInsertIdx;
429 if ( groupInsertIdx.contains( parentGroup ) )
431 insertIdx = groupInsertIdx.value( parentGroup );
439 groupInsertIdx.insert( parentGroup, insertIdx + 1 );
450 int insertIdx = parentGroup->
children().indexOf( nodes[0] );
Layer tree group node serves as a container for layers and further groups.
A rectangle specified with double values.
Base class for all map layer types.
The QgsLayerTreeView class extends QTreeView and provides some additional functionality when working ...
QgsLayerTreeGroup * addGroup(const QString &name)
Append a new group node with given name.
Temporarily sets a cursor override for the QApplication for the lifetime of the object.
void zoomToSelection()
Slot to zoom to selected features of a vector layer.
void setMinimal()
Set a rectangle so that min corner is at max and max corner is at min.
static bool isGroup(QgsLayerTreeNode *node)
Check whether the node is a valid group node.
bool isItemVisibilityUncheckedRecursive() const
Returns whether this node is unchecked and all its children.
void setIsMutuallyExclusive(bool enabled, int initialChildIndex=-1)
Set whether the group is mutually exclusive (only one child can be checked at a time).
void zoomToLayers(QgsMapCanvas *canvas, const QList< QgsMapLayer *> &layers)
QAction * actionZoomToGroup(QgsMapCanvas *canvas, QObject *parent=nullptr)
virtual QgsLayerTreeNode * clone() const =0
Create a copy of the node. Returns new instance.
QAction * actionMoveOutOfGroup(QObject *parent=nullptr)
static QgsLayerTreeGroup * toGroup(QgsLayerTreeNode *node)
Cast node to a group.
QAction * actionCheckAndAllChildren(QObject *parent=nullptr)
Action to check a group and all its children.
QgsLayerTreeViewDefaultActions(QgsLayerTreeView *view)
QAction * actionAddGroup(QObject *parent=nullptr)
void scale(double scaleFactor, const QgsPointXY *c=nullptr)
Scale the rectangle around its center point.
void renameGroupOrLayer()
#define Q_NOWARN_DEPRECATED_PUSH
QAction * actionGroupSelected(QObject *parent=nullptr)
Q_DECL_DEPRECATED void makeTopLevel()
QgsWkbTypes::GeometryType geometryType() const
Returns point, line or polygon.
QAction * actionRemoveGroupOrLayer(QObject *parent=nullptr)
void refresh()
Repaints the canvas map.
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
void removeChildNode(QgsLayerTreeNode *node)
Remove a child node from this group.
bool isVisible() const
Returns whether a node is really visible (ie checked and all its ancestors checked as well) ...
QgsMapLayer * currentLayer() const
Gets currently selected layer. May be null.
QModelIndex node2index(QgsLayerTreeNode *node) const
Returns index for a given node. If the node does not belong to the layer tree, the result is undefine...
Map canvas is a class for displaying all GIS data types on a canvas.
virtual QgsRectangle extent() const
Returns the extent of the layer.
QList< QgsLayerTreeLayer * > selectedLayerNodes() const
Returns list of selected nodes filtered to just layer nodes.
void moveOutOfGroup()
Moves selected layer(s) out of the group(s) and places this/these above the group(s) ...
QAction * actionZoomToSelection(QgsMapCanvas *canvas, QObject *parent=nullptr)
Action to zoom to selected features of a vector layer.
The QgsLayerTreeViewDefaultActions class serves as a factory of actions that can be used together wit...
virtual void updateExtents(bool force=false)
Update the extents for the layer.
virtual void setItemVisibilityCheckedRecursive(bool checked)
Check or uncheck a node and all its children (taking into account exclusion rules) ...
QList< QgsLayerTreeNode * > children()
Gets list of children of the node. Children are owned by the parent.
void removeGroupOrLayer()
QgsRectangle extent() const override
Returns the extent of the layer.
bool isEmpty() const
Returns true if the rectangle is empty.
Q_DECL_DEPRECATED QAction * actionMakeTopLevel(QObject *parent=nullptr)
void mutuallyExclusiveGroup()
Slot to enable/disable mutually exclusive group flag.
QgsLayerTreeNode * parent()
Gets pointer to the parent. If parent is a null pointer, the node is a root node. ...
QgsLayerTreeGroup * currentGroupNode() const
Gets current group node. If a layer is current node, the function will return parent group...
QAction * actionCheckAndAllParents(QObject *parent=nullptr)
Action to check a group and all its parents.
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer. Properties are stored in a map and saved in project file...
QgsRectangle layerExtentToOutputExtent(const QgsMapLayer *layer, QgsRectangle extent) const
transform bounding box from layer's CRS to output CRS
static bool isLayer(const QgsLayerTreeNode *node)
Check whether the node is a valid layer node.
This class is a base class for nodes in a layer tree.
QgsLayerTreeModel * layerTreeModel() const
Gets access to the model casted to QgsLayerTreeModel.
void zoomToSelected(QgsVectorLayer *layer=nullptr)
Zoom to the extent of the selected features of provided (vector) layer.
void setItemVisibilityCheckedParentRecursive(bool checked)
Check or uncheck a node and all its parents.
bool isItemVisibilityCheckedRecursive() const
Returns whether this node is checked and all its children.
QAction * actionZoomToLayer(QgsMapCanvas *canvas, QObject *parent=nullptr)
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
void combineExtentWith(const QgsRectangle &rect)
Expands the rectangle so that it covers both the original rectangle and the given rectangle...
#define Q_NOWARN_DEPRECATED_POP
QAction * actionMutuallyExclusiveGroup(QObject *parent=nullptr)
Action to enable/disable mutually exclusive flag of a group (only one child node may be checked) ...
QList< QgsLayerTreeNode * > selectedNodes(bool skipInternal=false) const
Returns list of selected nodes.
void insertChildNode(int index, QgsLayerTreeNode *node)
Insert existing node at specified position.
QgsLayerTree * rootGroup() const
Returns pointer to the root node of the layer tree. Always a non-null pointer.
QgsLayerTreeGroup * findGroup(const QString &name)
Find group node with specified name.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QString uniqueGroupName(QgsLayerTreeGroup *parentGroup)
bool isNull() const
Test if the rectangle is null (all coordinates zero or after call to setMinimal()).
void addChildNode(QgsLayerTreeNode *node)
Append an existing node.
void setExtent(const QgsRectangle &r, bool magnified=false)
Sets the extent of the map canvas.
QAction * actionMoveToTop(QObject *parent=nullptr)
QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
QStringList findLayerIds() const
Find layer IDs used in all layer nodes.
QAction * actionShowFeatureCount(QObject *parent=nullptr)
QAction * actionRenameGroupOrLayer(QObject *parent=nullptr)
Represents a vector layer which manages a vector based data sets.
QAction * actionUncheckAndAllChildren(QObject *parent=nullptr)
Action to uncheck a group and all its children.
QgsLayerTreeLayer * clone() const override
Create a copy of the node. Returns new instance.
QAction * actionShowInOverview(QObject *parent=nullptr)
void setCustomProperty(const QString &key, const QVariant &value)
Sets a custom property for the node. Properties are stored in a map and saved in project file...
Layer tree node points to a map layer.
void moveToTop()
Moves selected layer(s) and/or group(s) to the top of the layer panel or the top of the group if the ...
QgsLayerTreeNode * currentNode() const
Gets current node. May be null.