76#include <QDesktopServices>
77#include <QTableWidgetItem>
84#include <QLinearGradient>
85#include <QPainterPath>
87#include <QColorDialog>
94#include <QRegularExpressionValidator>
95#include <QRegularExpression>
100 , TRSTRING_NOT_SET( tr(
"Not Set" ) )
101 , mDefaultStandardDeviation( 0 )
102 , mDefaultRedBand( 0 )
103 , mDefaultGreenBand( 0 )
104 , mDefaultBlueBand( 0 )
106 , mGradientHeight( 0.0 )
107 , mGradientWidth( 0.0 )
108 , mMetadataFilled( false )
110 mGrayMinimumMaximumEstimated =
true;
111 mRGBMinimumMaximumEstimated =
true;
116 mOptsPage_Information->layout()->addWidget( mMetadataViewer );
120 transparencyScrollArea->setWidget( mRasterTransparencyWidget );
122 connect( buttonBuildPyramids, &QPushButton::clicked,
this, &QgsRasterLayerProperties::buttonBuildPyramids_clicked );
124 connect( mRenderTypeComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterLayerProperties::mRenderTypeComboBox_currentIndexChanged );
125 connect( mResetColorRenderingBtn, &QToolButton::clicked,
this, &QgsRasterLayerProperties::mResetColorRenderingBtn_clicked );
126 connect( buttonRemoveMetadataUrl, &QPushButton::clicked,
this, &QgsRasterLayerProperties::removeSelectedMetadataUrl );
127 connect( buttonAddMetadataUrl, &QPushButton::clicked,
this, &QgsRasterLayerProperties::addMetadataUrl );
132 connect( buttonBox, &QDialogButtonBox::helpRequested,
this, &QgsRasterLayerProperties::showHelp );
134 mSourceGroupBox->hide();
136 mBtnStyle =
new QPushButton( tr(
"Style" ) );
137 buttonBox->addButton(
mBtnStyle, QDialogButtonBox::ResetRole );
151 connect( mSliderBrightness, &QAbstractSlider::valueChanged, mBrightnessSpinBox, &QSpinBox::setValue );
152 connect( mBrightnessSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), mSliderBrightness, &QAbstractSlider::setValue );
153 mBrightnessSpinBox->setClearValue( 0 );
155 connect( mSliderContrast, &QAbstractSlider::valueChanged, mContrastSpinBox, &QSpinBox::setValue );
156 connect( mContrastSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), mSliderContrast, &QAbstractSlider::setValue );
157 mContrastSpinBox->setClearValue( 0 );
160 connect( mSliderGamma, &QAbstractSlider::valueChanged,
this, &QgsRasterLayerProperties::updateGammaSpinBox );
161 connect( mGammaSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterLayerProperties::updateGammaSlider );
162 mGammaSpinBox->setClearValue( 1.0 );
165 connect( sliderSaturation, &QAbstractSlider::valueChanged, spinBoxSaturation, &QSpinBox::setValue );
166 connect( spinBoxSaturation,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), sliderSaturation, &QAbstractSlider::setValue );
167 spinBoxSaturation->setClearValue( 0 );
170 connect( sliderColorizeStrength, &QAbstractSlider::valueChanged, spinColorizeStrength, &QSpinBox::setValue );
171 connect( spinColorizeStrength,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), sliderColorizeStrength, &QAbstractSlider::setValue );
172 spinColorizeStrength->setClearValue( 100 );
175 connect( comboGrayscale,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterLayerProperties::toggleSaturationControls );
178 connect( mColorizeCheck, &QAbstractButton::toggled,
this, &QgsRasterLayerProperties::toggleColorizeControls );
181 connect( lbxPyramidResolutions, &QListWidget::itemSelectionChanged,
this, &QgsRasterLayerProperties::toggleBuildPyramidsButton );
183 mRefreshSettingsWidget->setLayer( mRasterLayer );
186 mScaleRangeWidget->setMapCanvas(
mCanvas );
191 tableViewMetadataUrl->setSelectionMode( QAbstractItemView::SingleSelection );
192 tableViewMetadataUrl->setSelectionBehavior( QAbstractItemView::SelectRows );
193 tableViewMetadataUrl->horizontalHeader()->setStretchLastSection(
true );
194 tableViewMetadataUrl->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
196 mMetadataUrlModel =
new QStandardItemModel( tableViewMetadataUrl );
197 mMetadataUrlModel->clear();
198 mMetadataUrlModel->setColumnCount( 3 );
199 QStringList metadataUrlHeaders;
200 metadataUrlHeaders << tr(
"URL" ) << tr(
"Type" ) << tr(
"Format" );
201 mMetadataUrlModel->setHorizontalHeaderLabels( metadataUrlHeaders );
202 tableViewMetadataUrl->setModel( mMetadataUrlModel );
203 tableViewMetadataUrl->setItemDelegate(
new MetadataUrlItemDelegate(
this ) );
216 connect( mEnableMapTips, &QAbstractButton::toggled, mHtmlMapTipGroupBox, &QWidget::setEnabled );
219 updateRasterAttributeTableOptionsPage();
223 connect( mCreateRasterAttributeTableButton, &QPushButton::clicked,
this, [ = ]
228 QgsCreateRasterAttributeTableDialog dlg { mRasterLayer };
229 dlg.setOpenWhenDoneVisible(
false );
230 if ( dlg.exec() == QDialog::Accepted )
232 updateRasterAttributeTableOptionsPage();
237 connect( mLoadRasterAttributeTableFromFileButton, &QPushButton::clicked,
this, [ = ]
242 if ( dlg.exec() == QDialog::Accepted )
244 updateRasterAttributeTableOptionsPage();
248 mBackupCrs = mRasterLayer->crs();
251 if ( mCanvas && mRasterTransparencyWidget->pixelSelectorTool() )
263 connect( mRasterTransparencyWidget->pbnAddValuesFromDisplay, &QPushButton::clicked,
this, [ = ]
269 mCanvas->window()->raise();
270 mCanvas->window()->activateWindow();
271 mCanvas->window()->setFocus();
277 mContext = mCanvas->createExpressionContext();
291 connect( mInsertExpressionButton, &QAbstractButton::clicked,
this, [ = ]
294 int selectionStart = mMapTipWidget->selectionStart();
295 int selectionEnd = mMapTipWidget->selectionEnd();
299 exprDlg.setWindowTitle( tr(
"Insert Expression" ) );
300 if ( exprDlg.exec() == QDialog::Accepted && !exprDlg.expressionText().trimmed().isEmpty() )
301 mMapTipWidget->insertText(
"[%" + exprDlg.expressionText().trimmed() +
"%]" );
303 mMapTipWidget->setLinearSelection( selectionStart, selectionEnd );
314 cboResamplingMethod->clear();
317 for (
const QPair<QString, QString> &method : std::as_const( constProviderType ) )
319 cboResamplingMethod->addItem( method.second, method.first );
323 QString prefix = provider->name() +
"/driverOptions/_pyramids/";
325 QString defaultMethod = mySettings.
value( prefix +
"resampling",
"AVERAGE" ).toString();
326 int idx = cboResamplingMethod->findData( defaultMethod );
328 cboResamplingMethod->setCurrentIndex( idx );
332 const QList< QgsRasterPyramid > myPyramidList = provider->buildPyramidList();
336 if ( pyramid.getExists() )
338 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap,
339 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
340 QString::number( pyramid.getYDim() ) ) );
344 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap,
345 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
346 QString::number( pyramid.getYDim() ) ) );
353 mOptsPage_Pyramids->setEnabled(
false );
362 mOptsPage_Histogram->setEnabled(
false );
365 QVBoxLayout *layout =
new QVBoxLayout( metadataFrame );
366 layout->setContentsMargins( 0, 0, 0, 0 );
368 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
369 mMetadataWidget->setMapCanvas( mCanvas );
370 layout->addWidget( mMetadataWidget );
371 metadataFrame->setLayout( layout );
373 QVBoxLayout *temporalLayout =
new QVBoxLayout( temporalFrame );
374 temporalLayout->setContentsMargins( 0, 0, 0, 0 );
376 temporalLayout->addWidget( mTemporalWidget );
379 QgsDebugMsgLevel(
"Setting crs to " + mRasterLayer->crs().userFriendlyIdentifier(), 2 );
380 mCrsSelector->setCrs( mRasterLayer->crs() );
383 QString pyramidFormat( QStringLiteral(
"<h2>%1</h2><p>%2 %3 %4</p><b><font color='red'><p>%5</p><p>%6</p>" ) );
384 QString pyramidHeader = tr(
"Description" );
385 QString pyramidSentence1 = tr(
"Large resolution raster layers can slow navigation in QGIS." );
386 QString pyramidSentence2 = tr(
"By creating lower resolution copies of the data (pyramids) performance can be considerably improved as QGIS selects the most suitable resolution to use depending on the level of zoom." );
387 QString pyramidSentence3 = tr(
"You must have write access in the directory where the original data is stored to build pyramids." );
388 QString pyramidSentence4 = tr(
"Please note that building internal pyramids may alter the original data file and once created they cannot be removed!" );
389 QString pyramidSentence5 = tr(
"Please note that building internal pyramids could corrupt your image - always make a backup of your data first!" );
391 tePyramidDescription->setHtml( pyramidFormat.arg( pyramidHeader,
396 pyramidSentence5 ) );
399 mResamplingGroupBox->setSaveCheckedState(
true );
400 mResamplingUtils.initWidgets( mRasterLayer, mZoomedInResamplingComboBox, mZoomedOutResamplingComboBox, mMaximumOversamplingSpinBox, mCbEarlyResampling );
401 mResamplingUtils.refreshWidgetsFromLayer();
405 btnColorizeColor->setColorDialogTitle( tr(
"Select Color" ) );
406 btnColorizeColor->setContext( QStringLiteral(
"symbology" ) );
411 if ( hueSaturationFilter )
413 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
414 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
417 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
420 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
421 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
422 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
423 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
424 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
429 mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );
434 mRasterTransparencyWidget->cboxTransparencyBand->setShowNotSetOption(
true, tr(
"None" ) );
435 mRasterTransparencyWidget->cboxTransparencyBand->setLayer( mRasterLayer );
444 cboxTransparencyBand->setCurrentIndex( cboxTransparencyBand->findData( renderer->
alphaBand() ) );
451 mHistogramWidget =
nullptr;
452 if ( mOptsPage_Histogram->isEnabled() )
455 mHistogramStackedWidget->addWidget( mHistogramWidget );
469 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
471 for (
const QString &name : constRenderersList )
482 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
487 QString rendererType = renderer->
type();
488 widgetIndex = mRenderTypeComboBox->findData( rendererType );
489 if ( widgetIndex != -1 )
491 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
492 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
493 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
496 if ( rendererType == QLatin1String(
"singlebandcolordata" ) && mRenderTypeComboBox->count() == 1 )
499 QSizePolicy sizep = mBandRenderingGrpBx->sizePolicy();
500 sizep.setVerticalStretch( 0 );
501 sizep.setVerticalPolicy( QSizePolicy::Maximum );
502 mBandRenderingGrpBx->setSizePolicy( sizep );
503 mBandRenderingGrpBx->updateGeometry();
506 if ( mRasterLayer->providerType() != QLatin1String(
"wms" ) )
508 mWMSPrintGroupBox->hide();
509 mPublishDataSourceUrlCheckBox->hide();
510 mBackgroundLayerCheckBox->hide();
517 const int horizontalDpi = logicalDpiX();
520 if ( horizontalDpi > 96 )
522 mMetadataViewer->setZoomFactor( mMetadataViewer->zoomFactor() * 0.9 );
524 mMetadataViewer->page()->setLinkDelegationPolicy( QWebPage::LinkDelegationPolicy::DelegateAllLinks );
526 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
527 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
533 mRenderTypeComboBox_currentIndexChanged( widgetIndex );
535 setMetadataWidget( mMetadataWidget, mOptsPage_Metadata );
537 QMenu *menuStyle =
new QMenu(
this );
540 menuStyle->addSeparator();
543 mBtnStyle->setMenu( menuStyle );
544 connect( menuStyle, &QMenu::aboutToShow,
this, &QgsRasterLayerProperties::aboutToShowStyleMenu );
546 mBtnMetadata =
new QPushButton( tr(
"Metadata" ),
this );
547 QMenu *menuMetadata =
new QMenu(
this );
550 menuMetadata->addSeparator();
553 mBtnMetadata->setMenu( menuMetadata );
554 buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );
562 if ( !settings.
contains( QStringLiteral(
"/Windows/RasterLayerProperties/tab" ) ) )
564 settings.
setValue( QStringLiteral(
"Windows/RasterLayerProperties/tab" ),
565 mOptStackedWidget->indexOf( mOptsPage_Style ) );
570 optionsStackedWidget_CurrentChanged( mOptionsStackedWidget->currentIndex() );
573 mOptsPage_Information->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#information-properties" ) );
574 mOptsPage_Source->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#source-properties" ) );
575 mOptsPage_Style->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#symbology-properties" ) );
576 mOptsPage_Transparency->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#transparency-properties" ) );
578 if ( mOptsPage_Histogram )
579 mOptsPage_Histogram->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#histogram-properties" ) );
581 mOptsPage_Rendering->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#rendering-properties" ) );
582 mOptsPage_Temporal->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#temporal-properties" ) );
584 if ( mOptsPage_Pyramids )
585 mOptsPage_Pyramids->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#pyramids-properties" ) );
587 if ( mOptsPage_Display )
588 mOptsPage_Display->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#display-properties" ) );
590 mOptsPage_Metadata->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#metadata-properties" ) );
591 mOptsPage_Legend->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#legend-properties" ) );
592 mOptsPage_Server->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#server-properties" ) );
612 if ( beforePage.isEmpty() )
630void QgsRasterLayerProperties::updateRasterAttributeTableOptionsPage( )
632 if ( mRasterAttributeTableWidget )
634 mOptsPage_RasterAttributeTable->layout()->removeWidget( mRasterAttributeTableWidget );
635 mRasterAttributeTableWidget =
nullptr;
641 mRasterAttributeTableWidget =
new QgsRasterAttributeTableWidget(
this, mRasterLayer );
642 mOptsPage_RasterAttributeTable->layout()->addWidget( mRasterAttributeTableWidget );
644 connect( mRasterAttributeTableWidget, &QgsRasterAttributeTableWidget::rendererChanged,
this, &QgsRasterLayerProperties::syncToLayer );
645 mNoRasterAttributeTableWidget->hide();
649 mNoRasterAttributeTableWidget->show();
654void QgsRasterLayerProperties::setRendererWidget(
const QString &rendererName )
663 const QList<int> oldBands = oldRenderer ? oldRenderer->
usesBands() : QList<int>();
668 opacity = oldRenderer->
opacity();
677 QgsDebugMsgLevel( QStringLiteral(
"renderer has widgetCreateFunction" ), 3 );
680 if ( oldWidget && ( !oldRenderer || rendererName != oldRenderer->
type() ) )
682 if ( rendererName == QLatin1String(
"singlebandgray" ) )
685 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
687 else if ( rendererName == QLatin1String(
"multibandcolor" ) )
690 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
698 mRendererStackedWidget->addWidget( mRendererWidget );
702 std::unique_ptr<QgsRasterRenderer> newRenderer;
703 newRenderer.reset( mRendererWidget->
renderer() );
704 const QList<int> newBands = newRenderer->usesBands();
705 if ( oldBands != newBands )
713 const int widgetIndex = mRenderTypeComboBox->findData( rendererName );
714 if ( widgetIndex != -1 )
716 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
717 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
718 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
721 if ( mRendererWidget != oldWidget )
724 if ( mHistogramWidget )
730void QgsRasterLayerProperties::sync()
734 if ( !mSourceWidget )
739 QHBoxLayout *layout =
new QHBoxLayout();
740 layout->addWidget( mSourceWidget );
741 mSourceGroupBox->setLayout( layout );
743 mSourceGroupBox->setTitle( mSourceWidget->
groupTitle() );
744 mSourceGroupBox->show();
748 buttonBox->button( QDialogButtonBox::Apply )->setEnabled( isValid );
749 buttonBox->button( QDialogButtonBox::Ok )->setEnabled( isValid );
769 mRasterTransparencyWidget->gboxNoDataValue->setEnabled(
false );
770 mRasterTransparencyWidget->gboxCustomTransparency->setEnabled(
false );
771 mOptionsStackedWidget->setCurrentWidget( mOptsPage_Server );
778 if ( mOptsPage_Pyramids )
780 delete mOptsPage_Pyramids;
781 mOptsPage_Pyramids =
nullptr;
787 if ( mOptsPage_Histogram )
789 delete mOptsPage_Histogram;
790 mOptsPage_Histogram =
nullptr;
791 delete mHistogramWidget;
792 mHistogramWidget =
nullptr;
804 if ( brightnessFilter )
806 mSliderBrightness->setValue( brightnessFilter->
brightness() );
807 mSliderContrast->setValue( brightnessFilter->
contrast() );
808 mGammaSpinBox->setValue( brightnessFilter->
gamma() );
814 if ( hueSaturationFilter )
816 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
817 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
820 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
823 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
824 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
825 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
826 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
827 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
830 mRefreshSettingsWidget->syncToLayer();
837 mLayerOrigNameLineEd->setText( mRasterLayer->
name() );
844 updateInformationContent();
850 mLayerShortNameLineEdit->setValidator( shortNameValidator );
857 mLayerDataUrlFormatComboBox->setCurrentIndex(
858 mLayerDataUrlFormatComboBox->findText(
871 const int row = mMetadataUrlModel->rowCount();
872 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( metaUrl.url ) );
873 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( metaUrl.type ) );
874 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( metaUrl.format ) );
878 mLayerLegendUrlLineEdit->setText( mRasterLayer->
legendUrl() );
879 mLayerLegendUrlFormatComboBox->setCurrentIndex( mLayerLegendUrlFormatComboBox->findText( mRasterLayer->
legendUrlFormat() ) );
885 QVariant wmsPrintLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSPrintLayer" ) );
886 if ( wmsPrintLayer.isValid() )
888 mWMSPrintLayerLineEdit->setText( wmsPrintLayer.toString() );
891 QVariant wmsPublishDataSourceUrl = mRasterLayer->
customProperty( QStringLiteral(
"WMSPublishDataSourceUrl" ),
false );
892 mPublishDataSourceUrlCheckBox->setChecked( wmsPublishDataSourceUrl.toBool() );
894 QVariant wmsBackgroundLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSBackgroundLayer" ),
false );
895 mBackgroundLayerCheckBox->setChecked( wmsBackgroundLayer.toBool() );
897 mLegendPlaceholderWidget->setLastPathSettingsKey( QStringLiteral(
"lastLegendPlaceholderDir" ) );
899 mLegendConfigEmbeddedWidget->setLayer( mRasterLayer );
904 updateDataDefinedButtons();
908 page->syncToLayer( mRasterLayer );
917 const QString newSource = mSourceWidget->
sourceUri();
918 if ( newSource != mRasterLayer->
source() )
925 if ( !mRasterLayer->
isValid() )
939 mLegendConfigEmbeddedWidget->applyToLayer();
962 if ( rendererWidget )
969 mBackupCrs = mRasterLayer->
crs();
971 mMetadataFilled =
false;
977 if ( rasterRenderer )
987 mRasterLayer->
setName( mLayerOrigNameLineEd->text() );
994 mRefreshSettingsWidget->saveToLayer();
1001 mResamplingUtils.refreshLayerFromWidgets();
1005 if ( hueSaturationFilter )
1007 hueSaturationFilter->
setSaturation( sliderSaturation->value() );
1009 hueSaturationFilter->
setColorizeOn( mColorizeCheck->checkState() );
1012 hueSaturationFilter->
setInvertColors( mInvertColorsCheck->isChecked() );
1016 mRasterLayer->
setBlendMode( mBlendModeComboBox->blendMode() );
1021 mRasterLayer->
setCrs( mCrsSelector->crs() );
1024 mMetadataFilled =
false;
1028 mMetadataFilled =
false;
1032 mMetadataFilled =
false;
1036 mMetadataFilled =
false;
1040 mMetadataFilled =
false;
1044 mMetadataFilled =
false;
1049 mMetadataFilled =
false;
1053 mMetadataFilled =
false;
1057 QList<QgsMapLayerServerProperties::MetadataUrl> metaUrls;
1058 for (
int row = 0; row < mMetadataUrlModel->rowCount() ; row++ )
1061 metaUrl.
url = mMetadataUrlModel->item( row, 0 )->text();
1062 metaUrl.
type = mMetadataUrlModel->item( row, 1 )->text();
1063 metaUrl.
format = mMetadataUrlModel->item( row, 2 )->text();
1064 metaUrls.append( metaUrl );
1065 mMetadataFilled =
false;
1069 if ( mRasterLayer->
legendUrl() != mLayerLegendUrlLineEdit->text() )
1070 mMetadataFilled =
false;
1071 mRasterLayer->
setLegendUrl( mLayerLegendUrlLineEdit->text() );
1073 if ( mRasterLayer->
legendUrlFormat() != mLayerLegendUrlFormatComboBox->currentText() )
1074 mMetadataFilled =
false;
1077 if ( !mWMSPrintLayerLineEdit->text().isEmpty() )
1079 mRasterLayer->
setCustomProperty( QStringLiteral(
"WMSPrintLayer" ), mWMSPrintLayerLineEdit->text() );
1082 mRasterLayer->
setCustomProperty(
"WMSPublishDataSourceUrl", mPublishDataSourceUrlCheckBox->isChecked() );
1083 mRasterLayer->
setCustomProperty(
"WMSBackgroundLayer", mBackgroundLayerCheckBox->isChecked() );
1100void QgsRasterLayerProperties::buttonBuildPyramids_clicked()
1112 for (
int myCounterInt = 0; myCounterInt < lbxPyramidResolutions->count(); myCounterInt++ )
1114 QListWidgetItem *myItem = lbxPyramidResolutions->item( myCounterInt );
1116 myPyramidList[myCounterInt].setBuild( myItem->isSelected() || myPyramidList[myCounterInt].getExists() );
1120 QString prefix = provider->
name() +
"/driverOptions/_pyramids/";
1122 QString resamplingMethod( cboResamplingMethod->currentData().toString() );
1123 mySettings.
setValue( prefix +
"resampling", resamplingMethod );
1130 QApplication::setOverrideCursor( Qt::WaitCursor );
1137 QApplication::restoreOverrideCursor();
1138 mPyramidProgress->setValue( 0 );
1139 buttonBuildPyramids->setEnabled(
false );
1140 if ( !res.isNull() )
1142 if ( res == QLatin1String(
"CANCELED" ) )
1146 else if ( res == QLatin1String(
"ERROR_WRITE_ACCESS" ) )
1148 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1149 tr(
"Write access denied. Adjust the file permissions and try again." ) );
1151 else if ( res == QLatin1String(
"ERROR_WRITE_FORMAT" ) )
1153 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1154 tr(
"The file was not writable. Some formats do not "
1155 "support pyramid overviews. Consult the GDAL documentation if in doubt." ) );
1157 else if ( res == QLatin1String(
"FAILED_NOT_SUPPORTED" ) )
1159 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1160 tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1162 else if ( res == QLatin1String(
"ERROR_JPEG_COMPRESSION" ) )
1164 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1165 tr(
"Building internal pyramid overviews is not supported on raster layers with JPEG compression and your current libtiff library." ) );
1167 else if ( res == QLatin1String(
"ERROR_VIRTUAL" ) )
1169 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1170 tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1178 lbxPyramidResolutions->clear();
1186 if ( pyramid.getExists() )
1188 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap,
1189 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
1190 QString::number( pyramid.getYDim() ) ) );
1194 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap,
1195 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
1196 QString::number( pyramid.getYDim() ) ) );
1205 updateInformationContent();
1208void QgsRasterLayerProperties::mRenderTypeComboBox_currentIndexChanged(
int index )
1210 if ( index < 0 || mDisableRenderTypeComboBoxCurrentIndexChanged || ! mRasterLayer->renderer() )
1215 QString rendererName = mRenderTypeComboBox->itemData( index ).toString();
1216 setRendererWidget( rendererName );
1226void QgsRasterLayerProperties::aboutToShowStyleMenu()
1230 QMenu *m = qobject_cast<QMenu *>( sender() );
1238void QgsRasterLayerProperties::syncToLayer()
1243 setRendererWidget( renderer->
type() );
1253 if ( !mHistogramWidget )
1265 if ( index ==
mOptStackedWidget->indexOf( mOptsPage_Information ) || !mMetadataFilled )
1268 updateInformationContent();
1274 button->blockSignals(
true );
1278 button->blockSignals(
false );
1281void QgsRasterLayerProperties::updateDataDefinedButtons()
1283 const auto propertyOverrideButtons { findChildren< QgsPropertyOverrideButton * >() };
1286 updateDataDefinedButton( button );
1302void QgsRasterLayerProperties::updateProperty()
1309void QgsRasterLayerProperties::toggleSaturationControls(
int grayscaleMode )
1312 if ( grayscaleMode == 0 )
1314 sliderSaturation->setEnabled(
true );
1315 spinBoxSaturation->setEnabled(
true );
1319 sliderSaturation->setEnabled(
false );
1320 spinBoxSaturation->setEnabled(
false );
1324void QgsRasterLayerProperties::toggleColorizeControls(
bool colorizeEnabled )
1327 btnColorizeColor->setEnabled( colorizeEnabled );
1328 sliderColorizeStrength->setEnabled( colorizeEnabled );
1329 spinColorizeStrength->setEnabled( colorizeEnabled );
1333QLinearGradient QgsRasterLayerProperties::redGradient()
1337 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1338 myGradient.setColorAt( 0.0, QColor( 242, 14, 25, 190 ) );
1339 myGradient.setColorAt( 0.5, QColor( 175, 29, 37, 190 ) );
1340 myGradient.setColorAt( 1.0, QColor( 114, 17, 22, 190 ) );
1343QLinearGradient QgsRasterLayerProperties::greenGradient()
1347 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1348 myGradient.setColorAt( 0.0, QColor( 48, 168, 5, 190 ) );
1349 myGradient.setColorAt( 0.8, QColor( 36, 122, 4, 190 ) );
1350 myGradient.setColorAt( 1.0, QColor( 21, 71, 2, 190 ) );
1353QLinearGradient QgsRasterLayerProperties::blueGradient()
1357 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1358 myGradient.setColorAt( 0.0, QColor( 30, 0, 106, 190 ) );
1359 myGradient.setColorAt( 0.2, QColor( 30, 72, 128, 190 ) );
1360 myGradient.setColorAt( 1.0, QColor( 30, 223, 196, 190 ) );
1363QLinearGradient QgsRasterLayerProperties::grayGradient()
1367 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1368 myGradient.setColorAt( 0.0, QColor( 5, 5, 5, 190 ) );
1369 myGradient.setColorAt( 0.8, QColor( 122, 122, 122, 190 ) );
1370 myGradient.setColorAt( 1.0, QColor( 220, 220, 220, 190 ) );
1373QLinearGradient QgsRasterLayerProperties::highlightGradient()
1377 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1378 myGradient.setColorAt( 1.0, QColor( 255, 255, 255, 50 ) );
1379 myGradient.setColorAt( 0.5, QColor( 255, 255, 255, 100 ) );
1380 myGradient.setColorAt( 0.0, QColor( 255, 255, 255, 150 ) );
1384void QgsRasterLayerProperties::addMetadataUrl()
1386 const int row = mMetadataUrlModel->rowCount();
1387 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( QLatin1String() ) );
1388 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( QLatin1String() ) );
1389 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( QLatin1String() ) );
1392void QgsRasterLayerProperties::removeSelectedMetadataUrl()
1394 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
1395 if ( selectedRows.empty() )
1397 mMetadataUrlModel->removeRow( selectedRows[0].row() );
1412void QgsRasterLayerProperties::restoreWindowModality()
1421void QgsRasterLayerProperties::toggleBuildPyramidsButton()
1423 if ( lbxPyramidResolutions->selectedItems().empty() )
1425 buttonBuildPyramids->setEnabled(
false );
1429 buttonBuildPyramids->setEnabled(
true );
1433void QgsRasterLayerProperties::mResetColorRenderingBtn_clicked()
1435 mBlendModeComboBox->setBlendMode( QPainter::CompositionMode_SourceOver );
1436 mSliderBrightness->setValue( 0 );
1437 mSliderContrast->setValue( 0 );
1438 mGammaSpinBox->setValue( 1.0 );
1439 sliderSaturation->setValue( 0 );
1441 mColorizeCheck->setChecked(
false );
1442 sliderColorizeStrength->setValue( 100 );
1443 mInvertColorsCheck->setChecked(
false );
1446bool QgsRasterLayerProperties::rasterIsMultiBandColor()
1451void QgsRasterLayerProperties::updateInformationContent()
1455 const QString html { mRasterLayer->
htmlMetadata().replace( QLatin1String(
"<head>" ), QStringLiteral( R
"raw(<head><style type="text/css">%1</style>)raw" ) ).arg( myStyle ) };
1456 mMetadataViewer->setHtml( html );
1457 mMetadataFilled = true;
1463 if ( mRasterAttributeTableWidget && mRasterAttributeTableWidget->isDirty() )
1465 mRasterAttributeTableWidget->setEditable(
false,
false );
1469 if ( mBackupCrs != mRasterLayer->
crs() )
1470 mRasterLayer->
setCrs( mBackupCrs );
1473void QgsRasterLayerProperties::showHelp()
1475 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property(
"helpPage" );
1477 if ( helpPage.isValid() )
1483 QgsHelp::openHelp( QStringLiteral(
"working_with_raster/raster_properties.html" ) );
1487void QgsRasterLayerProperties::updateGammaSpinBox(
int value )
1492void QgsRasterLayerProperties::updateGammaSlider(
double value )
1501 if ( obj == mMapTipPreviewContainer && ev->type() == QEvent::Resize )
1505 return QgsOptionsDialogBase::eventFilter( obj, ev );
1508void QgsRasterLayerProperties::initMapTipPreview()
1511 mMapTipSplitter->setSizes( { 400, 200 } );
1513 mMapTipPreviewContainer->installEventFilter(
this );
1517 mMapTipPreview =
new QgsWebView( mMapTipPreviewContainer );
1520 mMapTipPreview->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
1521 mMapTipPreview->setContextMenuPolicy( Qt::NoContextMenu );
1522 connect( mMapTipPreview, &QWebView::loadFinished,
this, &QgsRasterLayerProperties::resizeMapTip );
1525 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
1526 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
1527 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::LocalStorageEnabled,
true );
1530 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
1531 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
1535 connect( mMapTipWidget, &QgsCodeEditorHTML::textChanged,
this, &QgsRasterLayerProperties::updateMapTipPreview );
1538void QgsRasterLayerProperties::updateMapTipPreview()
1540 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1542 mMapTipPreview->setHtml( htmlContent );
1545void QgsRasterLayerProperties::resizeMapTip()
1548 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1551 const QWebElement container = mMapTipPreview->page()->mainFrame()->findFirstElement(
1552 QStringLiteral(
"#QgsWebViewContainer" ) );
1553 const int width = container.geometry().width();
1554 const int height = container.geometry().height();
1555 mMapTipPreview->resize( width, height );
1558 mMapTipPreview->move( ( mMapTipPreviewContainer->width() - mMapTipPreview->width() ) / 2,
1559 ( mMapTipPreviewContainer->height() - mMapTipPreview->height() ) / 2 );
1562 mMapTipPreview->adjustSize();
@ BuildPyramids
Supports building of pyramids (overviews) (since QGIS 3.38 – this is a replacement for RasterInterfac...
@ SingleBandColorData
Single band containing color data.
RasterPyramidFormat
Raster pyramid formats.
@ GeoTiff
Geotiff .ovr (external)
@ Erdas
Erdas Image .aux (external)
@ SingleBandGray
A single band image drawn as a range of gray colors.
@ MultiBandColor
A layer containing 2 or more bands, mapped to RGB color space. In the case of a multiband with only t...
@ BuildPyramids
Supports building of pyramids (overviews) (Deprecated since QGIS 3.38 – use RasterProviderCapability:...
@ Size
Original data source size (and thus resolution) is known, it is not always available,...
@ ARGB32_Premultiplied
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
@ ARGB32
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
@ Preferred
Preferred format, matching the most recent WKT ISO standard. Currently an alias to WKT2_2019,...
static QString reportStyleSheet(QgsApplication::StyleSheetType styleSheetType=QgsApplication::StyleSheetType::Qt)
Returns a css style sheet for reports, the styleSheetType argument determines what type of stylesheet...
static QgsRasterRendererRegistry * rasterRendererRegistry()
Returns the application's raster renderer registry, used for managing raster layer renderers.
@ WebBrowser
StyleSheet for embedded browsers (QtWebKit), supports full standard CSS.
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
static QRegularExpression shortNameRegularExpression()
Returns the short name regular expression for line edit validator.
Brightness/contrast and gamma correction filter pipe for rasters.
int contrast() const
Returns current contrast level.
int brightness() const
Returns current brightness level.
double gamma() const
Returns current gamma value.
void setGamma(double gamma)
Set gamma value.
void setContrast(int contrast)
Set contrast level.
void setBrightness(int brightness)
Set brightness level.
This class represents a coordinate reference system (CRS).
virtual QString name() const =0
Returns a provider name.
A generic dialog for building expression strings.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
static QgsExpressionContextScope * atlasScope(const QgsLayoutAtlas *atlas)
Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
static QgsExpressionContextScope * mapLayerPositionScope(const QgsPointXY &position)
Sets the expression context variables which are available for expressions triggered by moving the mou...
static QgsExpressionContextScope * mapSettingsScope(const QgsMapSettings &mapSettings)
Creates a new scope which contains variables and functions relating to a QgsMapSettings object.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
static QString findAndSelectActiveExpression(QgsCodeEditor *editor, const QString &pattern=QString())
Find the expression under the cursor in the given editor and select it.
void progressChanged(double progress)
Emitted when the feedback object reports a progress change.
static QgsProviderSourceWidgetProviderRegistry * sourceWidgetProviderRegistry()
Returns the registry of provider source widget providers.
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
Color and saturation filter pipe for rasters.
void setColorizeOn(bool colorizeOn)
void setSaturation(int saturation)
int colorizeStrength() const
bool invertColors() const
Returns true if the filter inverts colors.
void setGrayscaleMode(QgsHueSaturationFilter::GrayscaleMode grayscaleMode)
void setInvertColors(bool invertColors)
Sets whether the filter will invert colors.
QgsHueSaturationFilter::GrayscaleMode grayscaleMode() const
void setColorizeColor(const QColor &colorizeColor)
void setColorizeStrength(int colorizeStrength)
QColor colorizeColor() const
Base class for "layer properties" dialogs, containing common utilities for handling functionality in ...
QPushButton * mBtnStyle
Style button.
void saveMetadataToFile()
Allows the user to save the layer's metadata as a file.
virtual void rollback()
Rolls back changes made to the layer.
void optionsStackedWidget_CurrentChanged(int index) override
void saveStyleAsDefault()
Saves the current layer style as the default for the layer.
QList< QgsMapLayerConfigWidget * > mConfigWidgets
Layer config widgets.
void loadDefaultStyle()
Reloads the default style for the layer.
void saveStyleAs()
Saves a style when appriate button is pressed.
void loadStyle()
Triggers a dialog to load a saved style.
QgsMapCanvas * mCanvas
Associated map canvas.
void loadDefaultMetadata()
Reloads the default layer metadata for the layer.
void loadMetadataFromFile()
Allows the user to load layer metadata from a file.
void saveMetadataAsDefault()
Saves the current layer metadata as the default for the layer.
void openUrl(const QUrl &url)
Handles opening a url from the dialog.
The QgsLoadRasterAttributeTableDialog dialog let the user select a VAT.DBF file and associate the res...
void setOpenWhenDoneVisible(bool visible)
Sets the visibility of the "Open newly created raster attribute table" option to visible,...
Map canvas is a class for displaying all GIS data types on a canvas.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
QgsRectangle extent() const
Returns the current zoom extent of the map canvas.
static QgsMapLayerLegend * defaultRasterLegend(QgsRasterLayer *rl)
Create new legend implementation for raster layer.
void setDataUrl(const QString &dataUrl)
Sets the DataUrl of the layer used by QGIS Server in GetCapabilities request.
void setAbstract(const QString &abstract)
Sets the abstract of the layer used by QGIS Server in GetCapabilities request.
void setDataUrlFormat(const QString &dataUrlFormat)
Sets the DataUrl format of the layerused by QGIS Server in GetCapabilities request.
QString attribution() const
Returns the attribution of the layer used by QGIS Server in GetCapabilities request.
void setAttributionUrl(const QString &url)
Sets the attribution url of the layer used by QGIS Server in GetCapabilities request.
QString dataUrlFormat() const
Returns the DataUrl format of the layer used by QGIS Server in GetCapabilities request.
void setAttribution(const QString &attrib)
Sets the attribution of the layer used by QGIS Server in GetCapabilities request.
void setShortName(const QString &name)
Sets the short name of the layer used by QGIS Server to identify the layer.
QString title() const
Returns the title of the layer used by QGIS Server in GetCapabilities request.
QString dataUrl() const
Returns the DataUrl of the layer used by QGIS Server in GetCapabilities request.
QString keywordList() const
Returns the keyword list of the layerused by QGIS Server in GetCapabilities request.
QString shortName() const
Returns the short name of the layer used by QGIS Server to identify the layer.
void setTitle(const QString &title)
Sets the title of the layer used by QGIS Server in GetCapabilities request.
void setKeywordList(const QString &keywords)
Sets the keywords list of the layerused by QGIS Server in GetCapabilities request.
QString attributionUrl() const
Returns the attribution URL of the layer used by QGIS Server in GetCapabilities request.
QString abstract() const
Returns the abstract of the layerused by QGIS Server in GetCapabilities request.
void removesExtraMenuSeparators(QMenu *m)
removes extra separators from the menu
void addStyleManagerActions(QMenu *m, QgsMapLayer *layer)
adds actions to the menu in accordance to the layer
static QgsMapLayerStyleGuiUtils * instance()
returns a singleton instance of this class
void currentStyleChanged(const QString ¤tName)
Emitted when the current style has been changed.
Base class for all map layer types.
QString legendUrlFormat() const
Returns the format for a URL based layer legend.
QString source() const
Returns the source for the layer.
void setLegendUrl(const QString &legendUrl)
Sets the URL for the layer's legend.
Q_INVOKABLE QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
QgsCoordinateReferenceSystem crs
QString legendPlaceholderImage() const
Returns path to the placeholder image or an empty string if a generated legend is shown.
QgsMapLayerServerProperties * serverProperties()
Returns QGIS Server Properties for the map layer.
void setDataSource(const QString &dataSource, const QString &baseName=QString(), const QString &provider=QString(), bool loadDefaultStyleFlag=false)
Updates the data source of the layer.
void triggerRepaint(bool deferredUpdate=false)
Will advise the map canvas (and any other interested party) that this layer requires to be repainted.
void setMaximumScale(double scale)
Sets the maximum map scale (i.e.
Q_INVOKABLE void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for layer.
void rendererChanged()
Signal emitted when renderer is changed.
void setScaleBasedVisibility(bool enabled)
Sets whether scale based visibility is enabled for the layer.
bool hasScaleBasedVisibility() const
Returns whether scale based visibility is enabled for the layer.
void emitStyleChanged()
Triggers an emission of the styleChanged() signal.
void setName(const QString &name)
Set the display name of the layer.
void setLegendPlaceholderImage(const QString &imgPath)
Set placeholder image for legend.
void setMapTipsEnabled(bool enabled)
Enable or disable map tips for this layer.
double minimumScale() const
Returns the minimum map scale (i.e.
QgsMapLayerStyleManager * styleManager() const
Gets access to the layer's style manager.
QString legendUrl() const
Returns the URL for the layer's legend.
void setLegendUrlFormat(const QString &legendUrlFormat)
Sets the format for a URL based layer legend.
void setMapTipTemplate(const QString &mapTipTemplate)
The mapTip is a pretty, html representation for feature information.
void setLegend(QgsMapLayerLegend *legend)
Assign a legend controller to the map layer.
double maximumScale() const
Returns the maximum map scale (i.e.
void setCrs(const QgsCoordinateReferenceSystem &srs, bool emitSignal=true)
Sets layer's spatial reference system.
The QgsMapSettings class contains configuration for rendering of the map.
QgsRectangle outputExtentToLayerExtent(const QgsMapLayer *layer, QgsRectangle extent) const
transform bounding box from output CRS to layer's CRS
static QString rasterMapTipPreviewText(QgsMapLayer *layer, QgsMapCanvas *mapCanvas, const QString &mapTemplate)
Returns the html that would be displayed in a maptip for a given layer.
Renderer for multiband images with the color components.
void addPage(const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget, const QStringList &path=QStringList(), const QString &key=QString())
Adds a new page to the dialog pages.
QStackedWidget * mOptStackedWidget
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
void insertPage(const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget, const QString &before, const QStringList &path=QStringList(), const QString &key=QString())
Inserts a new page into the dialog pages.
static bool layerIsContainedInGroupLayer(QgsProject *project, QgsMapLayer *layer)
Returns true if the specified layer is a child layer from any QgsGroupLayer in the given project.
static QgsProject * instance()
Returns the QgsProject singleton instance.
void setDirty(bool b=true)
Flag the project as dirty (modified).
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
QgsProperty property(int key) const final
Returns a matching property from the collection, if one exists.
Feedback object tailored for raster block reading.
Base class for raster data providers.
virtual QString buildPyramids(const QList< QgsRasterPyramid > &pyramidList, const QString &resamplingMethod="NEAREST", Qgis::RasterPyramidFormat format=Qgis::RasterPyramidFormat::GeoTiff, const QStringList &configOptions=QStringList(), QgsRasterBlockFeedback *feedback=nullptr)
Creates pyramid overviews.
Qgis::DataType dataType(int bandNo) const override=0
Returns data type for the band specified by number.
virtual Qgis::RasterProviderCapabilities providerCapabilities() const
Returns flags containing the supported capabilities of the data provider.
static QList< QPair< QString, QString > > pyramidResamplingMethods(const QString &providerKey)
Returns a list of pyramid resampling method name and label pairs for given provider.
virtual QList< QgsRasterPyramid > buildPyramidList(const QList< int > &overviewList=QList< int >())
Returns the raster layers pyramid list.
virtual Qgis::RasterInterfaceCapabilities capabilities() const
Returns the capabilities supported by the interface.
Q_DECL_DEPRECATED void saveDefaultStyle()
Saves the default style when appropriate button is pressed.
QgsRasterLayerProperties(QgsMapLayer *lyr, QgsMapCanvas *canvas, QWidget *parent=nullptr, Qt::WindowFlags=QgsGuiUtils::ModalDialogFlags)
Constructor.
bool eventFilter(QObject *obj, QEvent *ev) override
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
void optionsStackedWidget_CurrentChanged(int index) FINAL
void addPropertiesPageFactory(const QgsMapLayerConfigWidgetFactory *factory) FINAL
Adds properties page from a factory.
Represents a raster layer.
QString htmlMetadata() const override
Obtain a formatted HTML string containing assorted metadata for this layer.
bool canCreateRasterAttributeTable()
Returns true if the raster renderer is suitable for creation of a raster attribute table.
int attributeTableCount() const
Returns the number of attribute tables for the raster by counting the number of bands that have an as...
QgsRasterPipe * pipe()
Returns the raster pipe.
QgsBrightnessContrastFilter * brightnessFilter() const
Returns the raster's brightness/contrast filter.
QgsRasterRenderer * renderer() const
Returns the raster's renderer.
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
QString providerType() const
[ data provider interface ] Which provider is being used for this Raster Layer?
void setRenderer(QgsRasterRenderer *renderer)
Sets the raster's renderer.
QgsHueSaturationFilter * hueSaturationFilter() const
Returns the raster's hue/saturation filter.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the pipe's property collection, used for data defined overrides.
Property
Data definable properties.
@ RendererOpacity
Raster renderer global opacity.
static QgsPropertiesDefinition propertyDefinitions()
Returns the definitions for data defined properties available for use in raster pipes.
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the pipe's property collection, used for data defined overrides.
This struct is used to store pyramid info for the raster layer.
void insertWidgetFunction(const QString &rendererName, QgsRasterRendererWidgetCreateFunc func)
Sets the widget creation function for a renderer.
QStringList renderersList() const
Returns a list of the names of registered renderers.
Raster renderer pipe that applies colors to a raster.
QColor nodataColor() const
Returns the color to use for shading nodata pixels.
virtual QString type() const
Returns a unique string representation of the renderer type.
double opacity() const
Returns the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1....
virtual QList< int > usesBands() const
Returns a list of band numbers used by the renderer.
void setAlphaBand(int band)
void setOpacity(double opacity)
Sets the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1....
void setNodataColor(const QColor &color)
Sets the color to use for shading nodata pixels.
A rectangle specified with double values.
This class is a composition of two QSettings instances:
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
bool contains(const QString &key, QgsSettings::Section section=QgsSettings::NoSection) const
Returns true if there exists a setting called key; returns false otherwise.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
The QgsWebView class is a collection of stubs to mimic the API of QWebView on systems where the real ...
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
#define QgsDebugMsgLevel(str, level)
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.
Registry for raster renderer entries.
QgsRasterRendererWidgetCreateFunc widgetCreateFunction