Skip to content

Commit f84d965

Browse files
committed
show band names instead of numbers in transparency tab
don't add empty row when loading default transparency values
1 parent f87777e commit f84d965

File tree

2 files changed

+79
-41
lines changed

2 files changed

+79
-41
lines changed

src/app/qgsrasterlayerproperties.cpp

+37-17
Original file line numberDiff line numberDiff line change
@@ -445,41 +445,58 @@ void QgsRasterLayerProperties::populateTransparencyTable( QgsRasterRenderer* ren
445445
tableTransparency->setColumnCount( 0 );
446446
tableTransparency->setRowCount( 0 );
447447

448-
QList<int> bandList = renderer->usesBands();
449-
tableTransparency->setColumnCount( bandList.size() + 1 );
450-
for ( int i = 0; i < bandList.size(); ++i )
448+
int nBands = renderer->usesBands().size();
449+
tableTransparency->setColumnCount( nBands + 1 );
450+
if ( nBands == 3 )
451451
{
452-
tableTransparency->setHorizontalHeaderItem( i, new QTableWidgetItem( QString::number( bandList.at( i ) ) ) );
452+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Red" ) ) );
453+
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Green" ) ) );
454+
tableTransparency->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Blue" ) ) );
455+
tableTransparency->setHorizontalHeaderItem( 3, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
456+
}
457+
else //1 band
458+
{
459+
if ( QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() &&
460+
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer->drawingStyle() &&
461+
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer->drawingStyle() &&
462+
QgsRasterLayer::PalettedMultiBandColor != mRasterLayer->drawingStyle() )
463+
{
464+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Gray" ) ) );
465+
}
466+
else
467+
{
468+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Indexed Value" ) ) );
469+
}
470+
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
453471
}
454-
tableTransparency->setHorizontalHeaderItem( bandList.size(), new QTableWidgetItem( tr( "Percent Transparent" ) ) );
455472

456473
const QgsRasterTransparency* rasterTransparency = renderer->rasterTransparency();
457474
if ( !rasterTransparency )
458475
{
459476
return;
460477
}
461478

462-
if ( bandList.count() == 1 )
479+
if ( nBands == 1 )
463480
{
464481
QList<QgsRasterTransparency::TransparentSingleValuePixel> pixelList = rasterTransparency->transparentSingleValuePixelList();
465482
for ( int i = 0; i < pixelList.size(); ++i )
466483
{
467484
tableTransparency->insertRow( i );
468-
QTableWidgetItem* grayItem = new QTableWidgetItem( QString::number( pixelList[i].pixelValue ) );
485+
QTableWidgetItem* grayItem = new QTableWidgetItem( QString::number( pixelList[i].pixelValue, 'f' ) );
469486
QTableWidgetItem* percentItem = new QTableWidgetItem( QString::number( pixelList[i].percentTransparent ) );
470487
tableTransparency->setItem( i, 0, grayItem );
471488
tableTransparency->setItem( i, 1, percentItem );
472489
}
473490
}
474-
else if ( bandList.count() == 3 )
491+
else if ( nBands == 3 )
475492
{
476493
QList<QgsRasterTransparency::TransparentThreeValuePixel> pixelList = rasterTransparency->transparentThreeValuePixelList();
477494
for ( int i = 0; i < pixelList.size(); ++i )
478495
{
479496
tableTransparency->insertRow( i );
480-
QTableWidgetItem* redItem = new QTableWidgetItem( QString::number( pixelList[i].red ) );
481-
QTableWidgetItem* greenItem = new QTableWidgetItem( QString::number( pixelList[i].green ) );
482-
QTableWidgetItem* blueItem = new QTableWidgetItem( QString::number( pixelList[i].blue ) );
497+
QTableWidgetItem* redItem = new QTableWidgetItem( QString::number( pixelList[i].red, 'f' ) );
498+
QTableWidgetItem* greenItem = new QTableWidgetItem( QString::number( pixelList[i].green, 'f' ) );
499+
QTableWidgetItem* blueItem = new QTableWidgetItem( QString::number( pixelList[i].blue, 'f' ) );
483500
QTableWidgetItem* transparentItem = new QTableWidgetItem( QString::number( pixelList[i].percentTransparent ) );
484501

485502
tableTransparency->setItem( i, 0, redItem );
@@ -1117,10 +1134,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11171134
int nBands = r->usesBands().size();
11181135
delete r;
11191136

1137+
tableTransparency->clear();
1138+
tableTransparency->setRowCount( 0 );
1139+
tableTransparency->setColumnCount( nBands + 1 );
1140+
11201141
if ( nBands == 3 )
11211142
{
1122-
tableTransparency->clear();
1123-
tableTransparency->setColumnCount( 4 );
11241143
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Red" ) ) );
11251144
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Green" ) ) );
11261145
tableTransparency->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Blue" ) ) );
@@ -1131,13 +1150,11 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11311150
tableTransparency->setItem( 0, 0, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
11321151
tableTransparency->setItem( 0, 1, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
11331152
tableTransparency->setItem( 0, 2, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
1134-
tableTransparency->setItem( 0, 3, new QTableWidgetItem( "100.0" ) );
1153+
tableTransparency->setItem( 0, 3, new QTableWidgetItem( "100" ) );
11351154
}
11361155
}
11371156
else //1 band
11381157
{
1139-
tableTransparency->clear();
1140-
tableTransparency->setColumnCount( 2 );
11411158
if ( QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() &&
11421159
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer->drawingStyle() &&
11431160
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer->drawingStyle() &&
@@ -1155,9 +1172,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11551172
{
11561173
tableTransparency->insertRow( tableTransparency->rowCount() );
11571174
tableTransparency->setItem( 0, 0, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
1158-
tableTransparency->setItem( 0, 1, new QTableWidgetItem( "100.0" ) );
1175+
tableTransparency->setItem( 0, 1, new QTableWidgetItem( "100" ) );
11591176
}
11601177
}
1178+
1179+
tableTransparency->resizeColumnsToContents();
1180+
tableTransparency->resizeRowsToContents();
11611181
}
11621182

11631183
void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked()

0 commit comments

Comments
 (0)