@@ -293,6 +293,16 @@ void QgsLegendLayerFile::closeTable(bool onlyGeometryWasChanged)
293293}
294294
295295void QgsLegendLayerFile::saveAsShapefile ()
296+ {
297+ saveAsShapefileGeneral (FALSE );
298+ }
299+
300+ void QgsLegendLayerFile::saveSelectionAsShapefile ()
301+ {
302+ saveAsShapefileGeneral (TRUE );
303+ }
304+
305+ void QgsLegendLayerFile::saveAsShapefileGeneral (bool saveOnlySelection)
296306{
297307 if (mLyr .layer ()->type () != QgsMapLayer::VECTOR)
298308 return ;
@@ -333,8 +343,12 @@ void QgsLegendLayerFile::saveAsShapefile()
333343 shapefileName += " .shp" ;
334344 }
335345
346+ QApplication::setOverrideCursor (Qt::waitCursor);
347+
336348 QgsVectorFileWriter::WriterError error;
337- error = QgsVectorFileWriter::writeAsShapefile (vlayer, shapefileName, encoding);
349+ error = QgsVectorFileWriter::writeAsShapefile (vlayer, shapefileName, encoding, saveOnlySelection);
350+
351+ QApplication::restoreOverrideCursor ();
338352
339353 switch (error)
340354 {
@@ -460,6 +474,12 @@ void QgsLegendLayerFile::addToPopupMenu(QMenu& theMenu)
460474 // save as shapefile
461475 theMenu.addAction (tr (" Save as shapefile..." ), this , SLOT (saveAsShapefile ()));
462476
477+ QAction* saveSelectionAction = theMenu.addAction (tr (" Save selection as shapefile..." ), this , SLOT (saveSelectionAsShapefile ()));
478+ if (vlayer->selectedFeatureCount () == 0 )
479+ {
480+ saveSelectionAction->setEnabled (false );
481+ }
482+
463483 theMenu.addSeparator ();
464484 }
465485 else if (lyr->type () == QgsMapLayer::RASTER)
0 commit comments