QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); layout()->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double, int ) ), this, SLOT( loadMinMax( int, double, double, int ) ) ); connect( mRedBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mGreenBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mBlueBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), 3 ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mRedMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); } }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); connect( mRedMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mRedMinLineEdit_textChanged ); connect( mRedMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mRedMaxLineEdit_textChanged ); connect( mGreenMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mGreenMinLineEdit_textChanged ); connect( mGreenMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mGreenMaxLineEdit_textChanged ); connect( mBlueMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mBlueMinLineEdit_textChanged ); connect( mBlueMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mBlueMaxLineEdit_textChanged ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsMultiBandColorRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsMultiBandColorRendererWidget::loadMinMax ); connect( mRedBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); connect( mGreenBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); connect( mBlueBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); mRedBandComboBox->setShowNotSetOption( true ); mGreenBandComboBox->setShowNotSetOption( true ); mBlueBandComboBox->setShowNotSetOption( true ); mRedBandComboBox->setLayer( mRasterLayer ); mGreenBandComboBox->setLayer( mRasterLayer ); mBlueBandComboBox->setLayer( mRasterLayer ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mContrastEnhancementAlgorithmComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRasterRendererWidget::widgetChanged ); } }
QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer* layer ): QgsRasterRendererWidget( layer ) { setupUi( this ); mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mGrayBandComboBox->addItem( displayBandName( i ), i ); } //contrast enhancement algorithms mContrastEnhancementComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementComboBox->addItem( tr( "Clip to MinMax" ), 3 ); setFromRenderer( layer->renderer() ); } }
QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mColorRampComboBox->populate( QgsStyleV2::defaultStyle() ); if ( !mRasterLayer ) { return; } QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandComboBox->addItem( displayBandName( i ), i ); } mColorInterpolationComboBox->addItem( tr( "Discrete" ), 0 ); mColorInterpolationComboBox->addItem( tr( "Linear" ), 1 ); mColorInterpolationComboBox->addItem( tr( "Exact" ), 2 ); mClassificationModeComboBox->addItem( tr( "Equal interval" ) ); //quantile would be nice as well setFromRenderer( layer->renderer() ); }
QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); mGradientComboBox->insertItem( 0, tr( "Black to white" ), QgsSingleBandGrayRenderer::BlackToWhite ); mGradientComboBox->insertItem( 1, tr( "White to black" ), QgsSingleBandGrayRenderer::WhiteToBlack ); mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsSingleBandGrayRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsSingleBandGrayRendererWidget::loadMinMax ); //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mGrayBandComboBox->addItem( displayBandName( i ), i ); } //contrast enhancement algorithms mContrastEnhancementComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); setFromRenderer( layer->renderer() ); connect( mGradientComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) ); connect( mContrastEnhancementComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) ); } }
QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); connect( mMinLineEdit, &QLineEdit::textChanged, this, &QgsSingleBandGrayRendererWidget::mMinLineEdit_textChanged ); connect( mMaxLineEdit, &QLineEdit::textChanged, this, &QgsSingleBandGrayRendererWidget::mMaxLineEdit_textChanged ); mGradientComboBox->insertItem( 0, tr( "Black to white" ), QgsSingleBandGrayRenderer::BlackToWhite ); mGradientComboBox->insertItem( 1, tr( "White to black" ), QgsSingleBandGrayRenderer::WhiteToBlack ); mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); if ( mRasterLayer ) { QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsSingleBandGrayRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsSingleBandGrayRendererWidget::loadMinMax ); mGrayBandComboBox->setLayer( mRasterLayer ); //contrast enhancement algorithms mContrastEnhancementComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); setFromRenderer( layer->renderer() ); connect( mGrayBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsSingleBandGrayRendererWidget::bandChanged ); connect( mGradientComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRasterRendererWidget::widgetChanged ); connect( mContrastEnhancementComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRasterRendererWidget::widgetChanged ); } }
QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mColormapTreeWidget->setColumnWidth( 1, 50 ); mColorRampComboBox->populate( QgsStyleV2::defaultStyle() ); if ( !mRasterLayer ) { return; } QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } // Must be before adding items to mBandComboBox (signal) mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double, int ) ), this, SLOT( loadMinMax( int, double, double, int ) ) ); //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandComboBox->addItem( displayBandName( i ), i ); } mColorInterpolationComboBox->addItem( tr( "Discrete" ), 0 ); mColorInterpolationComboBox->addItem( tr( "Linear" ), 1 ); mColorInterpolationComboBox->addItem( tr( "Exact" ), 2 ); mColorInterpolationComboBox->setCurrentIndex( 1 ); mClassificationModeComboBox->addItem( tr( "Equal interval" ) ); //quantile would be nice as well mNumberOfEntriesSpinBox->setValue( 5 ); // some default setFromRenderer( layer->renderer() ); }
QgsHillshadeRendererWidget::QgsHillshadeRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mLightAngle->setMaximum( 90 ); mLightAzimuth->setMaximum( 360.00 ); mLightAngle->setValue( 45.00 ); mLightAngle->setClearValue( 45.0 ); mLightAzimuth->setValue( 315.00 ); mLightAzimuth->setClearValue( 315.00 ); // Update the dial correctly on_mLightAzimuth_updated( 315.00 ); mZFactor->setValue( 1 ); mZFactor->setClearValue( 1 ); mMultiDirection->setChecked( false ); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandsCombo->addItem( displayBandName( i ), i ); } } setFromRenderer( layer->renderer() ); connect( mLightAngle, SIGNAL( valueChanged( double ) ), this, SIGNAL( widgetChanged() ) ); connect( mLightAzimuth, SIGNAL( valueChanged( double ) ), this, SLOT( on_mLightAzimuth_updated( double ) ) ); connect( mLightAzimuthDial, SIGNAL( valueChanged( int ) ), this, SLOT( on_mLightAzimuthDail_updated( int ) ) ); connect( mZFactor, SIGNAL( valueChanged( double ) ), this, SIGNAL( widgetChanged() ) ); connect( mMultiDirection, SIGNAL( toggled( bool ) ), this, SIGNAL( widgetChanged() ) ); }
QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandComboBox->addItem( displayBandName( i ), i ); } setFromRenderer( mRasterLayer->renderer() ); connect( mBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) ); } }
QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); layout()->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double ) ), this, SLOT( loadMinMax( int, double, double ) ) ); //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mGrayBandComboBox->addItem( displayBandName( i ), i ); } //contrast enhancement algorithms mContrastEnhancementComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementComboBox->addItem( tr( "Clip to MinMax" ), 3 ); setFromRenderer( layer->renderer() ); } }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer ): QgsRasterRendererWidget( layer ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), 3 ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); } }
QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) , mMinMaxOrigin( 0 ) { QSettings settings; setupUi( this ); mColormapTreeWidget->setColumnWidth( ColorColumn, 50 ); QString defaultPalette = settings.value( "/Raster/defaultPalette", "Spectral" ).toString(); mColorRampComboBox->populate( QgsStyle::defaultStyle() ); QgsDebugMsg( "defaultPalette = " + defaultPalette ); mColorRampComboBox->setCurrentIndex( mColorRampComboBox->findText( defaultPalette ) ); connect( mButtonEditRamp, SIGNAL( clicked() ), mColorRampComboBox, SLOT( editSourceRamp() ) ); if ( !mRasterLayer ) { return; } QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } // Must be before adding items to mBandComboBox (signal) mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double, int ) ), this, SLOT( loadMinMax( int, double, double, int ) ) ); //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandComboBox->addItem( displayBandName( i ), i ); } mColorInterpolationComboBox->addItem( tr( "Discrete" ), QgsColorRampShader::DISCRETE ); mColorInterpolationComboBox->addItem( tr( "Linear" ), QgsColorRampShader::INTERPOLATED ); mColorInterpolationComboBox->addItem( tr( "Exact" ), QgsColorRampShader::EXACT ); mColorInterpolationComboBox->setCurrentIndex( mColorInterpolationComboBox->findData( QgsColorRampShader::INTERPOLATED ) ); mClassificationModeComboBox->addItem( tr( "Continuous" ), Continuous ); mClassificationModeComboBox->addItem( tr( "Equal interval" ), EqualInterval ); mClassificationModeComboBox->addItem( tr( "Quantile" ), Quantile ); mNumberOfEntriesSpinBox->setValue( 5 ); // some default setFromRenderer( layer->renderer() ); // If there is currently no min/max, load default with user current default options if ( mMinLineEdit->text().isEmpty() || mMaxLineEdit->text().isEmpty() ) { mMinMaxWidget->load(); } on_mClassificationModeComboBox_currentIndexChanged( 0 ); resetClassifyButton(); connect( mClassificationModeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mMinLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mColorRampComboBox, SIGNAL( sourceRampEdited() ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mColorRampComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mInvertCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mNumberOfEntriesSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( on_mClassifyButton_clicked() ) ); connect( mClipCheckBox, SIGNAL( toggled( bool ) ), this, SIGNAL( widgetChanged() ) ); }
QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( NULL ) , mMinMaxOrigin( 0 ) { QSettings settings; setupUi( this ); mColormapTreeWidget->setColumnWidth( 1, 50 ); QString defaultPalette = settings.value( "/Raster/defaultPalette", "Spectral" ).toString(); mColorRampComboBox->populate( QgsStyleV2::defaultStyle() ); QgsDebugMsg( "defaultPalette = " + defaultPalette ); mColorRampComboBox->setCurrentIndex( mColorRampComboBox->findText( defaultPalette ) ); if ( !mRasterLayer ) { return; } QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } // Must be before adding items to mBandComboBox (signal) mMinLineEdit->setValidator( new QDoubleValidator( mMinLineEdit ) ); mMaxLineEdit->setValidator( new QDoubleValidator( mMaxLineEdit ) ); mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double, int ) ), this, SLOT( loadMinMax( int, double, double, int ) ) ); //fill available bands into combo box int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { mBandComboBox->addItem( displayBandName( i ), i ); } mColorInterpolationComboBox->addItem( tr( "Discrete" ), 0 ); mColorInterpolationComboBox->addItem( tr( "Linear" ), 1 ); mColorInterpolationComboBox->addItem( tr( "Exact" ), 2 ); mColorInterpolationComboBox->setCurrentIndex( 1 ); mClassificationModeComboBox->addItem( tr( "Continuous" ), Continuous ); mClassificationModeComboBox->addItem( tr( "Equal interval" ), EqualInterval ); //quantile would be nice as well mNumberOfEntriesSpinBox->setValue( 5 ); // some default setFromRenderer( layer->renderer() ); // If there is currently no min/max, load default with user current default options if ( mMinLineEdit->text().isEmpty() || mMaxLineEdit->text().isEmpty() ) { mMinMaxWidget->load(); } on_mClassificationModeComboBox_currentIndexChanged( 0 ); resetClassifyButton(); }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsMultiBandColorRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsMultiBandColorRendererWidget::loadMinMax ); connect( mRedBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mGreenBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mBlueBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mContrastEnhancementAlgorithmComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); } }
QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mCalculatingProgressBar->hide(); mCancelButton->hide(); mContextMenu = new QMenu( tr( "Options" ), this ); mContextMenu->addAction( tr( "Change Color…" ), this, SLOT( changeColor() ) ); mContextMenu->addAction( tr( "Change Opacity…" ), this, SLOT( changeOpacity() ) ); mContextMenu->addAction( tr( "Change Label…" ), this, SLOT( changeLabel() ) ); mAdvancedMenu = new QMenu( tr( "Advanced Options" ), this ); QAction *mLoadFromLayerAction = mAdvancedMenu->addAction( tr( "Load Classes from Layer" ) ); connect( mLoadFromLayerAction, &QAction::triggered, this, &QgsPalettedRendererWidget::loadFromLayer ); QAction *loadFromFile = mAdvancedMenu->addAction( tr( "Load Color Map from File…" ) ); connect( loadFromFile, &QAction::triggered, this, &QgsPalettedRendererWidget::loadColorTable ); QAction *exportToFile = mAdvancedMenu->addAction( tr( "Export Color Map to File…" ) ); connect( exportToFile, &QAction::triggered, this, &QgsPalettedRendererWidget::saveColorTable ); mButtonAdvanced->setMenu( mAdvancedMenu ); mModel = new QgsPalettedRendererModel( this ); mTreeView->setSortingEnabled( false ); mTreeView->setModel( mModel ); #ifdef ENABLE_MODELTEST new ModelTest( mModel, this ); #endif mSwatchDelegate = new QgsColorSwatchDelegate( this ); mTreeView->setItemDelegateForColumn( QgsPalettedRendererModel::ColorColumn, mSwatchDelegate ); mTreeView->setColumnWidth( QgsPalettedRendererModel::ColorColumn, Qgis::UI_SCALE_FACTOR * fontMetrics().width( 'X' ) * 6.6 ); mTreeView->setContextMenuPolicy( Qt::CustomContextMenu ); mTreeView->setSelectionMode( QAbstractItemView::ExtendedSelection ); mTreeView->setDragEnabled( true ); mTreeView->setAcceptDrops( true ); mTreeView->setDropIndicatorShown( true ); mTreeView->setDragDropMode( QAbstractItemView::InternalMove ); mTreeView->setSelectionBehavior( QAbstractItemView::SelectRows ); mTreeView->setDefaultDropAction( Qt::MoveAction ); connect( mTreeView, &QTreeView::customContextMenuRequested, this, [ = ]( QPoint ) { mContextMenu->exec( QCursor::pos() ); } ); btnColorRamp->setShowRandomColorRamp( true ); connect( btnColorRamp, &QgsColorRampButton::colorRampChanged, this, &QgsPalettedRendererWidget::applyColorRamp ); mBandComboBox->setLayer( mRasterLayer ); if ( mRasterLayer ) { QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } setFromRenderer( mRasterLayer->renderer() ); } connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsRasterRendererWidget::widgetChanged ); connect( mModel, &QgsPalettedRendererModel::classesChanged, this, &QgsPalettedRendererWidget::widgetChanged ); connect( mDeleteEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::deleteEntry ); connect( mButtonDeleteAll, &QPushButton::clicked, mModel, &QgsPalettedRendererModel::deleteAll ); connect( mAddEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::addEntry ); connect( mClassifyButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::classify ); QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( provider ) { mLoadFromLayerAction->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() ); } else { mLoadFromLayerAction->setEnabled( false ); } connect( QgsProject::instance(), static_cast < void ( QgsProject::* )( QgsMapLayer * ) >( &QgsProject::layerWillBeRemoved ), this, &QgsPalettedRendererWidget::layerWillBeRemoved ); connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsPalettedRendererWidget::bandChanged ); }