@@ -53,6 +53,8 @@ QgsRasterTransparencyWidget::QgsRasterTransparencyWidget( QgsRasterLayer *layer,
53
53
54
54
connect ( mOpacityWidget , &QgsOpacityWidget::opacityChanged, this , &QgsPanelWidget::widgetChanged );
55
55
connect ( cboxTransparencyBand, &QgsRasterBandComboBox::bandChanged, this , &QgsPanelWidget::widgetChanged );
56
+ connect ( mSrcNoDataValueCheckBox , &QCheckBox::stateChanged, this , &QgsPanelWidget::widgetChanged );
57
+ connect ( leNoDataValue, &QLineEdit::textEdited, this , &QgsPanelWidget::widgetChanged );
56
58
57
59
mPixelSelectorTool = nullptr ;
58
60
if ( mMapCanvas )
@@ -103,6 +105,17 @@ void QgsRasterTransparencyWidget::syncToLayer()
103
105
mSrcNoDataValueCheckBox ->setEnabled ( enableSrcNoData );
104
106
lblSrcNoDataValue->setEnabled ( enableSrcNoData );
105
107
108
+ QgsRasterRangeList noDataRangeList = mRasterLayer ->dataProvider ()->userNoDataValues ( 1 );
109
+ QgsDebugMsg ( QString ( " noDataRangeList.size = %1" ).arg ( noDataRangeList.size () ) );
110
+ if ( !noDataRangeList.isEmpty () )
111
+ {
112
+ leNoDataValue->insert ( QgsRasterBlock::printValue ( noDataRangeList.value ( 0 ).min () ) );
113
+ }
114
+ else
115
+ {
116
+ leNoDataValue->insert ( QLatin1String ( " " ) );
Collapse comment Comment on line R116
Code has comments. Press enter to view.
117
+ }
118
+
106
119
populateTransparencyTable ( mRasterLayer ->renderer () );
107
120
}
108
121
@@ -366,6 +379,25 @@ bool QgsRasterTransparencyWidget::rasterIsMultiBandColor()
366
379
367
380
void QgsRasterTransparencyWidget::apply ()
368
381
{
382
+ // set NoDataValue
383
+ QgsRasterRangeList myNoDataRangeList;
Collapse comment Comment on line R383
@nirvn I might mix things but aren't we supposed to avoid these my...
naming?
Code has comments. Press enter to view.
384
+ if ( " " != leNoDataValue->text () )
Collapse comment Comment on line R384
! leNoDataValue->text().isEmpty() ?
I'm just trying to apply what I learn from @nyalldawson ;-)
Code has comments. Press enter to view.
385
+ {
386
+ bool myDoubleOk = false ;
387
+ double myNoDataValue = leNoDataValue->text ().toDouble ( &myDoubleOk );
388
+ if ( myDoubleOk )
389
+ {
390
+ QgsRasterRange myNoDataRange ( myNoDataValue, myNoDataValue );
391
+ myNoDataRangeList << myNoDataRange;
392
+ }
393
+ }
394
+ for ( int bandNo = 1 ; bandNo <= mRasterLayer ->dataProvider ()->bandCount (); bandNo++ )
395
+ {
396
+ mRasterLayer ->dataProvider ()->setUserNoDataValue ( bandNo, myNoDataRangeList );
397
+ mRasterLayer ->dataProvider ()->setUseSourceNoDataValue ( bandNo, mSrcNoDataValueCheckBox ->isChecked () );
398
+ }
399
+
400
+ // transparency settings
369
401
QgsRasterRenderer *rasterRenderer = mRasterLayer ->renderer ();
370
402
if ( rasterRenderer )
371
403
{
0 commit comments