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()
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.
QgsRectangle extent() const FINAL
Returns the extent of the layer.
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.