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