Skip to content

Commit 12aa48a

Browse files
committedApr 3, 2017
Auto load raster color table from band when band is changed in
paletted raster renderer (Only if raster has an embedded color table)
1 parent 17a3d1f commit 12aa48a

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed
 

‎src/gui/raster/qgspalettedrendererwidget.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
8989
}
9090

9191
setFromRenderer( mRasterLayer->renderer() );
92-
connect( mBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) );
92+
connect( mBandComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRasterRendererWidget::widgetChanged );
9393
}
9494

9595
connect( mModel, &QgsPalettedRendererModel::classesChanged, this, &QgsPalettedRendererWidget::widgetChanged );
@@ -111,6 +111,7 @@ QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, con
111111
}
112112

113113
connect( QgsProject::instance(), static_cast < void ( QgsProject::* )( QgsMapLayer * ) >( &QgsProject::layerWillBeRemoved ), this, &QgsPalettedRendererWidget::layerWillBeRemoved );
114+
connect( mBandComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPalettedRendererWidget::loadFromLayer );
114115
}
115116

116117
QgsPalettedRendererWidget::~QgsPalettedRendererWidget()
@@ -425,9 +426,13 @@ void QgsPalettedRendererWidget::loadFromLayer()
425426
QgsRasterDataProvider *provider = mRasterLayer->dataProvider();
426427
if ( provider )
427428
{
428-
QgsPalettedRasterRenderer::ClassData classes = QgsPalettedRasterRenderer::colorTableToClassData( provider->colorTable( mBandComboBox->currentData().toInt() ) );
429-
mModel->setClassData( classes );
430-
emit widgetChanged();
429+
QList<QgsColorRampShader::ColorRampItem> table = provider->colorTable( mBandComboBox->currentData().toInt() );
430+
if ( !table.isEmpty() )
431+
{
432+
QgsPalettedRasterRenderer::ClassData classes = QgsPalettedRasterRenderer::colorTableToClassData( provider->colorTable( mBandComboBox->currentData().toInt() ) );
433+
mModel->setClassData( classes );
434+
emit widgetChanged();
435+
}
431436
}
432437
}
433438

0 commit comments

Comments
 (0)