@@ -186,6 +186,7 @@ QgsRasterRenderer* QgsSingleBandPseudoColorRendererWidget::renderer()
186
186
void QgsSingleBandPseudoColorRendererWidget::autoLabel ()
187
187
{
188
188
bool discrete = mColorInterpolationComboBox ->currentText () == tr ( " Discrete" );
189
+ QString unit = mUnitLineEdit ->text ();
189
190
QString label = " " ;
190
191
int myTopLevelItemCount = mColormapTreeWidget ->topLevelItemCount ();
191
192
QTreeWidgetItem* myCurrentItem;
@@ -202,16 +203,16 @@ void QgsSingleBandPseudoColorRendererWidget::autoLabel()
202
203
{
203
204
if ( i == 0 )
204
205
{
205
- label = " < " + myCurrentItem->text ( 0 );
206
+ label = " < " + myCurrentItem->text ( 0 ) + unit ;
206
207
}
207
208
else
208
209
{
209
- label = mColormapTreeWidget ->topLevelItem ( i - 1 )->text ( 0 ) + " - " + myCurrentItem->text ( 0 );
210
+ label = mColormapTreeWidget ->topLevelItem ( i - 1 )->text ( 0 ) + " - " + myCurrentItem->text ( 0 ) + unit ;
210
211
}
211
212
}
212
213
else
213
214
{
214
- label = myCurrentItem->text ( 0 );
215
+ label = myCurrentItem->text ( 0 ) + unit ;
215
216
}
216
217
217
218
if ( myCurrentItem->text ( 2 ) == " " || myCurrentItem->text ( 2 ) == label || myCurrentItem->foreground ( 2 ).color () == QColor ( Qt::gray ) )
@@ -222,6 +223,65 @@ void QgsSingleBandPseudoColorRendererWidget::autoLabel()
222
223
}
223
224
}
224
225
226
+ void QgsSingleBandPseudoColorRendererWidget::setUnitFromLabels ()
227
+ {
228
+ bool discrete = mColorInterpolationComboBox ->currentText () == tr ( " Discrete" );
229
+ QStringList allSuffixes;
230
+ QString label = " " ;
231
+ int myTopLevelItemCount = mColormapTreeWidget ->topLevelItemCount ();
232
+ QTreeWidgetItem* myCurrentItem;
233
+ for ( int i = 0 ; i < myTopLevelItemCount; ++i )
234
+ {
235
+ myCurrentItem = mColormapTreeWidget ->topLevelItem ( i );
236
+ // If the item is null or does not have a pixel values set, skip
237
+ if ( !myCurrentItem || myCurrentItem->text ( 0 ) == " " )
238
+ {
239
+ continue ;
240
+ }
241
+
242
+ if ( discrete )
243
+ {
244
+ if ( i == 0 )
245
+ {
246
+ label = " < " + myCurrentItem->text ( 0 );
247
+ }
248
+ else
249
+ {
250
+ label = mColormapTreeWidget ->topLevelItem ( i - 1 )->text ( 0 ) + " - " + myCurrentItem->text ( 0 );
251
+ }
252
+ }
253
+ else
254
+ {
255
+ label = myCurrentItem->text ( 0 );
256
+ }
257
+
258
+ if ( myCurrentItem->text ( 2 ).startsWith ( label ) )
259
+ {
260
+ allSuffixes.append ( myCurrentItem->text ( 2 ).mid ( label.length () ) );
261
+ }
262
+ }
263
+ // find most common suffix
264
+ QStringList suffixes = QStringList ( allSuffixes );
265
+ suffixes.removeDuplicates ();
266
+ int max = 0 ;
267
+ QString unit;
268
+ for ( int i = 0 ; i < suffixes.count (); ++i )
269
+ {
270
+ int n = allSuffixes.count ( suffixes[i] );
271
+ if ( n > max )
272
+ {
273
+ max = n;
274
+ unit = suffixes[i];
275
+ }
276
+ }
277
+ // Set this suffix as unit if at least used twice
278
+ if ( max >= 2 )
279
+ {
280
+ mUnitLineEdit ->setText (unit);
281
+ }
282
+ autoLabel ();
283
+ }
284
+
225
285
void QgsSingleBandPseudoColorRendererWidget::on_mAddEntryButton_clicked ()
226
286
{
227
287
QgsTreeWidgetItem* newItem = new QgsTreeWidgetItem ( mColormapTreeWidget );
@@ -409,7 +469,7 @@ void QgsSingleBandPseudoColorRendererWidget::populateColormapTreeWidget( const Q
409
469
connect ( newItem, SIGNAL ( itemEdited ( QTreeWidgetItem*, int ) ),
410
470
this , SLOT ( mColormapTreeWidget_itemEdited ( QTreeWidgetItem*, int ) ) );
411
471
}
412
- autoLabel ();
472
+ setUnitFromLabels ();
413
473
}
414
474
415
475
void QgsSingleBandPseudoColorRendererWidget::on_mLoadFromBandButton_clicked ()
@@ -676,7 +736,7 @@ void QgsSingleBandPseudoColorRendererWidget::setFromRenderer( const QgsRasterRen
676
736
connect ( newItem, SIGNAL ( itemEdited ( QTreeWidgetItem*, int ) ),
677
737
this , SLOT ( mColormapTreeWidget_itemEdited ( QTreeWidgetItem*, int ) ) );
678
738
}
679
- autoLabel ();
739
+ setUnitFromLabels ();
680
740
mClipCheckBox ->setChecked ( colorRampShader->clip () );
681
741
}
682
742
}
0 commit comments