41 changes: 23 additions & 18 deletions src/app/qgsrasterlayerproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,22 @@ void QgsRasterLayerProperties::populateTransparencyTable()
tableTransparency->resizeRowsToContents();
}

void QgsRasterLayerProperties::setRendererWidget( const QString& rendererName )
{
delete mRendererWidget;
mRendererWidget = 0;

QgsRasterRendererRegistryEntry rendererEntry;
if ( QgsRasterRendererRegistry::instance()->rendererData( rendererName, rendererEntry ) )
{
if ( rendererEntry.widgetCreateFunction ) //single band color data renderer e.g. has no widget
{
mRendererWidget = ( *rendererEntry.widgetCreateFunction )( mRasterLayer );
mRendererStackedWidget->addWidget( mRendererWidget );
}
}
}

/**
@note moved from ctor
Expand Down Expand Up @@ -940,30 +956,13 @@ void QgsRasterLayerProperties::on_buttonBuildPyramids_clicked()

void QgsRasterLayerProperties::on_mRenderTypeComboBox_currentIndexChanged( int index )
{
delete mRendererWidget;
mRendererWidget = 0;

if ( index < 0 )
{
return;
}

QString rendererName = mRenderTypeComboBox->itemData( index ).toString();

QgsRasterRendererRegistryEntry rendererEntry;
if ( QgsRasterRendererRegistry::instance()->rendererData( rendererName, rendererEntry ) )
{
if ( rendererEntry.widgetCreateFunction )
{
mRendererWidget = ( *rendererEntry.widgetCreateFunction )( mRasterLayer );
mRendererStackedWidget->addWidget( mRendererWidget );
}
else //single band color data renderer e.g. has no widget
{
delete mRendererWidget;
mRendererWidget = 0;
}
}
setRendererWidget( rendererName );
}

void QgsRasterLayerProperties::on_pbnAddValuesFromDisplay_clicked()
Expand Down Expand Up @@ -1525,6 +1524,12 @@ void QgsRasterLayerProperties::on_pbnLoadStyle_clicked()
}

settings.setValue( "style/lastStyleDir", QFileInfo( fileName ).absolutePath() );
QgsRasterRenderer* renderer = mRasterLayer->renderer();
if ( renderer )
{
setRendererWidget( renderer->type() );
}
mRasterLayer->triggerRepaint();
}


Expand Down
3 changes: 1 addition & 2 deletions src/app/qgsrasterlayerproperties.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,7 @@ class QgsRasterLayerProperties : public QDialog, private Ui::QgsRasterLayerPrope
/** \brief Clear the current transparency table and populate the table with the correct types for current drawing mode and data type*/
void populateTransparencyTable();

/**Restores the state of the colormap tab*/
void syncColormapTab();
void setRendererWidget( const QString& rendererName );

//@TODO we should move these gradient generators somewhere more generic
//so they can be used generically throughut the app
Expand Down
Loading