|
39 | 39 | #include "qgsrastertransparency.h" |
40 | 40 | #include "qgsmaptoolemitpoint.h" |
41 | 41 |
|
| 42 | +#include "qgsrasterrendererregistry.h" |
| 43 | +#include "qgsmultibandcolorrendererwidget.h" |
| 44 | +#include "qgspalettedrendererwidget.h" |
| 45 | + |
42 | 46 | #include <QTableWidgetItem> |
43 | 47 | #include <QHeaderView> |
44 | 48 |
|
@@ -67,7 +71,7 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer* lyr, QgsMapCanv |
67 | 71 | : QDialog( parent, fl ), |
68 | 72 | // Constant that signals property not used. |
69 | 73 | TRSTRING_NOT_SET( tr( "Not Set" ) ), |
70 | | - mRasterLayer( qobject_cast<QgsRasterLayer *>( lyr ) ) |
| 74 | + mRasterLayer( qobject_cast<QgsRasterLayer *>( lyr ) ), mRendererWidget( 0 ) |
71 | 75 | { |
72 | 76 | ignoreSpinBoxEvent = false; //Short circuit signal loop between min max field and stdDev spin box |
73 | 77 | mGrayMinimumMaximumEstimated = true; |
@@ -329,6 +333,19 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer* lyr, QgsMapCanv |
329 | 333 | } |
330 | 334 | mMaximumOversamplingSpinBox->setValue( renderer->maxOversampling() ); |
331 | 335 | } |
| 336 | + |
| 337 | + //insert renderer widgets into registry |
| 338 | + QgsRasterRendererRegistry::instance()->insertWidgetFunction( "paletted", QgsPalettedRendererWidget::create ); |
| 339 | + QgsRasterRendererRegistry::instance()->insertWidgetFunction( "multibandcolor", QgsMultiBandColorRendererWidget::create ); |
| 340 | + |
| 341 | + //fill available renderers into combo box |
| 342 | + QList< QgsRasterRendererRegistryEntry > rendererEntries = QgsRasterRendererRegistry::instance()->entries(); |
| 343 | + QList< QgsRasterRendererRegistryEntry >::const_iterator rendererIt = rendererEntries.constBegin(); |
| 344 | + for ( ; rendererIt != rendererEntries.constEnd(); ++rendererIt ) |
| 345 | + { |
| 346 | + mRenderTypeComboBox->addItem( rendererIt->visibleName, rendererIt->name ); |
| 347 | + } |
| 348 | + on_mRenderTypeComboBox_currentIndexChanged( mRenderTypeComboBox->currentIndex() ); |
332 | 349 | } // QgsRasterLayerProperties ctor |
333 | 350 |
|
334 | 351 |
|
@@ -1397,6 +1414,11 @@ void QgsRasterLayerProperties::apply() |
1397 | 1414 | pixmapLegend->setScaledContents( true ); |
1398 | 1415 | pixmapLegend->repaint(); |
1399 | 1416 |
|
| 1417 | + //set renderer from widget |
| 1418 | + QgsRasterRendererWidget* rendererWidget = dynamic_cast<QgsRasterRendererWidget*>( mRendererStackedWidget->currentWidget() ); |
| 1419 | + mRasterLayer->setRenderer( rendererWidget->renderer() ); |
| 1420 | + |
| 1421 | +#if 0 |
1400 | 1422 | //set the appropriate render style |
1401 | 1423 | if ( rbtnSingleBand->isChecked() ) |
1402 | 1424 | { |
@@ -1489,6 +1511,7 @@ void QgsRasterLayerProperties::apply() |
1489 | 1511 | } |
1490 | 1512 | } |
1491 | 1513 | //set render style finished |
| 1514 | +#endif //0 |
1492 | 1515 |
|
1493 | 1516 |
|
1494 | 1517 | //resampling |
@@ -1715,6 +1738,29 @@ void QgsRasterLayerProperties::on_buttonBuildPyramids_clicked() |
1715 | 1738 | txtbMetadata->document()->setDefaultStyleSheet( myStyle ); |
1716 | 1739 | } |
1717 | 1740 |
|
| 1741 | +void QgsRasterLayerProperties::on_mRenderTypeComboBox_currentIndexChanged( int index ) |
| 1742 | +{ |
| 1743 | + delete mRendererWidget; |
| 1744 | + mRendererWidget = 0; |
| 1745 | + |
| 1746 | + if ( index < 0 ) |
| 1747 | + { |
| 1748 | + return; |
| 1749 | + } |
| 1750 | + |
| 1751 | + QString rendererName = mRenderTypeComboBox->itemData( index ).toString(); |
| 1752 | + |
| 1753 | + QgsRasterRendererRegistryEntry rendererEntry; |
| 1754 | + if ( QgsRasterRendererRegistry::instance()->rendererData( rendererName, rendererEntry ) ) |
| 1755 | + { |
| 1756 | + if ( rendererEntry.widgetCreateFunction ) |
| 1757 | + { |
| 1758 | + mRendererWidget = ( *rendererEntry.widgetCreateFunction )( mRasterLayer ); |
| 1759 | + mRendererStackedWidget->addWidget( mRendererWidget ); |
| 1760 | + } |
| 1761 | + } |
| 1762 | +} |
| 1763 | + |
1718 | 1764 | void QgsRasterLayerProperties::on_cboBlue_currentIndexChanged( const QString& theText ) |
1719 | 1765 | { |
1720 | 1766 | if ( TRSTRING_NOT_SET != theText ) |
|
0 commit comments