Skip to content

Commit 7ad1caf

Browse files
committed
#9094: Add Ctrl+D and D support for remove layers
1 parent b069aaf commit 7ad1caf

File tree

3 files changed

+474
-9
lines changed

3 files changed

+474
-9
lines changed

src/app/qgisapp.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4800,7 +4800,7 @@ void QgisApp::layerProperties()
48004800
showLayerProperties( activeLayer() );
48014801
}
48024802

4803-
void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent )
4803+
void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent, bool promptConfirmation )
48044804
{
48054805
if ( !layer )
48064806
{
@@ -4845,6 +4845,13 @@ void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent )
48454845
return;
48464846
}
48474847

4848+
//display a warning
4849+
int numberOfDeletedFeatures = vlayer->selectedFeaturesIds().size();
4850+
if ( promptConfirmation && QMessageBox::warning( parent, tr( "Delete features" ), tr( "Delete %n feature(s)?", "number of features to delete", numberOfDeletedFeatures ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel )
4851+
{
4852+
return;
4853+
}
4854+
48484855
vlayer->beginEditCommand( tr( "Features deleted" ) );
48494856
if ( !vlayer->deleteSelectedFeatures() )
48504857
{
@@ -6470,10 +6477,8 @@ void QgisApp::removeAllLayers()
64706477
QgsMapLayerRegistry::instance()->removeAllMapLayers();
64716478
}
64726479

6473-
void QgisApp::removeLayer()
6480+
void QgisApp::removeLayer( bool promptConfirmation )
64746481
{
6475-
int numberOfRemovedLayers = 0;
6476-
64776482
if ( mMapCanvas && mMapCanvas->isDrawing() )
64786483
{
64796484
return;
@@ -6489,12 +6494,11 @@ void QgisApp::removeLayer()
64896494
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer*>( layer );
64906495
if ( vlayer && vlayer->isEditable() && !toggleEditing( vlayer, true ) )
64916496
return;
6492-
6493-
numberOfRemovedLayers++;
64946497
}
64956498

64966499
//display a warning
6497-
if ( QMessageBox::warning( this, tr( "Remove layers" ), tr( "Remove %n layer(s)?", "number of layers to remove", numberOfRemovedLayers ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel )
6500+
int numberOfRemovedLayers = mMapLegend->selectedLayers().size();
6501+
if ( promptConfirmation && QMessageBox::warning( this, tr( "Remove layers" ), tr( "Remove %n layer(s)?", "number of layers to remove", numberOfRemovedLayers ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel )
64986502
{
64996503
return;
65006504
}
@@ -9052,6 +9056,11 @@ void QgisApp::keyPressEvent( QKeyEvent * e )
90529056
{
90539057
stopRendering();
90549058
}
9059+
//remove selected layers
9060+
else if ( e->key() == Qt::Key_D )
9061+
{
9062+
removeLayer( true );
9063+
}
90559064
#if defined(Q_OS_WIN)&& defined(QGISDEBUG)
90569065
else if ( e->key() == Qt::Key_Backslash && e->modifiers() & Qt::ControlModifier )
90579066
{

src/app/qgisapp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
577577
void loadGDALSublayers( QString uri, QStringList list );
578578

579579
/**Deletes the selected attributes for the currently selected vector layer*/
580-
void deleteSelected( QgsMapLayer *layer = 0, QWidget* parent = 0 );
580+
void deleteSelected( QgsMapLayer *layer = 0, QWidget* parent = 0, bool promptConfirmation = false );
581581

582582
//! project was written
583583
void writeProject( QDomDocument & );
@@ -686,7 +686,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
686686
//! Slot to handle user center input;
687687
void userCenter();
688688
//! Remove a layer from the map and legend
689-
void removeLayer();
689+
void removeLayer( bool promptConfirmation = false );
690690
/** Duplicate map layer(s) in legend
691691
* @note added in 1.9 */
692692
void duplicateLayers( const QList<QgsMapLayer *> lyrList = QList<QgsMapLayer *>() );

0 commit comments

Comments
 (0)