Skip to content

Commit c040469

Browse files
committedJun 4, 2017
Make paletted raster widget behave more like vector categorized
renderer widget Since they are basically counterparts to each other
1 parent e977f1f commit c040469

File tree

3 files changed

+102
-97
lines changed

3 files changed

+102
-97
lines changed
 

‎src/gui/raster/qgspalettedrendererwidget.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,21 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
4040
mCalculatingProgressBar->hide();
4141
mCancelButton->hide();
4242

43-
contextMenu = new QMenu( tr( "Options" ), this );
44-
contextMenu->addAction( tr( "Change color" ), this, SLOT( changeColor() ) );
45-
contextMenu->addAction( tr( "Change opacity" ), this, SLOT( changeOpacity() ) );
46-
contextMenu->addAction( tr( "Change label" ), this, SLOT( changeLabel() ) );
43+
mContextMenu = new QMenu( tr( "Options" ), this );
44+
mContextMenu->addAction( tr( "Change color" ), this, SLOT( changeColor() ) );
45+
mContextMenu->addAction( tr( "Change opacity" ), this, SLOT( changeOpacity() ) );
46+
mContextMenu->addAction( tr( "Change label" ), this, SLOT( changeLabel() ) );
47+
48+
mAdvancedMenu = new QMenu( tr( "Advanced options" ), this );
49+
QAction *mLoadFromLayerAction = mAdvancedMenu->addAction( tr( "Load classes from layer" ) );
50+
connect( mLoadFromLayerAction, &QAction::triggered, this, &QgsPalettedRendererWidget::loadFromLayer );
51+
QAction *loadFromFile = mAdvancedMenu->addAction( trUtf8( "Load color map from file…" ) );
52+
connect( loadFromFile, &QAction::triggered, this, &QgsPalettedRendererWidget::loadColorTable );
53+
QAction *exportToFile = mAdvancedMenu->addAction( trUtf8( "Export color map to file…" ) );
54+
connect( exportToFile, &QAction::triggered, this, &QgsPalettedRendererWidget::saveColorTable );
55+
56+
57+
mButtonAdvanced->setMenu( mAdvancedMenu );
4758

4859
mModel = new QgsPalettedRendererModel( this );
4960
mTreeView->setSortingEnabled( false );
@@ -65,7 +76,7 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
6576
mTreeView->setSelectionBehavior( QAbstractItemView::SelectRows );
6677
mTreeView->setDefaultDropAction( Qt::MoveAction );
6778

68-
connect( mTreeView, &QTreeView::customContextMenuRequested, [ = ]( const QPoint & ) { contextMenu->exec( QCursor::pos() ); }
79+
connect( mTreeView, &QTreeView::customContextMenuRequested, [ = ]( const QPoint & ) { mContextMenu->exec( QCursor::pos() ); }
6980
);
7081

7182
btnColorRamp->setShowRandomColorRamp( true );
@@ -87,20 +98,18 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
8798
connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsRasterRendererWidget::widgetChanged );
8899
connect( mModel, &QgsPalettedRendererModel::classesChanged, this, &QgsPalettedRendererWidget::widgetChanged );
89100
connect( mDeleteEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::deleteEntry );
101+
connect( mButtonDeleteAll, &QPushButton::clicked, mModel, &QgsPalettedRendererModel::deleteAll );
90102
connect( mAddEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::addEntry );
91-
connect( mLoadFromFileButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::loadColorTable );
92-
connect( mExportToFileButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::saveColorTable );
93103
connect( mClassifyButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::classify );
94-
connect( mButtonLoadFromLayer, &QPushButton::clicked, this, &QgsPalettedRendererWidget::loadFromLayer );
95104

96105
QgsRasterDataProvider *provider = mRasterLayer->dataProvider();
97106
if ( provider )
98107
{
99-
mButtonLoadFromLayer->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() );
108+
mLoadFromLayerAction->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() );
100109
}
101110
else
102111
{
103-
mButtonLoadFromLayer->setEnabled( false );
112+
mLoadFromLayerAction->setEnabled( false );
104113
}
105114

106115
connect( QgsProject::instance(), static_cast < void ( QgsProject::* )( QgsMapLayer * ) >( &QgsProject::layerWillBeRemoved ), this, &QgsPalettedRendererWidget::layerWillBeRemoved );
@@ -444,7 +453,7 @@ void QgsPalettedRendererWidget::gathererThreadFinished()
444453
{
445454
mGatherer->deleteLater();
446455
mGatherer = nullptr;
447-
mClassifyButton->setText( tr( "Add Unique Values" ) );
456+
mClassifyButton->setText( tr( "Classify" ) );
448457
mClassifyButton->setEnabled( true );
449458
mCalculatingProgressBar->hide();
450459
mCancelButton->hide();
@@ -753,5 +762,13 @@ void QgsPalettedRendererModel::addEntry( const QColor &color )
753762
setData( index( mData.count() - 1, 1 ), color );
754763
}
755764

765+
void QgsPalettedRendererModel::deleteAll()
766+
{
767+
beginResetModel();
768+
mData.clear();
769+
endResetModel();
770+
emit classesChanged();
771+
}
772+
756773
///@endcond PRIVATE
757774

‎src/gui/raster/qgspalettedrendererwidget.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@ class QgsPalettedRendererModel : public QAbstractItemModel
162162

163163
void addEntry( const QColor &color );
164164

165+
public slots:
166+
167+
void deleteAll();
168+
165169
signals:
166170

167171
void classesChanged();
@@ -194,7 +198,9 @@ class GUI_EXPORT QgsPalettedRendererWidget: public QgsRasterRendererWidget, priv
194198

195199
private:
196200

197-
QMenu *contextMenu = nullptr;
201+
QMenu *mContextMenu = nullptr;
202+
QMenu *mAdvancedMenu = nullptr;
203+
QAction *mLoadFromLayerAction = nullptr;
198204
QgsPalettedRendererModel *mModel = nullptr;
199205
QgsColorSwatchDelegate *mSwatchDelegate = nullptr;
200206

‎src/ui/qgspalettedrendererwidgetbase.ui

Lines changed: 67 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>293</width>
9+
<width>277</width>
1010
<height>459</height>
1111
</rect>
1212
</property>
@@ -26,41 +26,85 @@
2626
<property name="bottomMargin">
2727
<number>3</number>
2828
</property>
29-
<item row="2" column="0">
30-
<widget class="QTreeView" name="mTreeView">
31-
<property name="minimumSize">
32-
<size>
33-
<width>0</width>
34-
<height>280</height>
35-
</size>
36-
</property>
37-
</widget>
38-
</item>
39-
<item row="5" column="0">
40-
<layout class="QHBoxLayout" name="horizontalLayout_2">
41-
<property name="topMargin">
42-
<number>0</number>
43-
</property>
29+
<item row="3" column="0">
30+
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="1,0,0,1,0">
4431
<item>
4532
<widget class="QPushButton" name="mClassifyButton">
4633
<property name="toolTip">
4734
<string>Adds all missing unique values from the raster</string>
4835
</property>
4936
<property name="text">
50-
<string>Populate Values</string>
37+
<string>Classify</string>
38+
</property>
39+
</widget>
40+
</item>
41+
<item>
42+
<widget class="QPushButton" name="mAddEntryButton">
43+
<property name="sizePolicy">
44+
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
45+
<horstretch>0</horstretch>
46+
<verstretch>0</verstretch>
47+
</sizepolicy>
48+
</property>
49+
<property name="toolTip">
50+
<string>Add values manually</string>
51+
</property>
52+
<property name="icon">
53+
<iconset resource="../../images/images.qrc">
54+
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
55+
</property>
56+
</widget>
57+
</item>
58+
<item>
59+
<widget class="QPushButton" name="mDeleteEntryButton">
60+
<property name="sizePolicy">
61+
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
62+
<horstretch>0</horstretch>
63+
<verstretch>0</verstretch>
64+
</sizepolicy>
65+
</property>
66+
<property name="toolTip">
67+
<string>Remove selected row(s)</string>
68+
</property>
69+
<property name="icon">
70+
<iconset resource="../../images/images.qrc">
71+
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
72+
</property>
73+
</widget>
74+
</item>
75+
<item>
76+
<widget class="QPushButton" name="mButtonDeleteAll">
77+
<property name="text">
78+
<string>Delete all</string>
5179
</property>
5280
</widget>
5381
</item>
5482
<item>
55-
<widget class="QPushButton" name="mButtonLoadFromLayer">
83+
<widget class="QToolButton" name="mButtonAdvanced">
84+
<property name="toolTip">
85+
<string>Advanced options</string>
86+
</property>
5687
<property name="text">
57-
<string>Load from Layer</string>
88+
<string>…</string>
89+
</property>
90+
<property name="popupMode">
91+
<enum>QToolButton::InstantPopup</enum>
5892
</property>
5993
</widget>
6094
</item>
6195
</layout>
6296
</item>
63-
<item row="6" column="0">
97+
<item row="2" column="0">
98+
<widget class="QTreeView" name="mTreeView">
99+
<property name="minimumSize">
100+
<size>
101+
<width>0</width>
102+
<height>280</height>
103+
</size>
104+
</property>
105+
</widget>
106+
</item>
107+
<item row="5" column="0">
64108
<layout class="QHBoxLayout" name="horizontalLayout_3">
65109
<property name="topMargin">
66110
<number>0</number>
@@ -139,67 +183,6 @@
139183
</item>
140184
</layout>
141185
</item>
142-
<item row="3" column="0">
143-
<layout class="QGridLayout" name="gridLayout_2">
144-
<item row="0" column="1">
145-
<widget class="QPushButton" name="mDeleteEntryButton">
146-
<property name="toolTip">
147-
<string>Remove selected row(s)</string>
148-
</property>
149-
<property name="icon">
150-
<iconset resource="../../images/images.qrc">
151-
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
152-
</property>
153-
</widget>
154-
</item>
155-
<item row="0" column="6">
156-
<spacer name="horizontalSpacer">
157-
<property name="orientation">
158-
<enum>Qt::Horizontal</enum>
159-
</property>
160-
<property name="sizeHint" stdset="0">
161-
<size>
162-
<width>48</width>
163-
<height>28</height>
164-
</size>
165-
</property>
166-
</spacer>
167-
</item>
168-
<item row="0" column="2">
169-
<widget class="QPushButton" name="mLoadFromFileButton">
170-
<property name="toolTip">
171-
<string>Load color map from file</string>
172-
</property>
173-
<property name="icon">
174-
<iconset resource="../../images/images.qrc">
175-
<normaloff>:/images/themes/default/mActionFileOpen.svg</normaloff>:/images/themes/default/mActionFileOpen.svg</iconset>
176-
</property>
177-
</widget>
178-
</item>
179-
<item row="0" column="0">
180-
<widget class="QPushButton" name="mAddEntryButton">
181-
<property name="toolTip">
182-
<string>Add values manually</string>
183-
</property>
184-
<property name="icon">
185-
<iconset resource="../../images/images.qrc">
186-
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
187-
</property>
188-
</widget>
189-
</item>
190-
<item row="0" column="3">
191-
<widget class="QPushButton" name="mExportToFileButton">
192-
<property name="toolTip">
193-
<string>Export color map to file</string>
194-
</property>
195-
<property name="icon">
196-
<iconset resource="../../images/images.qrc">
197-
<normaloff>:/images/themes/default/mActionFileSaveAs.svg</normaloff>:/images/themes/default/mActionFileSaveAs.svg</iconset>
198-
</property>
199-
</widget>
200-
</item>
201-
</layout>
202-
</item>
203186
</layout>
204187
</widget>
205188
<customwidgets>
@@ -219,12 +202,11 @@
219202
<tabstop>mBandComboBox</tabstop>
220203
<tabstop>btnColorRamp</tabstop>
221204
<tabstop>mTreeView</tabstop>
205+
<tabstop>mClassifyButton</tabstop>
222206
<tabstop>mAddEntryButton</tabstop>
223207
<tabstop>mDeleteEntryButton</tabstop>
224-
<tabstop>mLoadFromFileButton</tabstop>
225-
<tabstop>mExportToFileButton</tabstop>
226-
<tabstop>mClassifyButton</tabstop>
227-
<tabstop>mButtonLoadFromLayer</tabstop>
208+
<tabstop>mButtonDeleteAll</tabstop>
209+
<tabstop>mButtonAdvanced</tabstop>
228210
<tabstop>mCancelButton</tabstop>
229211
</tabstops>
230212
<resources>

0 commit comments

Comments
 (0)
Please sign in to comment.