diff --git a/src/gui/raster/qgspalettedrendererwidget.cpp b/src/gui/raster/qgspalettedrendererwidget.cpp
index bc1c7b3f99a..526a27f5846 100644
--- a/src/gui/raster/qgspalettedrendererwidget.cpp
+++ b/src/gui/raster/qgspalettedrendererwidget.cpp
@@ -40,10 +40,21 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
mCalculatingProgressBar->hide();
mCancelButton->hide();
- contextMenu = new QMenu( tr( "Options" ), this );
- contextMenu->addAction( tr( "Change color" ), this, SLOT( changeColor() ) );
- contextMenu->addAction( tr( "Change opacity" ), this, SLOT( changeOpacity() ) );
- contextMenu->addAction( tr( "Change label" ), this, SLOT( changeLabel() ) );
+ mContextMenu = new QMenu( tr( "Options" ), this );
+ mContextMenu->addAction( tr( "Change color" ), this, SLOT( changeColor() ) );
+ mContextMenu->addAction( tr( "Change opacity" ), this, SLOT( changeOpacity() ) );
+ mContextMenu->addAction( tr( "Change label" ), this, SLOT( changeLabel() ) );
+
+ mAdvancedMenu = new QMenu( tr( "Advanced options" ), this );
+ QAction *mLoadFromLayerAction = mAdvancedMenu->addAction( tr( "Load classes from layer" ) );
+ connect( mLoadFromLayerAction, &QAction::triggered, this, &QgsPalettedRendererWidget::loadFromLayer );
+ QAction *loadFromFile = mAdvancedMenu->addAction( trUtf8( "Load color map from file…" ) );
+ connect( loadFromFile, &QAction::triggered, this, &QgsPalettedRendererWidget::loadColorTable );
+ QAction *exportToFile = mAdvancedMenu->addAction( trUtf8( "Export color map to file…" ) );
+ connect( exportToFile, &QAction::triggered, this, &QgsPalettedRendererWidget::saveColorTable );
+
+
+ mButtonAdvanced->setMenu( mAdvancedMenu );
mModel = new QgsPalettedRendererModel( this );
mTreeView->setSortingEnabled( false );
@@ -65,7 +76,7 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
mTreeView->setSelectionBehavior( QAbstractItemView::SelectRows );
mTreeView->setDefaultDropAction( Qt::MoveAction );
- connect( mTreeView, &QTreeView::customContextMenuRequested, [ = ]( const QPoint & ) { contextMenu->exec( QCursor::pos() ); }
+ connect( mTreeView, &QTreeView::customContextMenuRequested, [ = ]( const QPoint & ) { mContextMenu->exec( QCursor::pos() ); }
);
btnColorRamp->setShowRandomColorRamp( true );
@@ -87,20 +98,18 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsRasterRendererWidget::widgetChanged );
connect( mModel, &QgsPalettedRendererModel::classesChanged, this, &QgsPalettedRendererWidget::widgetChanged );
connect( mDeleteEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::deleteEntry );
+ connect( mButtonDeleteAll, &QPushButton::clicked, mModel, &QgsPalettedRendererModel::deleteAll );
connect( mAddEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::addEntry );
- connect( mLoadFromFileButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::loadColorTable );
- connect( mExportToFileButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::saveColorTable );
connect( mClassifyButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::classify );
- connect( mButtonLoadFromLayer, &QPushButton::clicked, this, &QgsPalettedRendererWidget::loadFromLayer );
QgsRasterDataProvider *provider = mRasterLayer->dataProvider();
if ( provider )
{
- mButtonLoadFromLayer->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() );
+ mLoadFromLayerAction->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() );
}
else
{
- mButtonLoadFromLayer->setEnabled( false );
+ mLoadFromLayerAction->setEnabled( false );
}
connect( QgsProject::instance(), static_cast < void ( QgsProject::* )( QgsMapLayer * ) >( &QgsProject::layerWillBeRemoved ), this, &QgsPalettedRendererWidget::layerWillBeRemoved );
@@ -444,7 +453,7 @@ void QgsPalettedRendererWidget::gathererThreadFinished()
{
mGatherer->deleteLater();
mGatherer = nullptr;
- mClassifyButton->setText( tr( "Add Unique Values" ) );
+ mClassifyButton->setText( tr( "Classify" ) );
mClassifyButton->setEnabled( true );
mCalculatingProgressBar->hide();
mCancelButton->hide();
@@ -753,5 +762,13 @@ void QgsPalettedRendererModel::addEntry( const QColor &color )
setData( index( mData.count() - 1, 1 ), color );
}
+void QgsPalettedRendererModel::deleteAll()
+{
+ beginResetModel();
+ mData.clear();
+ endResetModel();
+ emit classesChanged();
+}
+
///@endcond PRIVATE
diff --git a/src/gui/raster/qgspalettedrendererwidget.h b/src/gui/raster/qgspalettedrendererwidget.h
index bb8c31510f4..4bf36b16a19 100644
--- a/src/gui/raster/qgspalettedrendererwidget.h
+++ b/src/gui/raster/qgspalettedrendererwidget.h
@@ -162,6 +162,10 @@ class QgsPalettedRendererModel : public QAbstractItemModel
void addEntry( const QColor &color );
+ public slots:
+
+ void deleteAll();
+
signals:
void classesChanged();
@@ -194,7 +198,9 @@ class GUI_EXPORT QgsPalettedRendererWidget: public QgsRasterRendererWidget, priv
private:
- QMenu *contextMenu = nullptr;
+ QMenu *mContextMenu = nullptr;
+ QMenu *mAdvancedMenu = nullptr;
+ QAction *mLoadFromLayerAction = nullptr;
QgsPalettedRendererModel *mModel = nullptr;
QgsColorSwatchDelegate *mSwatchDelegate = nullptr;
diff --git a/src/ui/qgspalettedrendererwidgetbase.ui b/src/ui/qgspalettedrendererwidgetbase.ui
index 9226a842e95..85d761c3e79 100644
--- a/src/ui/qgspalettedrendererwidgetbase.ui
+++ b/src/ui/qgspalettedrendererwidgetbase.ui
@@ -6,7 +6,7 @@
0
0
- 293
+ 277
459
@@ -26,6 +26,74 @@
3
+ -
+
+
-
+
+
+ Adds all missing unique values from the raster
+
+
+ Classify
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Add values manually
+
+
+
+ :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Remove selected row(s)
+
+
+
+ :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg
+
+
+
+ -
+
+
+ Delete all
+
+
+
+ -
+
+
+ Advanced options
+
+
+ …
+
+
+ QToolButton::InstantPopup
+
+
+
+
+
-
@@ -37,30 +105,6 @@
-
-
-
- 0
-
-
-
-
-
- Adds all missing unique values from the raster
-
-
- Populate Values
-
-
-
- -
-
-
- Load from Layer
-
-
-
-
-
- -
0
@@ -139,67 +183,6 @@
- -
-
-
-
-
-
- Remove selected row(s)
-
-
-
- :/images/themes/default/symbologyRemove.svg:/images/themes/default/symbologyRemove.svg
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 48
- 28
-
-
-
-
- -
-
-
- Load color map from file
-
-
-
- :/images/themes/default/mActionFileOpen.svg:/images/themes/default/mActionFileOpen.svg
-
-
-
- -
-
-
- Add values manually
-
-
-
- :/images/themes/default/symbologyAdd.svg:/images/themes/default/symbologyAdd.svg
-
-
-
- -
-
-
- Export color map to file
-
-
-
- :/images/themes/default/mActionFileSaveAs.svg:/images/themes/default/mActionFileSaveAs.svg
-
-
-
-
-
@@ -219,12 +202,11 @@
mBandComboBox
btnColorRamp
mTreeView
+ mClassifyButton
mAddEntryButton
mDeleteEntryButton
- mLoadFromFileButton
- mExportToFileButton
- mClassifyButton
- mButtonLoadFromLayer
+ mButtonDeleteAll
+ mButtonAdvanced
mCancelButton