Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add Replace Preset option to presets menu
  • Loading branch information
nyalldawson committed Aug 20, 2015
1 parent 415aa83 commit 0df7102
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/app/qgsvisibilitypresets.cpp
Expand Up @@ -44,6 +44,8 @@ QgsVisibilityPresets::QgsVisibilityPresets()
mMenu->addAction( QgisApp::instance()->actionHideSelectedLayers() );
mMenu->addSeparator();

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

Expand Down Expand Up @@ -168,6 +170,15 @@ void QgsVisibilityPresets::presetTriggerred()
applyState( actionPreset->text() );
}

void QgsVisibilityPresets::replaceTriggerred()
{
QAction* actionPreset = qobject_cast<QAction*>( sender() );
if ( !actionPreset )
return;

//adding preset with same name is effectively a replace
addPreset( actionPreset->text() );
}

void QgsVisibilityPresets::applyStateToLayerTreeGroup( QgsLayerTreeGroup* parent, const QgsVisibilityPresetCollection::PresetRecord& rec )
{
Expand Down Expand Up @@ -245,6 +256,9 @@ void QgsVisibilityPresets::menuAboutToShow()
{
qDeleteAll( mMenuPresetActions );
mMenuPresetActions.clear();
mReplaceMenu->clear();
qDeleteAll( mMenuReplaceActions );
mMenuReplaceActions.clear();

QgsVisibilityPresetCollection::PresetRecord rec = currentState();
bool hasCurrent = false;
Expand All @@ -260,8 +274,14 @@ void QgsVisibilityPresets::menuAboutToShow()
}
connect( a, SIGNAL( triggered() ), this, SLOT( presetTriggerred() ) );
mMenuPresetActions.append( a );

QAction* replaceAction = new QAction( grpName, mReplaceMenu );
replaceAction->setEnabled( !a->isChecked() ); //can't replace current preset
connect( replaceAction, SIGNAL( triggered() ), this, SLOT( replaceTriggerred() ) );
mReplaceMenu->addAction( replaceAction );
}
mMenu->insertActions( mMenuSeparator, mMenuPresetActions );
mReplaceMenu->addActions( mMenuReplaceActions );

mActionAddPreset->setEnabled( !hasCurrent );
mActionRemoveCurrentPreset->setEnabled( hasCurrent );
Expand Down
5 changes: 5 additions & 0 deletions src/app/qgsvisibilitypresets.h
Expand Up @@ -61,6 +61,9 @@ class APP_EXPORT QgsVisibilityPresets : public QObject
//! Handles apply a preset to the map canvas
void presetTriggerred();

//! Handles replacing a preset's state
void replaceTriggerred();

//! Handles removal of current preset from the project's collection
void removeCurrentPreset();

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

QMenu* mMenu;
QMenu* mReplaceMenu;
QAction* mMenuSeparator;
QAction* mActionAddPreset;
QAction* mActionRemoveCurrentPreset;
QList<QAction*> mMenuPresetActions;
QList<QAction*> mMenuReplaceActions;
};


Expand Down

0 comments on commit 0df7102

Please sign in to comment.