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, [ = ]
229 QgsCreateRasterAttributeTableDialog dlg { mRasterLayer };
230 dlg.setOpenWhenDoneVisible(
false );
231 if ( dlg.exec() == QDialog::Accepted )
233 updateRasterAttributeTableOptionsPage();
238 connect( mLoadRasterAttributeTableFromFileButton, &QPushButton::clicked,
this, [ = ]
243 if ( dlg.exec() == QDialog::Accepted )
245 updateRasterAttributeTableOptionsPage();
249 mBackupCrs = mRasterLayer->crs();
252 if ( mCanvas && mRasterTransparencyWidget->pixelSelectorTool() )
264 connect( mRasterTransparencyWidget->pbnAddValuesFromDisplay, &QPushButton::clicked,
this, [ = ]
270 mCanvas->window()->raise();
271 mCanvas->window()->activateWindow();
272 mCanvas->window()->setFocus();
278 mContext = mCanvas->createExpressionContext();
292 connect( mInsertExpressionButton, &QAbstractButton::clicked,
this, [ = ]
295 int selectionStart = mMapTipWidget->selectionStart();
296 int selectionEnd = mMapTipWidget->selectionEnd();
300 exprDlg.setWindowTitle( tr(
"Insert Expression" ) );
301 if ( exprDlg.exec() == QDialog::Accepted && !exprDlg.expressionText().trimmed().isEmpty() )
302 mMapTipWidget->insertText(
"[%" + exprDlg.expressionText().trimmed() +
"%]" );
304 mMapTipWidget->setLinearSelection( selectionStart, selectionEnd );
315 cboResamplingMethod->clear();
318 for (
const QPair<QString, QString> &method : std::as_const( constProviderType ) )
320 cboResamplingMethod->addItem( method.second, method.first );
324 QString prefix = provider->name() +
"/driverOptions/_pyramids/";
326 QString defaultMethod = mySettings.
value( prefix +
"resampling",
"AVERAGE" ).toString();
327 int idx = cboResamplingMethod->findData( defaultMethod );
329 cboResamplingMethod->setCurrentIndex( idx );
333 const QList< QgsRasterPyramid > myPyramidList = provider->buildPyramidList();
337 if ( pyramid.getExists() )
339 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap,
340 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
341 QString::number( pyramid.getYDim() ) ) );
345 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap,
346 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
347 QString::number( pyramid.getYDim() ) ) );
354 mOptsPage_Pyramids->setEnabled(
false );
363 mOptsPage_Histogram->setEnabled(
false );
366 QVBoxLayout *layout =
new QVBoxLayout( metadataFrame );
367 layout->setContentsMargins( 0, 0, 0, 0 );
369 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
370 mMetadataWidget->setMapCanvas( mCanvas );
371 layout->addWidget( mMetadataWidget );
372 metadataFrame->setLayout( layout );
374 QVBoxLayout *temporalLayout =
new QVBoxLayout( temporalFrame );
375 temporalLayout->setContentsMargins( 0, 0, 0, 0 );
377 temporalLayout->addWidget( mTemporalWidget );
380 QgsDebugMsgLevel(
"Setting crs to " + mRasterLayer->crs().userFriendlyIdentifier(), 2 );
381 mCrsSelector->setCrs( mRasterLayer->crs() );
384 QString pyramidFormat( QStringLiteral(
"<h2>%1</h2><p>%2 %3 %4</p><b><font color='red'><p>%5</p><p>%6</p>" ) );
385 QString pyramidHeader = tr(
"Description" );
386 QString pyramidSentence1 = tr(
"Large resolution raster layers can slow navigation in QGIS." );
387 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." );
388 QString pyramidSentence3 = tr(
"You must have write access in the directory where the original data is stored to build pyramids." );
389 QString pyramidSentence4 = tr(
"Please note that building internal pyramids may alter the original data file and once created they cannot be removed!" );
390 QString pyramidSentence5 = tr(
"Please note that building internal pyramids could corrupt your image - always make a backup of your data first!" );
392 tePyramidDescription->setHtml( pyramidFormat.arg( pyramidHeader,
397 pyramidSentence5 ) );
400 mResamplingGroupBox->setSaveCheckedState(
true );
401 mResamplingUtils.initWidgets( mRasterLayer, mZoomedInResamplingComboBox, mZoomedOutResamplingComboBox, mMaximumOversamplingSpinBox, mCbEarlyResampling );
402 mResamplingUtils.refreshWidgetsFromLayer();
406 btnColorizeColor->setColorDialogTitle( tr(
"Select Color" ) );
407 btnColorizeColor->setContext( QStringLiteral(
"symbology" ) );
412 if ( hueSaturationFilter )
414 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
415 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
418 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
421 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
422 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
423 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
424 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
425 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
430 mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );
435 mRasterTransparencyWidget->cboxTransparencyBand->setShowNotSetOption(
true, tr(
"None" ) );
436 mRasterTransparencyWidget->cboxTransparencyBand->setLayer( mRasterLayer );
445 cboxTransparencyBand->setCurrentIndex( cboxTransparencyBand->findData( renderer->
alphaBand() ) );
452 mHistogramWidget =
nullptr;
453 if ( mOptsPage_Histogram->isEnabled() )
456 mHistogramStackedWidget->addWidget( mHistogramWidget );
470 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
472 for (
const QString &name : constRenderersList )
483 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
488 QString rendererType = renderer->
type();
489 widgetIndex = mRenderTypeComboBox->findData( rendererType );
490 if ( widgetIndex != -1 )
492 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
493 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
494 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
497 if ( rendererType == QLatin1String(
"singlebandcolordata" ) && mRenderTypeComboBox->count() == 1 )
500 QSizePolicy sizep = mBandRenderingGrpBx->sizePolicy();
501 sizep.setVerticalStretch( 0 );
502 sizep.setVerticalPolicy( QSizePolicy::Maximum );
503 mBandRenderingGrpBx->setSizePolicy( sizep );
504 mBandRenderingGrpBx->updateGeometry();
507 if ( mRasterLayer->providerType() != QLatin1String(
"wms" ) )
509 mWMSPrintGroupBox->hide();
510 mPublishDataSourceUrlCheckBox->hide();
511 mBackgroundLayerCheckBox->hide();
518 const int horizontalDpi = logicalDpiX();
521 if ( horizontalDpi > 96 )
523 mMetadataViewer->setZoomFactor( mMetadataViewer->zoomFactor() * 0.9 );
525 mMetadataViewer->page()->setLinkDelegationPolicy( QWebPage::LinkDelegationPolicy::DelegateAllLinks );
527 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
528 mMetadataViewer->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
534 mRenderTypeComboBox_currentIndexChanged( widgetIndex );
536 setMetadataWidget( mMetadataWidget, mOptsPage_Metadata );
538 QMenu *menuStyle =
new QMenu(
this );
541 menuStyle->addSeparator();
544 mBtnStyle->setMenu( menuStyle );
545 connect( menuStyle, &QMenu::aboutToShow,
this, &QgsRasterLayerProperties::aboutToShowStyleMenu );
547 mBtnMetadata =
new QPushButton( tr(
"Metadata" ),
this );
548 QMenu *menuMetadata =
new QMenu(
this );
551 menuMetadata->addSeparator();
554 mBtnMetadata->setMenu( menuMetadata );
555 buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );
563 if ( !settings.
contains( QStringLiteral(
"/Windows/RasterLayerProperties/tab" ) ) )
565 settings.
setValue( QStringLiteral(
"Windows/RasterLayerProperties/tab" ),
566 mOptStackedWidget->indexOf( mOptsPage_Style ) );
571 optionsStackedWidget_CurrentChanged( mOptionsStackedWidget->currentIndex() );
574 mOptsPage_Information->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#information-properties" ) );
575 mOptsPage_Source->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#source-properties" ) );
576 mOptsPage_Style->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#symbology-properties" ) );
577 mOptsPage_Transparency->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#transparency-properties" ) );
579 if ( mOptsPage_Histogram )
580 mOptsPage_Histogram->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#histogram-properties" ) );
582 mOptsPage_Rendering->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#rendering-properties" ) );
583 mOptsPage_Temporal->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#temporal-properties" ) );
585 if ( mOptsPage_Pyramids )
586 mOptsPage_Pyramids->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#pyramids-properties" ) );
588 if ( mOptsPage_Display )
589 mOptsPage_Display->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#display-properties" ) );
591 mOptsPage_Metadata->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#metadata-properties" ) );
592 mOptsPage_Legend->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#legend-properties" ) );
593 mOptsPage_Server->setProperty(
"helpPage", QStringLiteral(
"working_with_raster/raster_properties.html#server-properties" ) );
613 if ( beforePage.isEmpty() )
631void QgsRasterLayerProperties::updateRasterAttributeTableOptionsPage( )
633 if ( mRasterAttributeTableWidget )
635 mOptsPage_RasterAttributeTable->layout()->removeWidget( mRasterAttributeTableWidget );
636 mRasterAttributeTableWidget =
nullptr;
642 mRasterAttributeTableWidget =
new QgsRasterAttributeTableWidget(
this, mRasterLayer );
643 mOptsPage_RasterAttributeTable->layout()->addWidget( mRasterAttributeTableWidget );
645 connect( mRasterAttributeTableWidget, &QgsRasterAttributeTableWidget::rendererChanged,
this, &QgsRasterLayerProperties::syncToLayer );
646 mNoRasterAttributeTableWidget->hide();
650 mNoRasterAttributeTableWidget->show();
655void QgsRasterLayerProperties::setRendererWidget(
const QString &rendererName )
664 const QList<int> oldBands = oldRenderer ? oldRenderer->
usesBands() : QList<int>();
669 opacity = oldRenderer->
opacity();
678 QgsDebugMsgLevel( QStringLiteral(
"renderer has widgetCreateFunction" ), 3 );
681 if ( oldWidget && ( !oldRenderer || rendererName != oldRenderer->
type() ) )
683 if ( rendererName == QLatin1String(
"singlebandgray" ) )
686 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
688 else if ( rendererName == QLatin1String(
"multibandcolor" ) )
691 whileBlocking( mRasterLayer )->setDefaultContrastEnhancement();
699 mRendererStackedWidget->addWidget( mRendererWidget );
703 std::unique_ptr<QgsRasterRenderer> newRenderer;
704 newRenderer.reset( mRendererWidget->
renderer() );
705 const QList<int> newBands = newRenderer->usesBands();
706 if ( oldBands != newBands )
714 const int widgetIndex = mRenderTypeComboBox->findData( rendererName );
715 if ( widgetIndex != -1 )
717 mDisableRenderTypeComboBoxCurrentIndexChanged =
true;
718 mRenderTypeComboBox->setCurrentIndex( widgetIndex );
719 mDisableRenderTypeComboBoxCurrentIndexChanged =
false;
722 if ( mRendererWidget != oldWidget )
725 if ( mHistogramWidget )
731void QgsRasterLayerProperties::sync()
735 if ( !mSourceWidget )
740 QHBoxLayout *layout =
new QHBoxLayout();
741 layout->addWidget( mSourceWidget );
742 mSourceGroupBox->setLayout( layout );
744 mSourceGroupBox->setTitle( mSourceWidget->
groupTitle() );
745 mSourceGroupBox->show();
749 buttonBox->button( QDialogButtonBox::Apply )->setEnabled( isValid );
750 buttonBox->button( QDialogButtonBox::Ok )->setEnabled( isValid );
770 mRasterTransparencyWidget->gboxNoDataValue->setEnabled(
false );
771 mRasterTransparencyWidget->gboxCustomTransparency->setEnabled(
false );
772 mOptionsStackedWidget->setCurrentWidget( mOptsPage_Server );
779 if ( mOptsPage_Pyramids )
781 delete mOptsPage_Pyramids;
782 mOptsPage_Pyramids =
nullptr;
788 if ( mOptsPage_Histogram )
790 delete mOptsPage_Histogram;
791 mOptsPage_Histogram =
nullptr;
792 delete mHistogramWidget;
793 mHistogramWidget =
nullptr;
805 if ( brightnessFilter )
807 mSliderBrightness->setValue( brightnessFilter->
brightness() );
808 mSliderContrast->setValue( brightnessFilter->
contrast() );
809 mGammaSpinBox->setValue( brightnessFilter->
gamma() );
815 if ( hueSaturationFilter )
817 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
818 comboGrayscale->setCurrentIndex( (
int ) hueSaturationFilter->
grayscaleMode() );
821 toggleSaturationControls(
static_cast<int>( hueSaturationFilter->
grayscaleMode() ) );
824 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
825 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
826 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
827 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
828 mInvertColorsCheck->setChecked( hueSaturationFilter->
invertColors() );
831 mRefreshSettingsWidget->syncToLayer();
838 mLayerOrigNameLineEd->setText( mRasterLayer->
name() );
845 updateInformationContent();
851 mLayerShortNameLineEdit->setValidator( shortNameValidator );
858 mLayerDataUrlFormatComboBox->setCurrentIndex(
859 mLayerDataUrlFormatComboBox->findText(
872 const int row = mMetadataUrlModel->rowCount();
873 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( metaUrl.url ) );
874 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( metaUrl.type ) );
875 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( metaUrl.format ) );
879 mLayerLegendUrlLineEdit->setText( mRasterLayer->
legendUrl() );
880 mLayerLegendUrlFormatComboBox->setCurrentIndex( mLayerLegendUrlFormatComboBox->findText( mRasterLayer->
legendUrlFormat() ) );
886 QVariant wmsPrintLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSPrintLayer" ) );
887 if ( wmsPrintLayer.isValid() )
889 mWMSPrintLayerLineEdit->setText( wmsPrintLayer.toString() );
892 QVariant wmsPublishDataSourceUrl = mRasterLayer->
customProperty( QStringLiteral(
"WMSPublishDataSourceUrl" ),
false );
893 mPublishDataSourceUrlCheckBox->setChecked( wmsPublishDataSourceUrl.toBool() );
895 QVariant wmsBackgroundLayer = mRasterLayer->
customProperty( QStringLiteral(
"WMSBackgroundLayer" ),
false );
896 mBackgroundLayerCheckBox->setChecked( wmsBackgroundLayer.toBool() );
898 mLegendPlaceholderWidget->setLastPathSettingsKey( QStringLiteral(
"lastLegendPlaceholderDir" ) );
900 mLegendConfigEmbeddedWidget->setLayer( mRasterLayer );
905 updateDataDefinedButtons();
909 page->syncToLayer( mRasterLayer );
918 const QString newSource = mSourceWidget->
sourceUri();
919 if ( newSource != mRasterLayer->
source() )
926 if ( !mRasterLayer->
isValid() )
940 mLegendConfigEmbeddedWidget->applyToLayer();
963 if ( rendererWidget )
970 mBackupCrs = mRasterLayer->
crs();
972 mMetadataFilled =
false;
978 if ( rasterRenderer )
988 mRasterLayer->
setName( mLayerOrigNameLineEd->text() );
995 mRefreshSettingsWidget->saveToLayer();
1002 mResamplingUtils.refreshLayerFromWidgets();
1006 if ( hueSaturationFilter )
1008 hueSaturationFilter->
setSaturation( sliderSaturation->value() );
1010 hueSaturationFilter->
setColorizeOn( mColorizeCheck->checkState() );
1013 hueSaturationFilter->
setInvertColors( mInvertColorsCheck->isChecked() );
1017 mRasterLayer->
setBlendMode( mBlendModeComboBox->blendMode() );
1022 mRasterLayer->
setCrs( mCrsSelector->crs() );
1025 mMetadataFilled =
false;
1029 mMetadataFilled =
false;
1033 mMetadataFilled =
false;
1037 mMetadataFilled =
false;
1041 mMetadataFilled =
false;
1045 mMetadataFilled =
false;
1050 mMetadataFilled =
false;
1054 mMetadataFilled =
false;
1058 QList<QgsMapLayerServerProperties::MetadataUrl> metaUrls;
1059 for (
int row = 0; row < mMetadataUrlModel->rowCount() ; row++ )
1062 metaUrl.
url = mMetadataUrlModel->item( row, 0 )->text();
1063 metaUrl.
type = mMetadataUrlModel->item( row, 1 )->text();
1064 metaUrl.
format = mMetadataUrlModel->item( row, 2 )->text();
1065 metaUrls.append( metaUrl );
1066 mMetadataFilled =
false;
1070 if ( mRasterLayer->
legendUrl() != mLayerLegendUrlLineEdit->text() )
1071 mMetadataFilled =
false;
1072 mRasterLayer->
setLegendUrl( mLayerLegendUrlLineEdit->text() );
1074 if ( mRasterLayer->
legendUrlFormat() != mLayerLegendUrlFormatComboBox->currentText() )
1075 mMetadataFilled =
false;
1078 if ( !mWMSPrintLayerLineEdit->text().isEmpty() )
1080 mRasterLayer->
setCustomProperty( QStringLiteral(
"WMSPrintLayer" ), mWMSPrintLayerLineEdit->text() );
1083 mRasterLayer->
setCustomProperty(
"WMSPublishDataSourceUrl", mPublishDataSourceUrlCheckBox->isChecked() );
1084 mRasterLayer->
setCustomProperty(
"WMSBackgroundLayer", mBackgroundLayerCheckBox->isChecked() );
1101void QgsRasterLayerProperties::buttonBuildPyramids_clicked()
1113 for (
int myCounterInt = 0; myCounterInt < lbxPyramidResolutions->count(); myCounterInt++ )
1115 QListWidgetItem *myItem = lbxPyramidResolutions->item( myCounterInt );
1117 myPyramidList[myCounterInt].setBuild( myItem->isSelected() || myPyramidList[myCounterInt].getExists() );
1121 QString prefix = provider->
name() +
"/driverOptions/_pyramids/";
1123 QString resamplingMethod( cboResamplingMethod->currentData().toString() );
1124 mySettings.
setValue( prefix +
"resampling", resamplingMethod );
1131 QApplication::setOverrideCursor( Qt::WaitCursor );
1138 QApplication::restoreOverrideCursor();
1139 mPyramidProgress->setValue( 0 );
1140 buttonBuildPyramids->setEnabled(
false );
1141 if ( !res.isNull() )
1143 if ( res == QLatin1String(
"CANCELED" ) )
1147 else if ( res == QLatin1String(
"ERROR_WRITE_ACCESS" ) )
1149 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1150 tr(
"Write access denied. Adjust the file permissions and try again." ) );
1152 else if ( res == QLatin1String(
"ERROR_WRITE_FORMAT" ) )
1154 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1155 tr(
"The file was not writable. Some formats do not "
1156 "support pyramid overviews. Consult the GDAL documentation if in doubt." ) );
1158 else if ( res == QLatin1String(
"FAILED_NOT_SUPPORTED" ) )
1160 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1161 tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1163 else if ( res == QLatin1String(
"ERROR_JPEG_COMPRESSION" ) )
1165 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1166 tr(
"Building internal pyramid overviews is not supported on raster layers with JPEG compression and your current libtiff library." ) );
1168 else if ( res == QLatin1String(
"ERROR_VIRTUAL" ) )
1170 QMessageBox::warning(
this, tr(
"Building Pyramids" ),
1171 tr(
"Building pyramid overviews is not supported on this type of raster." ) );
1179 lbxPyramidResolutions->clear();
1187 if ( pyramid.getExists() )
1189 lbxPyramidResolutions->addItem(
new QListWidgetItem( myPyramidPixmap,
1190 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
1191 QString::number( pyramid.getYDim() ) ) );
1195 lbxPyramidResolutions->addItem(
new QListWidgetItem( myNoPyramidPixmap,
1196 QString::number( pyramid.getXDim() ) + QStringLiteral(
" x " ) +
1197 QString::number( pyramid.getYDim() ) ) );
1206 updateInformationContent();
1209void QgsRasterLayerProperties::mRenderTypeComboBox_currentIndexChanged(
int index )
1211 if ( index < 0 || mDisableRenderTypeComboBoxCurrentIndexChanged || ! mRasterLayer->renderer() )
1216 QString rendererName = mRenderTypeComboBox->itemData( index ).toString();
1217 setRendererWidget( rendererName );
1227void QgsRasterLayerProperties::aboutToShowStyleMenu()
1231 QMenu *m = qobject_cast<QMenu *>( sender() );
1239void QgsRasterLayerProperties::syncToLayer()
1244 setRendererWidget( renderer->
type() );
1254 if ( !mHistogramWidget )
1266 if ( index ==
mOptStackedWidget->indexOf( mOptsPage_Information ) || !mMetadataFilled )
1269 updateInformationContent();
1275 button->blockSignals(
true );
1279 button->blockSignals(
false );
1282void QgsRasterLayerProperties::updateDataDefinedButtons()
1284 const auto propertyOverrideButtons { findChildren< QgsPropertyOverrideButton * >() };
1287 updateDataDefinedButton( button );
1303void QgsRasterLayerProperties::updateProperty()
1310void QgsRasterLayerProperties::toggleSaturationControls(
int grayscaleMode )
1313 if ( grayscaleMode == 0 )
1315 sliderSaturation->setEnabled(
true );
1316 spinBoxSaturation->setEnabled(
true );
1320 sliderSaturation->setEnabled(
false );
1321 spinBoxSaturation->setEnabled(
false );
1325void QgsRasterLayerProperties::toggleColorizeControls(
bool colorizeEnabled )
1328 btnColorizeColor->setEnabled( colorizeEnabled );
1329 sliderColorizeStrength->setEnabled( colorizeEnabled );
1330 spinColorizeStrength->setEnabled( colorizeEnabled );
1334QLinearGradient QgsRasterLayerProperties::redGradient()
1338 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1339 myGradient.setColorAt( 0.0, QColor( 242, 14, 25, 190 ) );
1340 myGradient.setColorAt( 0.5, QColor( 175, 29, 37, 190 ) );
1341 myGradient.setColorAt( 1.0, QColor( 114, 17, 22, 190 ) );
1344QLinearGradient QgsRasterLayerProperties::greenGradient()
1348 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1349 myGradient.setColorAt( 0.0, QColor( 48, 168, 5, 190 ) );
1350 myGradient.setColorAt( 0.8, QColor( 36, 122, 4, 190 ) );
1351 myGradient.setColorAt( 1.0, QColor( 21, 71, 2, 190 ) );
1354QLinearGradient QgsRasterLayerProperties::blueGradient()
1358 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1359 myGradient.setColorAt( 0.0, QColor( 30, 0, 106, 190 ) );
1360 myGradient.setColorAt( 0.2, QColor( 30, 72, 128, 190 ) );
1361 myGradient.setColorAt( 1.0, QColor( 30, 223, 196, 190 ) );
1364QLinearGradient QgsRasterLayerProperties::grayGradient()
1368 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1369 myGradient.setColorAt( 0.0, QColor( 5, 5, 5, 190 ) );
1370 myGradient.setColorAt( 0.8, QColor( 122, 122, 122, 190 ) );
1371 myGradient.setColorAt( 1.0, QColor( 220, 220, 220, 190 ) );
1374QLinearGradient QgsRasterLayerProperties::highlightGradient()
1378 QLinearGradient myGradient = QLinearGradient( mGradientWidth, 0, mGradientWidth, mGradientHeight );
1379 myGradient.setColorAt( 1.0, QColor( 255, 255, 255, 50 ) );
1380 myGradient.setColorAt( 0.5, QColor( 255, 255, 255, 100 ) );
1381 myGradient.setColorAt( 0.0, QColor( 255, 255, 255, 150 ) );
1385void QgsRasterLayerProperties::addMetadataUrl()
1387 const int row = mMetadataUrlModel->rowCount();
1388 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( QLatin1String() ) );
1389 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( QLatin1String() ) );
1390 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( QLatin1String() ) );
1393void QgsRasterLayerProperties::removeSelectedMetadataUrl()
1395 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
1396 if ( selectedRows.empty() )
1398 mMetadataUrlModel->removeRow( selectedRows[0].row() );
1413void QgsRasterLayerProperties::restoreWindowModality()
1422void QgsRasterLayerProperties::toggleBuildPyramidsButton()
1424 if ( lbxPyramidResolutions->selectedItems().empty() )
1426 buttonBuildPyramids->setEnabled(
false );
1430 buttonBuildPyramids->setEnabled(
true );
1434void QgsRasterLayerProperties::mResetColorRenderingBtn_clicked()
1436 mBlendModeComboBox->setBlendMode( QPainter::CompositionMode_SourceOver );
1437 mSliderBrightness->setValue( 0 );
1438 mSliderContrast->setValue( 0 );
1439 mGammaSpinBox->setValue( 1.0 );
1440 sliderSaturation->setValue( 0 );
1442 mColorizeCheck->setChecked(
false );
1443 sliderColorizeStrength->setValue( 100 );
1444 mInvertColorsCheck->setChecked(
false );
1447bool QgsRasterLayerProperties::rasterIsMultiBandColor()
1452void QgsRasterLayerProperties::updateInformationContent()
1456 const QString html { mRasterLayer->
htmlMetadata().replace( QLatin1String(
"<head>" ), QStringLiteral( R
"raw(<head><style type="text/css">%1</style>)raw" ) ).arg( myStyle ) };
1457 mMetadataViewer->setHtml( html );
1458 mMetadataFilled = true;
1464 if ( mRasterAttributeTableWidget && mRasterAttributeTableWidget->isDirty() )
1466 mRasterAttributeTableWidget->setEditable(
false,
false );
1470 if ( mBackupCrs != mRasterLayer->
crs() )
1471 mRasterLayer->
setCrs( mBackupCrs );
1474void QgsRasterLayerProperties::showHelp()
1476 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property(
"helpPage" );
1478 if ( helpPage.isValid() )
1484 QgsHelp::openHelp( QStringLiteral(
"working_with_raster/raster_properties.html" ) );
1488void QgsRasterLayerProperties::updateGammaSpinBox(
int value )
1493void QgsRasterLayerProperties::updateGammaSlider(
double value )
1502 if ( obj == mMapTipPreviewContainer && ev->type() == QEvent::Resize )
1506 return QgsOptionsDialogBase::eventFilter( obj, ev );
1509void QgsRasterLayerProperties::initMapTipPreview()
1512 mMapTipSplitter->setSizes( { 400, 200 } );
1514 mMapTipPreviewContainer->installEventFilter(
this );
1518 mMapTipPreview =
new QgsWebView( mMapTipPreviewContainer );
1521 mMapTipPreview->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
1522 mMapTipPreview->setContextMenuPolicy( Qt::NoContextMenu );
1523 connect( mMapTipPreview, &QWebView::loadFinished,
this, &QgsRasterLayerProperties::resizeMapTip );
1526 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
1527 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
1528 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::LocalStorageEnabled,
true );
1531 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
1532 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
1536 connect( mMapTipWidget, &QgsCodeEditorHTML::textChanged,
this, &QgsRasterLayerProperties::updateMapTipPreview );
1539void QgsRasterLayerProperties::updateMapTipPreview()
1541 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1543 mMapTipPreview->setHtml( htmlContent );
1546void QgsRasterLayerProperties::resizeMapTip()
1549 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
1552 const QWebElement container = mMapTipPreview->page()->mainFrame()->findFirstElement(
1553 QStringLiteral(
"#QgsWebViewContainer" ) );
1554 const int width = container.geometry().width();
1555 const int height = container.geometry().height();
1556 mMapTipPreview->resize( width, height );
1559 mMapTipPreview->move( ( mMapTipPreviewContainer->width() - mMapTipPreview->width() ) / 2,
1560 ( mMapTipPreviewContainer->height() - mMapTipPreview->height() ) / 2 );
1563 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