Skip to content

Commit 04c6007

Browse files
committedDec 3, 2016
[FEATURE] save existing color ramp function
1 parent 37c43df commit 04c6007

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed
 

‎src/gui/qgscolorrampbutton.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
#include "qgsstyle.h"
2222

2323
#include "qgsstylemanagerdialog.h"
24+
#include "qgsstylesavedialog.h"
2425
#include "qgsgradientcolorrampdialog.h"
2526
#include "qgslimitedrandomcolorrampdialog.h"
2627
#include "qgscolorbrewercolorrampdialog.h"
2728
#include "qgscptcitycolorrampdialog.h"
2829
#include "qgspresetcolorrampdialog.h"
2930

3031
#include <QAction>
32+
#include <QMessageBox>
3133
#include <QMouseEvent>
3234
#include <QMenu>
3335
#include <QPainter>
@@ -316,6 +318,11 @@ void QgsColorRampButton::prepareMenu()
316318
editColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
317319
connect( editColorRampAction, &QAction::triggered, this, &QgsColorRampButton::showColorRampDialog );
318320
mMenu->addAction( editColorRampAction );
321+
322+
QAction* saveColorRampAction = new QAction( tr( "Save color ramp..." ), this );
323+
saveColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
324+
connect( saveColorRampAction, &QAction::triggered, this, &QgsColorRampButton::saveColorRamp );
325+
mMenu->addAction( saveColorRampAction );
319326
}
320327

321328
void QgsColorRampButton::loadColorRamp()
@@ -350,6 +357,36 @@ void QgsColorRampButton::createColorRamp()
350357
setColorRampFromName( name );
351358
}
352359

360+
void QgsColorRampButton::saveColorRamp()
361+
{
362+
QgsStyleSaveDialog saveDlg( this, QgsStyle::ColorrampEntity );
363+
if ( !saveDlg.exec() || saveDlg.name().isEmpty() )
364+
{
365+
return;
366+
}
367+
368+
// check if there is no symbol with same name
369+
if ( mStyle->symbolNames().contains( saveDlg.name() ) )
370+
{
371+
int res = QMessageBox::warning( this, tr( "Save color ramp" ),
372+
tr( "Color ramp with name '%1' already exists. Overwrite?" )
373+
.arg( saveDlg.name() ),
374+
QMessageBox::Yes | QMessageBox::No );
375+
if ( res != QMessageBox::Yes )
376+
{
377+
return;
378+
}
379+
mStyle->removeColorRamp( saveDlg.name() );
380+
}
381+
382+
QStringList colorRampTags = saveDlg.tags().split( ',' );
383+
384+
// add new symbol to style and re-populate the list
385+
QgsColorRamp* savedColorRamp = colorRamp();
386+
mStyle->addColorRamp( saveDlg.name(), savedColorRamp );
387+
mStyle->saveColorRamp( saveDlg.name(), savedColorRamp, saveDlg.isFavorite(), colorRampTags );
388+
}
389+
353390
void QgsColorRampButton::invertColorRamp()
354391
{
355392
mColorRamp->invert();

‎src/gui/qgscolorrampbutton.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,10 @@ class GUI_EXPORT QgsColorRampButton : public QToolButton
286286
*/
287287
void createColorRamp();
288288

289+
/** Creates a new color ramp
290+
*/
291+
void saveColorRamp();
292+
289293
/** Inverts the current color ramp
290294
*/
291295
void invertColorRamp();

‎src/gui/symbology-ng/qgsstylemanagerdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ QString QgsStyleManagerDialog::addColorRampStatic( QWidget* parent, QgsStyle* st
469469
{
470470
QStringList rampTypes;
471471
rampTypes << tr( "Gradient" ) << tr( "Random" ) << tr( "ColorBrewer" ) << tr( "Preset colors" );
472-
rampTypes << tr( "cpt-city" ); // todo, only for rasters?
472+
rampTypes << tr( "cpt-city" );
473473
rampType = QInputDialog::getItem( parent, tr( "Color ramp type" ),
474474
tr( "Please select color ramp type:" ), rampTypes, 0, false, &ok );
475475
}

0 commit comments

Comments
 (0)
Please sign in to comment.