|
21 | 21 | #include "qgsstyle.h"
|
22 | 22 |
|
23 | 23 | #include "qgsstylemanagerdialog.h"
|
| 24 | +#include "qgsstylesavedialog.h" |
24 | 25 | #include "qgsgradientcolorrampdialog.h"
|
25 | 26 | #include "qgslimitedrandomcolorrampdialog.h"
|
26 | 27 | #include "qgscolorbrewercolorrampdialog.h"
|
27 | 28 | #include "qgscptcitycolorrampdialog.h"
|
28 | 29 | #include "qgspresetcolorrampdialog.h"
|
29 | 30 |
|
30 | 31 | #include <QAction>
|
| 32 | +#include <QMessageBox> |
31 | 33 | #include <QMouseEvent>
|
32 | 34 | #include <QMenu>
|
33 | 35 | #include <QPainter>
|
@@ -316,6 +318,11 @@ void QgsColorRampButton::prepareMenu()
|
316 | 318 | editColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
|
317 | 319 | connect( editColorRampAction, &QAction::triggered, this, &QgsColorRampButton::showColorRampDialog );
|
318 | 320 | 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 ); |
319 | 326 | }
|
320 | 327 |
|
321 | 328 | void QgsColorRampButton::loadColorRamp()
|
@@ -350,6 +357,36 @@ void QgsColorRampButton::createColorRamp()
|
350 | 357 | setColorRampFromName( name );
|
351 | 358 | }
|
352 | 359 |
|
| 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 | + |
353 | 390 | void QgsColorRampButton::invertColorRamp()
|
354 | 391 | {
|
355 | 392 | mColorRamp->invert();
|
|
0 commit comments