@@ -241,10 +241,6 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
241
241
if ( vlayer->storageType () == QLatin1String ( " Memory storage" ) && mView ->selectedLayerNodes ().count () == 1 )
242
242
duplicateLayersAction->setEnabled ( false );
243
243
244
- // save as vector file
245
- menu->addAction ( tr ( " Save as…" ), QgisApp::instance (), SLOT ( saveAsFile () ) );
246
- menu->addAction ( tr ( " Save as Layer Definition File…" ), QgisApp::instance (), SLOT ( saveAsLayerDefinition () ) );
247
-
248
244
if ( vlayer->dataProvider ()->supportsSubsetString () )
249
245
{
250
246
QAction *action = menu->addAction ( tr ( " &Filter…" ), QgisApp::instance (), SLOT ( layerSubsetString () ) );
@@ -254,11 +250,38 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
254
250
menu->addAction ( actions->actionShowFeatureCount ( menu ) );
255
251
256
252
menu->addSeparator ();
253
+
254
+ // save as vector file
255
+ QMenu *menuExportVector = new QMenu ( tr ( " Export" ), menu );
256
+ QAction *actionSaveAs = new QAction ( tr ( " Save as…" ), menuExportVector );
257
+ QAction *actionSaveAsDefinitionLayer = new QAction ( tr ( " Save as Layer Definition File…" ), menuExportVector );
258
+ connect ( actionSaveAs, &QAction::triggered, QgisApp::instance (), [ = ] { QgisApp::instance ()->saveAsFile (); } );
259
+ menuExportVector->addAction ( actionSaveAs );
260
+ connect ( actionSaveAsDefinitionLayer, &QAction::triggered, QgisApp::instance (), &QgisApp::saveAsLayerDefinition );
261
+ menuExportVector->addAction ( actionSaveAsDefinitionLayer );
262
+ if ( vlayer->isSpatial () )
263
+ {
264
+ QAction *actionSaveStyle = new QAction ( tr ( " Save as QGIS Layer Style File…" ), menuExportVector );
265
+ connect ( actionSaveStyle, &QAction::triggered, QgisApp::instance (), [ = ] { QgisApp::instance ()->saveStyleFile (); } );
266
+ menuExportVector->addAction ( actionSaveStyle );
267
+ }
268
+ menu->addMenu ( menuExportVector );
257
269
}
258
270
else if ( rlayer )
259
271
{
260
- menu->addAction ( tr ( " Save As…" ), QgisApp::instance (), SLOT ( saveAsRasterFile () ) );
261
- menu->addAction ( tr ( " Save As Layer Definition File…" ), QgisApp::instance (), SLOT ( saveAsLayerDefinition () ) );
272
+ QMenu *menuExportRaster = new QMenu ( tr ( " Export" ), menu );
273
+ QAction *actionSaveAs = new QAction ( tr ( " Save as…" ), menuExportRaster );
274
+ QAction *actionSaveAsDefinitionLayer = new QAction ( tr ( " Save as Layer Definition File…" ), menuExportRaster );
275
+ QAction *actionSaveStyle = new QAction ( tr ( " Save as QGIS Layer Style File…" ), menuExportRaster );
276
+ connect ( actionSaveAs, &QAction::triggered, QgisApp::instance (), [ = ] { QgisApp::instance ()->saveAsFile (); } );
277
+ menuExportRaster->addAction ( actionSaveAs );
278
+ connect ( actionSaveAsDefinitionLayer, &QAction::triggered, QgisApp::instance (), &QgisApp::saveAsLayerDefinition );
279
+ menuExportRaster->addAction ( actionSaveAsDefinitionLayer );
280
+ connect ( actionSaveStyle, &QAction::triggered, QgisApp::instance (), [ = ] { QgisApp::instance ()->saveStyleFile (); } );
281
+ menuExportRaster->addAction ( actionSaveStyle );
282
+ menu->addMenu ( menuExportRaster );
283
+
284
+ menu->addSeparator ();
262
285
}
263
286
else if ( layer && layer->type () == QgsMapLayer::PluginLayer && mView ->selectedLayerNodes ().count () == 1 )
264
287
{
0 commit comments