45#include "moc_qgsrasterlayerproperties.cpp"
77#include <QDesktopServices>
78#include <QTableWidgetItem>
85#include <QLinearGradient>
86#include <QPainterPath>
88#include <QColorDialog>
95#include <QRegularExpressionValidator>
96#include <QRegularExpression>
101 , TRSTRING_NOT_SET( tr(
"Not Set" ) )
102 , mDefaultStandardDeviation( 0 )
103 , mDefaultRedBand( 0 )
104 , mDefaultGreenBand( 0 )
105 , mDefaultBlueBand( 0 )
107 , mGradientHeight( 0.0 )
108 , mGradientWidth( 0.0 )
109 , mMetadataFilled( false )
111 mGrayMinimumMaximumEstimated =
true;
112 mRGBMinimumMaximumEstimated =
true;
117 mOptsPage_Information->layout()->addWidget( mMetadataViewer );
121 transparencyScrollArea->setWidget( mRasterTransparencyWidget );
123 connect( buttonBuildPyramids, &QPushButton::clicked,
this, &QgsRasterLayerProperties::buttonBuildPyramids_clicked );
125 connect( mRenderTypeComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterLayerProperties::mRenderTypeComboBox_currentIndexChanged );
126 connect( mResetColorRenderingBtn, &QToolButton::clicked,
this, &QgsRasterLayerProperties::mResetColorRenderingBtn_clicked );
127 connect( buttonRemoveMetadataUrl, &QPushButton::clicked,
this, &QgsRasterLayerProperties::removeSelectedMetadataUrl );
128 connect( buttonAddMetadataUrl, &QPushButton::clicked,
this, &QgsRasterLayerProperties::addMetadataUrl );
133 connect( buttonBox, &QDialogButtonBox::helpRequested,
this, &QgsRasterLayerProperties::showHelp );
135 mSourceGroupBox->hide();
137 mBtnStyle =
new QPushButton( tr(
"Style" ) );
138 buttonBox->addButton(
mBtnStyle, QDialogButtonBox::ResetRole );
152 connect( mSliderBrightness, &QAbstractSlider::valueChanged, mBrightnessSpinBox, &QSpinBox::setValue );
153 connect( mBrightnessSpinBox,
static_cast<void ( QSpinBox::* )(
int )
>( &QSpinBox::valueChanged ), mSliderBrightness, &QAbstractSlider::setValue );
154 mBrightnessSpinBox->setClearValue( 0 );
156 connect( mSliderContrast, &QAbstractSlider::valueChanged, mContrastSpinBox, &QSpinBox::setValue );
157 connect( mContrastSpinBox,
static_cast<void ( QSpinBox::* )(
int )
>( &QSpinBox::valueChanged ), mSliderContrast, &QAbstractSlider::setValue );
158 mContrastSpinBox->setClearValue( 0 );
161 connect( mSliderGamma, &QAbstractSlider::valueChanged,
this, &QgsRasterLayerProperties::updateGammaSpinBox );
162 connect( mGammaSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterLayerProperties::updateGammaSlider );
163 mGammaSpinBox->setClearValue( 1.0 );
166 connect( sliderSaturation, &QAbstractSlider::valueChanged, spinBoxSaturation, &QSpinBox::setValue );
167 connect( spinBoxSaturation,
static_cast<void ( QSpinBox::* )(
int )
>( &QSpinBox::valueChanged ), sliderSaturation, &QAbstractSlider::setValue );
168 spinBoxSaturation->setClearValue( 0 );
171 connect( sliderColorizeStrength, &QAbstractSlider::valueChanged, spinColorizeStrength, &QSpinBox::setValue );
172 connect( spinColorizeStrength,
static_cast<void ( QSpinBox::* )(
int )
>( &QSpinBox::valueChanged ), sliderColorizeStrength, &QAbstractSlider::setValue );
173 spinColorizeStrength->setClearValue( 100 );
176 connect( comboGrayscale,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterLayerProperties::toggleSaturationControls );
179 connect( mColorizeCheck, &QAbstractButton::toggled,
this, &QgsRasterLayerProperties::toggleColorizeControls );
182 connect( lbxPyramidResolutions, &QListWidget::itemSelectionChanged,
this, &QgsRasterLayerProperties::toggleBuildPyramidsButton );
184 mRefreshSettingsWidget->setLayer( mRasterLayer );
187 mScaleRangeWidget->setMapCanvas(
mCanvas );
192 tableViewMetadataUrl->setSelectionMode( QAbstractItemView::SingleSelection );
193 tableViewMetadataUrl->setSelectionBehavior( QAbstractItemView::SelectRows );
194 tableViewMetadataUrl->horizontalHeader()->setStretchLastSection(
true );
195 tableViewMetadataUrl->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
197 mMetadataUrlModel =
new QStandardItemModel( tableViewMetadataUrl );
198 mMetadataUrlModel->clear();
199 mMetadataUrlModel->setColumnCount( 3 );
200 QStringList metadataUrlHeaders;
201 metadataUrlHeaders << tr(
"URL" ) << tr(
"Type" ) << tr(
"Format" );
202 mMetadataUrlModel->setHorizontalHeaderLabels( metadataUrlHeaders );
203 tableViewMetadataUrl->setModel( mMetadataUrlModel );
204 tableViewMetadataUrl->setItemDelegate(
new MetadataUrlItemDelegate(
this ) );
217 connect( mEnableMapTips, &QAbstractButton::toggled, mHtmlMapTipGroupBox, &QWidget::setEnabled );
220 updateRasterAttributeTableOptionsPage();
224 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, [=] {
241 if ( dlg.exec() == QDialog::Accepted )
243 updateRasterAttributeTableOptionsPage();
247 mBackupCrs = mRasterLayer->crs();
250 if ( mCanvas && mRasterTransparencyWidget->pixelSelectorTool() )
260 connect( mRasterTransparencyWidget->pbnAddValuesFromDisplay, &QPushButton::clicked,
this, [=] {
265 mCanvas->window()->raise();
266 mCanvas->window()->activateWindow();
267 mCanvas->window()->setFocus();
273 mContext = mCanvas->createExpressionContext();
287 connect( mInsertExpressionButton, &QAbstractButton::clicked,
this, [=] {
289 int selectionStart = mMapTipWidget->selectionStart();
290 int selectionEnd = mMapTipWidget->selectionEnd();
294 exprDlg.setWindowTitle( tr(
"Insert Expression" ) );
295 if ( exprDlg.exec() == QDialog::Accepted && !exprDlg.expressionText().trimmed().isEmpty() )
296 mMapTipWidget->insertText(
"[%" + exprDlg.expressionText().trimmed() +
"%]" );
298 mMapTipWidget->setLinearSelection( selectionStart, selectionEnd );
307 cboResamplingMethod->clear();
310 for (
const QPair<QString, QString> &method : std::as_const( constProviderType ) )
312 cboResamplingMethod->addItem( method.second, method.first );
316 QString prefix = provider->name() +
"/driverOptions/_pyramids/";
318 QString defaultMethod = mySettings.
value( prefix +
"resampling",
"AVERAGE" ).toString();
319 int idx = cboResamplingMethod->findData( defaultMethod );
321 cboResamplingMethod->setCurrentIndex( idx );
325 const QList<QgsRasterPyramid> myPyramidList = provider->buildPyramidList();
329 if ( pyramid.getExists() )
331 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap, QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) + QString::number( pyramid.getYDim() ) ) );
335 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap, QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) + QString::number( pyramid.getYDim() ) ) );
342 mOptsPage_Pyramids->setEnabled(
false );
351 mOptsPage_Histogram->setEnabled(
false );
354 QVBoxLayout *layout =
new QVBoxLayout( metadataFrame );
355 layout->setContentsMargins( 0, 0, 0, 0 );
357 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
358 mMetadataWidget->setMapCanvas( mCanvas );
359 layout->addWidget( mMetadataWidget );
360 metadataFrame->setLayout( layout );
362 QVBoxLayout *temporalLayout =
new QVBoxLayout( temporalFrame );
363 temporalLayout->setContentsMargins( 0, 0, 0, 0 );
365 temporalLayout->addWidget( mTemporalWidget );
368 QgsDebugMsgLevel(
"Setting crs to " + mRasterLayer->crs().userFriendlyIdentifier(), 2 );
369 mCrsSelector->setCrs( mRasterLayer->crs() );
372 QString pyramidFormat( QStringLiteral(
"<h2>%1</h2><p>%2 %3 %4</p><b><font color='red'><p>%5</p><p>%6</p>" ) );
373 QString pyramidHeader = tr(
"Description" );
374 QString pyramidSentence1 = tr(
"Large resolution raster layers can slow navigation in QGIS." );
375 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." );
376 QString pyramidSentence3 = tr(
"You must have write access in the directory where the original data is stored to build pyramids." );
377 QString pyramidSentence4 = tr(
"Please note that building internal pyramids may alter the original data file and once created they cannot be removed!" );
378 QString pyramidSentence5 = tr(
"Please note that building internal pyramids could corrupt your image - always make a backup of your data first!" );
380 tePyramidDescription->setHtml( pyramidFormat.arg( pyramidHeader, pyramidSentence1, pyramidSentence2, pyramidSentence3, pyramidSentence4, pyramidSentence5 ) );
383 mResamplingGroupBox->setSaveCheckedState(
true );
384 mResamplingUtils.initWidgets( mRasterLayer, mZoomedInResamplingComboBox, mZoomedOutResamplingComboBox, mMaximumOversamplingSpinBox, mCbEarlyResampling );
385 mResamplingUtils.refreshWidgetsFromLayer();
389 btnColorizeColor->setColorDialogTitle( tr(
"Select Color" ) );
390 btnColorizeColor->setContext( QStringLiteral(
"symbology" ) );
395 if ( hueSaturationFilter )
397 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
398 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
401 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
404 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
405 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
406 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
407 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
408 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
413 mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );
418 mRasterTransparencyWidget->cboxTransparencyBand->setShowNotSetOption(
true, tr(
"None" ) );
419 mRasterTransparencyWidget->cboxTransparencyBand->setLayer( mRasterLayer );
428 cboxTransparencyBand->setCurrentIndex( cboxTransparencyBand->findData( renderer->
alphaBand() ) );
435 mHistogramWidget =
nullptr;
436 if ( mOptsPage_Histogram->isEnabled() )
439 mHistogramStackedWidget->addWidget( mHistogramWidget );
453 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
455 for (
const QString &name : constRenderersList )
465 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
470 QString rendererType = renderer->
type();
471 widgetIndex = mRenderTypeComboBox->findData( rendererType );
472 if ( widgetIndex != -1 )
474 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
475 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
476 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
479 if ( rendererType == QLatin1String(
"singlebandcolordata" ) && mRenderTypeComboBox->count() == 1 )
482 QSizePolicy sizep = mBandRenderingGrpBx->sizePolicy();
483 sizep.setVerticalStretch( 0 );
484 sizep.setVerticalPolicy( QSizePolicy::Maximum );
485 mBandRenderingGrpBx->setSizePolicy( sizep );
486 mBandRenderingGrpBx->updateGeometry();
489 if ( mRasterLayer->providerType() != QLatin1String(
"wms" ) )
491 mWMSPrintGroupBox->hide();
492 mPublishDataSourceUrlCheckBox->hide();
493 mBackgroundLayerCheckBox->hide();
500 const int horizontalDpi = logicalDpiX();
503 if ( horizontalDpi > 96 )
505 mMetadataViewer->setZoomFactor( mMetadataViewer->zoomFactor() * 0.9 );
507 mMetadataViewer->page()->setLinkDelegationPolicy( QWebPage::LinkDelegationPolicy::DelegateAllLinks );
509 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
510 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
516 mRenderTypeComboBox_currentIndexChanged( widgetIndex );
518 setMetadataWidget( mMetadataWidget, mOptsPage_Metadata );
520 QMenu *menuStyle =
new QMenu(
this );
523 menuStyle->addSeparator();
526 mBtnStyle->setMenu( menuStyle );
527 connect( menuStyle, &QMenu::aboutToShow,
this, &QgsRasterLayerProperties::aboutToShowStyleMenu );
529 mBtnMetadata =
new QPushButton( tr(
"Metadata" ),
this );
530 QMenu *menuMetadata =
new QMenu(
this );
533 menuMetadata->addSeparator();
536 mBtnMetadata->setMenu( menuMetadata );
537 buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );
545 if ( !settings.
contains( QStringLiteral(
"/Windows/RasterLayerProperties/tab" ) ) )
547 settings.
setValue( QStringLiteral(
"Windows/RasterLayerProperties/tab" ), mOptStackedWidget->indexOf( mOptsPage_Style ) );
552 optionsStackedWidget_CurrentChanged( mOptionsStackedWidget->currentIndex() );
555 mOptsPage_Information->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#information-properties" ) );
556 mOptsPage_Source->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#source-properties" ) );
557 mOptsPage_Style->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#symbology-properties" ) );
558 mOptsPage_Transparency->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#transparency-properties" ) );
560 if ( mOptsPage_Histogram )
561 mOptsPage_Histogram->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#histogram-properties" ) );
563 mOptsPage_Rendering->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#rendering-properties" ) );
564 mOptsPage_Temporal->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#temporal-properties" ) );
566 if ( mOptsPage_Pyramids )
567 mOptsPage_Pyramids->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#pyramids-properties" ) );
569 if ( mOptsPage_Display )
570 mOptsPage_Display->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#display-properties" ) );
572 mOptsPage_Metadata->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#metadata-properties" ) );
573 mOptsPage_Legend->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#legend-properties" ) );
574 mOptsPage_Server->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#server-properties" ) );
594 if ( beforePage.isEmpty() )
612void QgsRasterLayerProperties::updateRasterAttributeTableOptionsPage()
614 if ( mRasterAttributeTableWidget )
616 mOptsPage_RasterAttributeTable->layout()->removeWidget( mRasterAttributeTableWidget );
617 mRasterAttributeTableWidget =
nullptr;
623 mRasterAttributeTableWidget =
new QgsRasterAttributeTableWidget(
this, mRasterLayer );
624 mOptsPage_RasterAttributeTable->layout()->addWidget( mRasterAttributeTableWidget );
626 connect( mRasterAttributeTableWidget, &QgsRasterAttributeTableWidget::rendererChanged,
this, &QgsRasterLayerProperties::syncToLayer );
627 mNoRasterAttributeTableWidget->hide();
631 mNoRasterAttributeTableWidget->show();
636void QgsRasterLayerProperties::setRendererWidget(
const QString &rendererName )
645 const QList<int> oldBands = oldRenderer ? oldRenderer->
usesBands() : QList<int>();
650 opacity = oldRenderer->
opacity();
659 QgsDebugMsgLevel( QStringLiteral(
"renderer has widgetCreateFunction" ), 3 );
662 if ( oldWidget && ( !oldRenderer || rendererName != oldRenderer->
type() ) )
664 if ( rendererName == QLatin1String(
"singlebandgray" ) )
667 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
669 else if ( rendererName == QLatin1String(
"multibandcolor" ) )
672 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
680 mRendererStackedWidget->addWidget( mRendererWidget );
684 std::unique_ptr<QgsRasterRenderer> newRenderer;
685 newRenderer.reset( mRendererWidget->
renderer() );
686 const QList<int> newBands = newRenderer->usesBands();
687 if ( oldBands != newBands )
695 const int widgetIndex = mRenderTypeComboBox->findData( rendererName );
696 if ( widgetIndex != -1 )
698 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
699 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
700 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
703 if ( mRendererWidget != oldWidget )
706 if ( mHistogramWidget )
712void QgsRasterLayerProperties::sync()
716 if ( !mSourceWidget )
721 QHBoxLayout *layout =
new QHBoxLayout();
722 layout->addWidget( mSourceWidget );
723 mSourceGroupBox->setLayout( layout );
725 mSourceGroupBox->setTitle( mSourceWidget->
groupTitle() );
726 mSourceGroupBox->show();
729 buttonBox->button( QDialogButtonBox::Apply )->setEnabled( isValid );
730 buttonBox->button( QDialogButtonBox::Ok )->setEnabled( isValid );
750 mRasterTransparencyWidget->gboxNoDataValue->setEnabled(
false );
751 mRasterTransparencyWidget->gboxCustomTransparency->setEnabled(
false );
752 mOptionsStackedWidget->setCurrentWidget( mOptsPage_Server );
759 if ( mOptsPage_Pyramids )
761 delete mOptsPage_Pyramids;
762 mOptsPage_Pyramids =
nullptr;
768 if ( mOptsPage_Histogram )
770 delete mOptsPage_Histogram;
771 mOptsPage_Histogram =
nullptr;
772 delete mHistogramWidget;
773 mHistogramWidget =
nullptr;
785 if ( brightnessFilter )
787 mSliderBrightness->setValue( brightnessFilter->
brightness() );
788 mSliderContrast->setValue( brightnessFilter->
contrast() );
789 mGammaSpinBox->setValue( brightnessFilter->
gamma() );
795 if ( hueSaturationFilter )
797 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
798 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
801 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
804 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
805 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
806 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
807 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
808 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
811 mRefreshSettingsWidget->syncToLayer();
818 mLayerOrigNameLineEd->setText( mRasterLayer->
name() );
825 updateInformationContent();
831 mLayerShortNameLineEdit->setValidator( shortNameValidator );
838 mLayerDataUrlFormatComboBox->setCurrentIndex(
839 mLayerDataUrlFormatComboBox->findText(
852 const int row = mMetadataUrlModel->rowCount();
853 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( metaUrl.url ) );
854 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( metaUrl.type ) );
855 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( metaUrl.format ) );
859 mLayerLegendUrlLineEdit->setText( mRasterLayer->
legendUrl() );
860 mLayerLegendUrlFormatComboBox->setCurrentIndex( mLayerLegendUrlFormatComboBox->findText( mRasterLayer->
legendUrlFormat() ) );
866 QVariant wmsPrintLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSPrintLayer" ) );
867 if ( wmsPrintLayer.isValid() )
869 mWMSPrintLayerLineEdit->setText( wmsPrintLayer.toString() );
872 QVariant wmsPublishDataSourceUrl = mRasterLayer->
customProperty( QStringLiteral(
"WMSPublishDataSourceUrl" ),
false );
873 mPublishDataSourceUrlCheckBox->setChecked( wmsPublishDataSourceUrl.toBool() );
875 QVariant wmsBackgroundLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSBackgroundLayer" ),
false );
876 mBackgroundLayerCheckBox->setChecked( wmsBackgroundLayer.toBool() );
878 mLegendPlaceholderWidget->setLastPathSettingsKey( QStringLiteral(
"lastLegendPlaceholderDir" ) );
880 mLegendConfigEmbeddedWidget->setLayer( mRasterLayer );
885 updateDataDefinedButtons();
889 page->syncToLayer( mRasterLayer );
897 const QString newSource = mSourceWidget->
sourceUri();
898 if ( newSource != mRasterLayer->
source() )
905 if ( !mRasterLayer->
isValid() )
919 mLegendConfigEmbeddedWidget->applyToLayer();
942 if ( rendererWidget )
949 mBackupCrs = mRasterLayer->
crs();
951 mMetadataFilled =
false;
957 if ( rasterRenderer )
967 mRasterLayer->
setName( mLayerOrigNameLineEd->text() );
974 mRefreshSettingsWidget->saveToLayer();
981 mResamplingUtils.refreshLayerFromWidgets();
985 if ( hueSaturationFilter )
987 hueSaturationFilter->
setSaturation( sliderSaturation->value() );
989 hueSaturationFilter->
setColorizeOn( mColorizeCheck->checkState() );
992 hueSaturationFilter->
setInvertColors( mInvertColorsCheck->isChecked() );
996 mRasterLayer->
setBlendMode( mBlendModeComboBox->blendMode() );
1001 mRasterLayer->
setCrs( mCrsSelector->crs() );
1004 mMetadataFilled =
false;
1008 mMetadataFilled =
false;
1012 mMetadataFilled =
false;
1016 mMetadataFilled =
false;
1020 mMetadataFilled =
false;
1024 mMetadataFilled =
false;
1029 mMetadataFilled =
false;
1033 mMetadataFilled =
false;
1037 QList<QgsMapLayerServerProperties::MetadataUrl> metaUrls;
1038 for (
int row = 0; row < mMetadataUrlModel->rowCount(); row++ )
1041 metaUrl.
url = mMetadataUrlModel->item( row, 0 )->text();
1042 metaUrl.
type = mMetadataUrlModel->item( row, 1 )->text();
1043 metaUrl.
format = mMetadataUrlModel->item( row, 2 )->text();
1044 metaUrls.append( metaUrl );
1045 mMetadataFilled =
false;
1049 if ( mRasterLayer->
legendUrl() != mLayerLegendUrlLineEdit->text() )
1050 mMetadataFilled =
false;
1051 mRasterLayer->
setLegendUrl( mLayerLegendUrlLineEdit->text() );
1053 if ( mRasterLayer->
legendUrlFormat() != mLayerLegendUrlFormatComboBox->currentText() )
1054 mMetadataFilled =
false;
1057 if ( !mWMSPrintLayerLineEdit->text().isEmpty() )
1059 mRasterLayer->
setCustomProperty( QStringLiteral(
"WMSPrintLayer" ), mWMSPrintLayerLineEdit->text() );
1062 mRasterLayer->
setCustomProperty(
"WMSPublishDataSourceUrl", mPublishDataSourceUrlCheckBox->isChecked() );
1063 mRasterLayer->
setCustomProperty(
"WMSBackgroundLayer", mBackgroundLayerCheckBox->isChecked() );
1080void QgsRasterLayerProperties::buttonBuildPyramids_clicked()
1092 for (
int myCounterInt = 0; myCounterInt < lbxPyramidResolutions->count(); myCounterInt++ )
1094 QListWidgetItem *myItem = lbxPyramidResolutions->item( myCounterInt );
1096 myPyramidList[myCounterInt].setBuild( myItem->isSelected() || myPyramidList[myCounterInt].getExists() );
1100 QString prefix = provider->
name() +
"/driverOptions/_pyramids/";
1102 QString resamplingMethod( cboResamplingMethod->currentData().toString() );
1103 mySettings.
setValue( prefix +
"resampling", resamplingMethod );
1110 QApplication::setOverrideCursor( Qt::WaitCursor );
1118 QApplication::restoreOverrideCursor();
1119 mPyramidProgress->setValue( 0 );
1120 buttonBuildPyramids->setEnabled(
false );
1121 if ( !res.isNull() )
1123 if ( res == QLatin1String(
"CANCELED" ) )
1127 else if ( res == QLatin1String(
"ERROR_WRITE_ACCESS" ) )
1129 QMessageBox::warning(
this, tr(
"Building Pyramids" ), tr(
"Write access denied. Adjust the file permissions and try again." ) );
1131 else if ( res == QLatin1String(
"ERROR_WRITE_FORMAT" ) )
1133 QMessageBox::warning(
this, tr(
"Building Pyramids" ), tr(
"The file was not writable. Some formats do not "
1134 "support pyramid overviews. Consult the GDAL documentation if in doubt." ) );
1136 else if ( res == QLatin1String(
"FAILED_NOT_SUPPORTED" ) )
1138 QMessageBox::warning(
this, tr(
"Building Pyramids" ), tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1140 else if ( res == QLatin1String(
"ERROR_JPEG_COMPRESSION" ) )
1142 QMessageBox::warning(
this, tr(
"Building Pyramids" ), tr(
"Building internal pyramid overviews is not supported on raster layers with JPEG compression and your current libtiff library." ) );
1144 else if ( res == QLatin1String(
"ERROR_VIRTUAL" ) )
1146 QMessageBox::warning(
this, tr(
"Building Pyramids" ), tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1153 lbxPyramidResolutions->clear();
1161 if ( pyramid.getExists() )
1163 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap, QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) + QString::number( pyramid.getYDim() ) ) );
1167 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap, QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) + QString::number( pyramid.getYDim() ) ) );
1176 updateInformationContent();
1179void QgsRasterLayerProperties::mRenderTypeComboBox_currentIndexChanged(
int index )
1181 if ( index < 0 || mDisableRenderTypeComboBoxCurrentIndexChanged || !mRasterLayer->renderer() )
1186 QString rendererName = mRenderTypeComboBox->itemData( index ).toString();
1187 setRendererWidget( rendererName );
1197void QgsRasterLayerProperties::aboutToShowStyleMenu()
1201 QMenu *m = qobject_cast<QMenu *>( sender() );
1209void QgsRasterLayerProperties::syncToLayer()
1214 setRendererWidget( renderer->
type() );
1224 if ( !mHistogramWidget )
1236 if ( index ==
mOptStackedWidget->indexOf( mOptsPage_Information ) || !mMetadataFilled )
1239 updateInformationContent();
1245 button->blockSignals(
true );
1249 button->blockSignals(
false );
1252void QgsRasterLayerProperties::updateDataDefinedButtons()
1254 const auto propertyOverrideButtons { findChildren<QgsPropertyOverrideButton *>() };
1257 updateDataDefinedButton( button );
1273void QgsRasterLayerProperties::updateProperty()
1280void QgsRasterLayerProperties::toggleSaturationControls(
int grayscaleMode )
1283 if ( grayscaleMode == 0 )
1285 sliderSaturation->setEnabled(
true );
1286 spinBoxSaturation->setEnabled(
true );
1290 sliderSaturation->setEnabled(
false );
1291 spinBoxSaturation->setEnabled(
false );
1295void QgsRasterLayerProperties::toggleColorizeControls(
bool colorizeEnabled )
1298 btnColorizeColor->setEnabled( colorizeEnabled );
1299 sliderColorizeStrength->setEnabled( colorizeEnabled );
1300 spinColorizeStrength->setEnabled( colorizeEnabled );
1304QLinearGradient QgsRasterLayerProperties::redGradient()
1308 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1309 myGradient.setColorAt( 0.0, QColor( 242, 14, 25, 190 ) );
1310 myGradient.setColorAt( 0.5, QColor( 175, 29, 37, 190 ) );
1311 myGradient.setColorAt( 1.0, QColor( 114, 17, 22, 190 ) );
1314QLinearGradient QgsRasterLayerProperties::greenGradient()
1318 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1319 myGradient.setColorAt( 0.0, QColor( 48, 168, 5, 190 ) );
1320 myGradient.setColorAt( 0.8, QColor( 36, 122, 4, 190 ) );
1321 myGradient.setColorAt( 1.0, QColor( 21, 71, 2, 190 ) );
1324QLinearGradient QgsRasterLayerProperties::blueGradient()
1328 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1329 myGradient.setColorAt( 0.0, QColor( 30, 0, 106, 190 ) );
1330 myGradient.setColorAt( 0.2, QColor( 30, 72, 128, 190 ) );
1331 myGradient.setColorAt( 1.0, QColor( 30, 223, 196, 190 ) );
1334QLinearGradient QgsRasterLayerProperties::grayGradient()
1338 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1339 myGradient.setColorAt( 0.0, QColor( 5, 5, 5, 190 ) );
1340 myGradient.setColorAt( 0.8, QColor( 122, 122, 122, 190 ) );
1341 myGradient.setColorAt( 1.0, QColor( 220, 220, 220, 190 ) );
1344QLinearGradient QgsRasterLayerProperties::highlightGradient()
1348 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1349 myGradient.setColorAt( 1.0, QColor( 255, 255, 255, 50 ) );
1350 myGradient.setColorAt( 0.5, QColor( 255, 255, 255, 100 ) );
1351 myGradient.setColorAt( 0.0, QColor( 255, 255, 255, 150 ) );
1355void QgsRasterLayerProperties::addMetadataUrl()
1357 const int row = mMetadataUrlModel->rowCount();
1358 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( QLatin1String() ) );
1359 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( QLatin1String() ) );
1360 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( QLatin1String() ) );
1363void QgsRasterLayerProperties::removeSelectedMetadataUrl()
1365 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
1366 if ( selectedRows.empty() )
1368 mMetadataUrlModel->removeRow( selectedRows[0].row() );
1383void QgsRasterLayerProperties::restoreWindowModality()
1392void QgsRasterLayerProperties::toggleBuildPyramidsButton()
1394 if ( lbxPyramidResolutions->selectedItems().empty() )
1396 buttonBuildPyramids->setEnabled(
false );
1400 buttonBuildPyramids->setEnabled(
true );
1404void QgsRasterLayerProperties::mResetColorRenderingBtn_clicked()
1406 mBlendModeComboBox->setBlendMode( QPainter::CompositionMode_SourceOver );
1407 mSliderBrightness->setValue( 0 );
1408 mSliderContrast->setValue( 0 );
1409 mGammaSpinBox->setValue( 1.0 );
1410 sliderSaturation->setValue( 0 );
1412 mColorizeCheck->setChecked(
false );
1413 sliderColorizeStrength->setValue( 100 );
1414 mInvertColorsCheck->setChecked(
false );
1417bool QgsRasterLayerProperties::rasterIsMultiBandColor()
1422void QgsRasterLayerProperties::updateInformationContent()
1426 const QString html { mRasterLayer->
htmlMetadata().replace( QLatin1String(
"<head>" ), QStringLiteral( R
"raw(<head><style type="text/css">%1</style>)raw" ) ).arg( myStyle ) };
1427 mMetadataViewer->setHtml( html );
1428 mMetadataFilled = true;
1434 if ( mRasterAttributeTableWidget && mRasterAttributeTableWidget->isDirty() )
1436 mRasterAttributeTableWidget->setEditable(
false,
false );
1440 if ( mBackupCrs != mRasterLayer->
crs() )
1441 mRasterLayer->
setCrs( mBackupCrs );
1444void QgsRasterLayerProperties::showHelp()
1446 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property(
"helpPage" );
1448 if ( helpPage.isValid() )
1454 QgsHelp::openHelp( QStringLiteral(
"working_with_raster/raster_properties.html" ) );
1458void QgsRasterLayerProperties::updateGammaSpinBox(
int value )
1463void QgsRasterLayerProperties::updateGammaSlider(
double value )
1472 if ( obj == mMapTipPreviewContainer && ev->type() == QEvent::Resize )
1476 return QgsOptionsDialogBase::eventFilter( obj, ev );
1479void QgsRasterLayerProperties::initMapTipPreview()
1482 mMapTipSplitter->setSizes( { 400, 200 } );
1484 mMapTipPreviewContainer->installEventFilter(
this );
1488 mMapTipPreview =
new QgsWebView( mMapTipPreviewContainer );
1491 mMapTipPreview->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
1492 mMapTipPreview->setContextMenuPolicy( Qt::NoContextMenu );
1493 connect( mMapTipPreview, &QWebView::loadFinished,
this, &QgsRasterLayerProperties::resizeMapTip );
1496 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
1497 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
1498 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::LocalStorageEnabled,
true );
1501 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
1502 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
1506 connect( mMapTipWidget, &QgsCodeEditorHTML::textChanged,
this, &QgsRasterLayerProperties::updateMapTipPreview );
1509void QgsRasterLayerProperties::updateMapTipPreview()
1511 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1513 mMapTipPreview->setHtml( htmlContent );
1516void QgsRasterLayerProperties::resizeMapTip()
1519 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1522 const QWebElement container = mMapTipPreview->page()->mainFrame()->findFirstElement(
1523 QStringLiteral(
"#QgsWebViewContainer" )
1525 const int width = container.geometry().width();
1526 const int height = container.geometry().height();
1527 mMapTipPreview->resize( width, height );
1530 mMapTipPreview->move( ( mMapTipPreviewContainer->width() - mMapTipPreview->width() ) / 2, ( mMapTipPreviewContainer->height() - mMapTipPreview->height() ) / 2 );
1533 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