Skip to content

Commit 0df7102

Browse files
committed
Add Replace Preset option to presets menu
1 parent 415aa83 commit 0df7102

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/app/qgsvisibilitypresets.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ QgsVisibilityPresets::QgsVisibilityPresets()
4444
mMenu->addAction( QgisApp::instance()->actionHideSelectedLayers() );
4545
mMenu->addSeparator();
4646

47+
mReplaceMenu = new QMenu( tr( "Replace Preset" ) );
48+
mMenu->addMenu( mReplaceMenu );
4749
mActionAddPreset = mMenu->addAction( tr( "Add Preset..." ), this, SLOT( addPreset() ) );
4850
mMenuSeparator = mMenu->addSeparator();
4951

@@ -168,6 +170,15 @@ void QgsVisibilityPresets::presetTriggerred()
168170
applyState( actionPreset->text() );
169171
}
170172

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+
}
171182

172183
void QgsVisibilityPresets::applyStateToLayerTreeGroup( QgsLayerTreeGroup* parent, const QgsVisibilityPresetCollection::PresetRecord& rec )
173184
{
@@ -245,6 +256,9 @@ void QgsVisibilityPresets::menuAboutToShow()
245256
{
246257
qDeleteAll( mMenuPresetActions );
247258
mMenuPresetActions.clear();
259+
mReplaceMenu->clear();
260+
qDeleteAll( mMenuReplaceActions );
261+
mMenuReplaceActions.clear();
248262

249263
QgsVisibilityPresetCollection::PresetRecord rec = currentState();
250264
bool hasCurrent = false;
@@ -260,8 +274,14 @@ void QgsVisibilityPresets::menuAboutToShow()
260274
}
261275
connect( a, SIGNAL( triggered() ), this, SLOT( presetTriggerred() ) );
262276
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 );
263282
}
264283
mMenu->insertActions( mMenuSeparator, mMenuPresetActions );
284+
mReplaceMenu->addActions( mMenuReplaceActions );
265285

266286
mActionAddPreset->setEnabled( !hasCurrent );
267287
mActionRemoveCurrentPreset->setEnabled( hasCurrent );

src/app/qgsvisibilitypresets.h

+5
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ class APP_EXPORT QgsVisibilityPresets : public QObject
6161
//! Handles apply a preset to the map canvas
6262
void presetTriggerred();
6363

64+
//! Handles replacing a preset's state
65+
void replaceTriggerred();
66+
6467
//! Handles removal of current preset from the project's collection
6568
void removeCurrentPreset();
6669

@@ -86,10 +89,12 @@ class APP_EXPORT QgsVisibilityPresets : public QObject
8689
static QgsVisibilityPresets* sInstance;
8790

8891
QMenu* mMenu;
92+
QMenu* mReplaceMenu;
8993
QAction* mMenuSeparator;
9094
QAction* mActionAddPreset;
9195
QAction* mActionRemoveCurrentPreset;
9296
QList<QAction*> mMenuPresetActions;
97+
QList<QAction*> mMenuReplaceActions;
9398
};
9499

95100

0 commit comments

Comments
 (0)