Skip to content

Commit

Permalink
#9094: Add Ctrl+D and D support for remove layers
Browse files Browse the repository at this point in the history
  • Loading branch information
ahuarte47 committed Dec 17, 2013
1 parent b069aaf commit 7ad1caf
Show file tree
Hide file tree
Showing 3 changed files with 474 additions and 9 deletions.
23 changes: 16 additions & 7 deletions src/app/qgisapp.cpp
Expand Up @@ -4800,7 +4800,7 @@ void QgisApp::layerProperties()
showLayerProperties( activeLayer() );
}

void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent )
void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent, bool promptConfirmation )
{
if ( !layer )
{
Expand Down Expand Up @@ -4845,6 +4845,13 @@ void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent )
return;
}

//display a warning
int numberOfDeletedFeatures = vlayer->selectedFeaturesIds().size();
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 )
{
return;
}

vlayer->beginEditCommand( tr( "Features deleted" ) );
if ( !vlayer->deleteSelectedFeatures() )
{
Expand Down Expand Up @@ -6470,10 +6477,8 @@ void QgisApp::removeAllLayers()
QgsMapLayerRegistry::instance()->removeAllMapLayers();
}

void QgisApp::removeLayer()
void QgisApp::removeLayer( bool promptConfirmation )
{
int numberOfRemovedLayers = 0;

if ( mMapCanvas && mMapCanvas->isDrawing() )
{
return;
Expand All @@ -6489,12 +6494,11 @@ void QgisApp::removeLayer()
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer*>( layer );
if ( vlayer && vlayer->isEditable() && !toggleEditing( vlayer, true ) )
return;

numberOfRemovedLayers++;
}

//display a warning
if ( QMessageBox::warning( this, tr( "Remove layers" ), tr( "Remove %n layer(s)?", "number of layers to remove", numberOfRemovedLayers ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel )
int numberOfRemovedLayers = mMapLegend->selectedLayers().size();
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 )
{
return;
}
Expand Down Expand Up @@ -9052,6 +9056,11 @@ void QgisApp::keyPressEvent( QKeyEvent * e )
{
stopRendering();
}
//remove selected layers
else if ( e->key() == Qt::Key_D )
{
removeLayer( true );
}
#if defined(Q_OS_WIN)&& defined(QGISDEBUG)
else if ( e->key() == Qt::Key_Backslash && e->modifiers() & Qt::ControlModifier )
{
Expand Down
4 changes: 2 additions & 2 deletions src/app/qgisapp.h
Expand Up @@ -577,7 +577,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
void loadGDALSublayers( QString uri, QStringList list );

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

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

0 comments on commit 7ad1caf

Please sign in to comment.