@@ -949,6 +949,7 @@ void QgisApp::createActions()
949949 connect ( mActionAddWfsLayer , SIGNAL ( triggered () ), this , SLOT ( addWfsLayer () ) );
950950 connect ( mActionOpenTable , SIGNAL ( triggered () ), this , SLOT ( attributeTable () ) );
951951 connect ( mActionToggleEditing , SIGNAL ( triggered () ), this , SLOT ( toggleEditing () ) );
952+ connect ( mActionSaveLayerEdits , SIGNAL ( triggered () ), this , SLOT ( saveActiveLayerEdits () ) );
952953 connect ( mActionSaveEdits , SIGNAL ( triggered () ), this , SLOT ( saveEdits () ) );
953954 connect ( mActionSaveAllEdits , SIGNAL ( triggered () ), this , SLOT ( saveAllEdits () ) );
954955 connect ( mActionRollbackEdits , SIGNAL ( triggered () ), this , SLOT ( rollbackEdits () ) );
@@ -1670,6 +1671,7 @@ void QgisApp::setTheme( QString theThemeName )
16701671 mActionSponsors ->setIcon ( QgsApplication::getThemeIcon ( " /mActionHelpSponsors.png" ) );
16711672 mActionDraw ->setIcon ( QgsApplication::getThemeIcon ( " /mActionDraw.png" ) );
16721673 mActionToggleEditing ->setIcon ( QgsApplication::getThemeIcon ( " /mActionToggleEditing.svg" ) );
1674+ mActionSaveLayerEdits ->setIcon ( QgsApplication::getThemeIcon ( " /mActionSaveAllEdits.svg" ) );
16731675 mActionAllEdits ->setIcon ( QgsApplication::getThemeIcon ( " /mActionAllEdits.svg" ) );
16741676 mActionSaveEdits ->setIcon ( QgsApplication::getThemeIcon ( " /mActionSaveEdits.svg" ) );
16751677 mActionSaveAllEdits ->setIcon ( QgsApplication::getThemeIcon ( " /mActionSaveAllEdits.svg" ) );
@@ -5206,6 +5208,11 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
52065208 return res;
52075209}
52085210
5211+ void QgisApp::saveActiveLayerEdits ()
5212+ {
5213+ saveEdits ( activeLayer () );
5214+ }
5215+
52095216void QgisApp::saveEdits ( QgsMapLayer *layer, bool leaveEditable )
52105217{
52115218 QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
@@ -5362,6 +5369,20 @@ bool QgisApp::verifyEditsActionDialog( QString act, QString upon )
53625369
53635370void QgisApp::updateLayerModifiedActions ()
53645371{
5372+ bool enableSaveLayerEdits = false ;
5373+ QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( activeLayer () );
5374+ if ( vlayer )
5375+ {
5376+ QgsVectorDataProvider* dprovider = vlayer->dataProvider ();
5377+ if ( dprovider )
5378+ {
5379+ enableSaveLayerEdits = ( dprovider->capabilities () & QgsVectorDataProvider::ChangeAttributeValues
5380+ && vlayer->isEditable ()
5381+ && vlayer->isModified () );
5382+ }
5383+ }
5384+ mActionSaveLayerEdits ->setEnabled ( enableSaveLayerEdits );
5385+
53655386 mActionSaveEdits ->setEnabled ( mMapLegend && mMapLegend ->selectedLayersEditable ( true ) );
53665387 mActionRollbackEdits ->setEnabled ( mMapLegend && mMapLegend ->selectedLayersEditable ( true ) );
53675388 mActionCancelEdits ->setEnabled ( mMapLegend && mMapLegend ->selectedLayersEditable () );
@@ -7322,6 +7343,7 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
73227343 mActionOpenTable ->setEnabled ( false );
73237344 mActionToggleEditing ->setEnabled ( false );
73247345 mActionToggleEditing ->setChecked ( false );
7346+ mActionSaveLayerEdits ->setEnabled ( false );
73257347 mActionLayerSaveAs ->setEnabled ( false );
73267348 mActionLayerSelectionSaveAs ->setEnabled ( false );
73277349 mActionLayerProperties ->setEnabled ( false );
@@ -7413,13 +7435,15 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
74137435 bool canChangeAttributes = dprovider->capabilities () & QgsVectorDataProvider::ChangeAttributeValues;
74147436 mActionToggleEditing ->setEnabled ( canChangeAttributes && !vlayer->isReadOnly () );
74157437 mActionToggleEditing ->setChecked ( vlayer->isEditable () );
7438+ mActionSaveLayerEdits ->setEnabled ( canChangeAttributes && vlayer->isEditable () && vlayer->isModified () );
74167439 mUndoWidget ->dockContents ()->setEnabled ( vlayer->isEditable () );
74177440 updateUndoActions ();
74187441 }
74197442 else
74207443 {
74217444 mActionToggleEditing ->setEnabled ( false );
74227445 mActionToggleEditing ->setChecked ( false );
7446+ mActionSaveLayerEdits ->setEnabled ( false );
74237447 mUndoWidget ->dockContents ()->setEnabled ( false );
74247448 mActionUndo ->setEnabled ( false );
74257449 mActionRedo ->setEnabled ( false );
@@ -7588,6 +7612,7 @@ void QgisApp::activateDeactivateLayerRelatedActions( QgsMapLayer* layer )
75887612 mActionOpenTable ->setEnabled ( false );
75897613 mActionToggleEditing ->setEnabled ( false );
75907614 mActionToggleEditing ->setChecked ( false );
7615+ mActionSaveLayerEdits ->setEnabled ( false );
75917616 mUndoWidget ->dockContents ()->setEnabled ( false );
75927617 mActionUndo ->setEnabled ( false );
75937618 mActionRedo ->setEnabled ( false );
0 commit comments