@@ -44,6 +44,8 @@ QgsVisibilityPresets::QgsVisibilityPresets()
44
44
mMenu ->addAction ( QgisApp::instance ()->actionHideSelectedLayers () );
45
45
mMenu ->addSeparator ();
46
46
47
+ mReplaceMenu = new QMenu ( tr ( " Replace Preset" ) );
48
+ mMenu ->addMenu ( mReplaceMenu );
47
49
mActionAddPreset = mMenu ->addAction ( tr ( " Add Preset..." ), this , SLOT ( addPreset () ) );
48
50
mMenuSeparator = mMenu ->addSeparator ();
49
51
@@ -168,6 +170,15 @@ void QgsVisibilityPresets::presetTriggerred()
168
170
applyState ( actionPreset->text () );
169
171
}
170
172
173
+ void QgsVisibilityPresets::replaceTriggerred ()
174
+ {
175
+ QAction* actionPreset = qobject_cast<QAction*>( sender () );
176
+ if ( !actionPreset )
177
+ return ;
178
+
179
+ // adding preset with same name is effectively a replace
180
+ addPreset ( actionPreset->text () );
181
+ }
171
182
172
183
void QgsVisibilityPresets::applyStateToLayerTreeGroup ( QgsLayerTreeGroup* parent, const QgsVisibilityPresetCollection::PresetRecord& rec )
173
184
{
@@ -245,6 +256,9 @@ void QgsVisibilityPresets::menuAboutToShow()
245
256
{
246
257
qDeleteAll ( mMenuPresetActions );
247
258
mMenuPresetActions .clear ();
259
+ mReplaceMenu ->clear ();
260
+ qDeleteAll ( mMenuReplaceActions );
261
+ mMenuReplaceActions .clear ();
248
262
249
263
QgsVisibilityPresetCollection::PresetRecord rec = currentState ();
250
264
bool hasCurrent = false ;
@@ -260,8 +274,14 @@ void QgsVisibilityPresets::menuAboutToShow()
260
274
}
261
275
connect ( a, SIGNAL ( triggered () ), this , SLOT ( presetTriggerred () ) );
262
276
mMenuPresetActions .append ( a );
277
+
278
+ QAction* replaceAction = new QAction ( grpName, mReplaceMenu );
279
+ replaceAction->setEnabled ( !a->isChecked () ); // can't replace current preset
280
+ connect ( replaceAction, SIGNAL ( triggered () ), this , SLOT ( replaceTriggerred () ) );
281
+ mReplaceMenu ->addAction ( replaceAction );
263
282
}
264
283
mMenu ->insertActions ( mMenuSeparator , mMenuPresetActions );
284
+ mReplaceMenu ->addActions ( mMenuReplaceActions );
265
285
266
286
mActionAddPreset ->setEnabled ( !hasCurrent );
267
287
mActionRemoveCurrentPreset ->setEnabled ( hasCurrent );
0 commit comments