Skip to content

Commit 4162c21

Browse files
committedMay 21, 2014
Move to top-level action
1 parent e1a0c21 commit 4162c21

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,6 +2223,11 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
22232223
menu->addAction( actions->actionShowFeatureCount(menu) );
22242224
}
22252225

2226+
if (node->parent() != mView->layerTreeModel()->rootGroup())
2227+
{
2228+
menu->addAction( actions->actionMakeTopLevel(menu) );
2229+
}
2230+
22262231
menu->addAction( actions->actionRemoveGroupOrLayer(menu) );
22272232
menu->addAction( actions->actionRenameGroupOrLayer(menu) );
22282233
}

‎src/gui/layertree/qgslayertreeviewdefaultactions.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ QAction* QgsLayerTreeViewDefaultActions::actionZoomToGroup(QgsMapCanvas* canvas,
8181
return a;
8282
}
8383

84+
QAction* QgsLayerTreeViewDefaultActions::actionMakeTopLevel(QObject* parent)
85+
{
86+
QAction* a = new QAction(tr("&Move to Top-level"), parent);
87+
connect(a, SIGNAL(triggered()), this, SLOT(makeTopLevel()));
88+
return a;
89+
}
90+
8491
void QgsLayerTreeViewDefaultActions::addGroup()
8592
{
8693
QgsLayerTreeGroup* group = mView->currentGroupNode();
@@ -193,3 +200,20 @@ void QgsLayerTreeViewDefaultActions::zoomToLayers(QgsMapCanvas* canvas, const QL
193200
canvas->setExtent( extent );
194201
canvas->refresh();
195202
}
203+
204+
205+
void QgsLayerTreeViewDefaultActions::makeTopLevel()
206+
{
207+
QgsLayerTreeNode* node = mView->currentNode();
208+
if (!node)
209+
return;
210+
211+
QgsLayerTreeGroup* rootGroup = mView->layerTreeModel()->rootGroup();
212+
QgsLayerTreeGroup* parentGroup = qobject_cast<QgsLayerTreeGroup*>(node->parent());
213+
if (!parentGroup || parentGroup == rootGroup)
214+
return;
215+
216+
QgsLayerTreeNode* clonedNode = node->clone();
217+
rootGroup->addChildNode(clonedNode);
218+
parentGroup->removeChildNode(node);
219+
}

‎src/gui/layertree/qgslayertreeviewdefaultactions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class GUI_EXPORT QgsLayerTreeViewDefaultActions : public QObject
2525
QAction* actionZoomToGroup(QgsMapCanvas* canvas, QObject* parent = 0);
2626
// TODO: zoom to selected
2727

28+
QAction* actionMakeTopLevel(QObject* parent = 0);
29+
2830
protected slots:
2931
void addGroup();
3032
void removeGroupOrLayer();
@@ -33,6 +35,7 @@ protected slots:
3335
void showFeatureCount();
3436
void zoomToLayer();
3537
void zoomToGroup();
38+
void makeTopLevel();
3639

3740
protected:
3841
void zoomToLayers(QgsMapCanvas* canvas, const QList<QgsMapLayer*>& layers);

0 commit comments

Comments
 (0)
Please sign in to comment.