41#include "moc_qgsvectorlayerproperties.cpp"
78#include <QDesktopServices>
88#include <QColorDialog>
91#include <QRegularExpressionValidator>
102 , mMessageBar( messageBar )
104 , mOriginalSubsetSQL( lyr->subsetString() )
107 connect( pbnQueryBuilder, &QPushButton::clicked,
this, &QgsVectorLayerProperties::pbnQueryBuilder_clicked );
108 connect( pbnIndex, &QPushButton::clicked,
this, &QgsVectorLayerProperties::pbnIndex_clicked );
110 connect( pbnUpdateExtents, &QPushButton::clicked,
this, &QgsVectorLayerProperties::pbnUpdateExtents_clicked );
111 connect( mButtonAddJoin, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonAddJoin_clicked );
112 connect( mButtonEditJoin, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonEditJoin_clicked );
113 connect( mJoinTreeWidget, &QTreeWidget::itemDoubleClicked,
this, &QgsVectorLayerProperties::mJoinTreeWidget_itemDoubleClicked );
114 connect( mButtonRemoveJoin, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonRemoveJoin_clicked );
115 connect( mButtonAddWmsDimension, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonAddWmsDimension_clicked );
116 connect( mButtonEditWmsDimension, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonEditWmsDimension_clicked );
117 connect( mWmsDimensionsTreeWidget, &QTreeWidget::itemDoubleClicked,
this, &QgsVectorLayerProperties::mWmsDimensionsTreeWidget_itemDoubleClicked );
118 connect( mButtonRemoveWmsDimension, &QPushButton::clicked,
this, &QgsVectorLayerProperties::mButtonRemoveWmsDimension_clicked );
119 connect( mSimplifyDrawingGroupBox, &QGroupBox::toggled,
this, &QgsVectorLayerProperties::mSimplifyDrawingGroupBox_toggled );
120 connect( buttonRemoveMetadataUrl, &QPushButton::clicked,
this, &QgsVectorLayerProperties::removeSelectedMetadataUrl );
121 connect( buttonAddMetadataUrl, &QPushButton::clicked,
this, &QgsVectorLayerProperties::addMetadataUrl );
122 connect( buttonBox, &QDialogButtonBox::helpRequested,
this, &QgsVectorLayerProperties::showHelp );
131 mBtnStyle =
new QPushButton( tr(
"Style" ),
this );
132 QMenu *menuStyle =
new QMenu(
this );
133 mActionLoadStyle =
new QAction( tr(
"Load Style…" ),
this );
136 mActionSaveStyle =
new QAction( tr(
"Save Current Style…" ),
this );
139 mActionSaveMultipleStyles =
new QAction( tr(
"Save Multiple Styles…" ),
this );
140 connect( mActionSaveMultipleStyles, &QAction::triggered,
this, &QgsVectorLayerProperties::saveMultipleStylesAs );
142 mSourceGroupBox->hide();
145 connect( menuStyle, &QMenu::aboutToShow,
this, &QgsVectorLayerProperties::aboutToShowStyleMenu );
146 buttonBox->addButton(
mBtnStyle, QDialogButtonBox::ResetRole );
167 mMapTipFieldComboBox->setLayer( lyr );
168 mDisplayExpressionWidget->setLayer( lyr );
169 mDisplayExpressionWidget->registerExpressionContextGenerator(
this );
172 connect( mMapTipInsertFieldButton, &QAbstractButton::clicked,
this, &QgsVectorLayerProperties::insertField );
173 connect( mMapTipInsertExpressionButton, &QAbstractButton::clicked,
this, &QgsVectorLayerProperties::insertOrEditExpression );
178 connect( mEnableMapTips, &QAbstractButton::toggled, mHtmlMapTipGroupBox, &QWidget::setEnabled );
181 QVBoxLayout *layout =
nullptr;
186 layout =
new QVBoxLayout( labelingFrame );
187 layout->setContentsMargins( 0, 0, 0, 0 );
189 labelingDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
191 layout->addWidget( labelingDialog );
192 labelingFrame->setLayout( layout );
195 layout =
new QVBoxLayout( mMaskingFrame );
196 layout->setContentsMargins( 0, 0, 0, 0 );
197 mMaskingWidget =
new QgsMaskingWidget( mMaskingFrame );
198 mMaskingWidget->setLayer( mLayer );
199 mMaskingWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
200 layout->addWidget( mMaskingWidget );
201 mMaskingFrame->setLayout( layout );
205 labelingDialog =
nullptr;
206 mOptsPage_Labels->setEnabled(
false );
207 mOptsPage_Masks->setEnabled(
false );
208 mGeomGroupBox->setEnabled(
false );
209 mGeomGroupBox->setVisible(
false );
210 mCrsGroupBox->setEnabled(
false );
211 mCrsGroupBox->setVisible(
false );
215 QVBoxLayout *actionLayout =
new QVBoxLayout( actionOptionsFrame );
216 actionLayout->setContentsMargins( 0, 0, 0, 0 );
218 mActionDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
219 actionLayout->addWidget( mActionDialog );
222 mSourceFieldsPropertiesDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
223 mSourceFieldsFrame->setLayout(
new QVBoxLayout( mSourceFieldsFrame ) );
224 mSourceFieldsFrame->layout()->setContentsMargins( 0, 0, 0, 0 );
225 mSourceFieldsFrame->layout()->addWidget( mSourceFieldsPropertiesDialog );
230 mAttributesFormPropertiesDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
231 mAttributesFormFrame->setLayout(
new QVBoxLayout( mAttributesFormFrame ) );
232 mAttributesFormFrame->layout()->setContentsMargins( 0, 0, 0, 0 );
233 mAttributesFormFrame->layout()->addWidget( mAttributesFormPropertiesDialog );
236 QVBoxLayout *metadataLayout =
new QVBoxLayout( metadataFrame );
237 metadataLayout->setContentsMargins( 0, 0, 0, 0 );
239 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
241 metadataLayout->addWidget( mMetadataWidget );
242 metadataFrame->setLayout( metadataLayout );
244 QVBoxLayout *temporalLayout =
new QVBoxLayout( temporalFrame );
245 temporalLayout->setContentsMargins( 0, 0, 0, 0 );
247 temporalLayout->addWidget( mTemporalWidget );
251 mBtnMetadata =
new QPushButton( tr(
"Metadata" ),
this );
252 QMenu *menuMetadata =
new QMenu(
this );
255 menuMetadata->addSeparator();
259 buttonBox->addButton(
mBtnMetadata, QDialogButtonBox::ResetRole );
261 mSelectionColorButton->setAllowOpacity(
true );
262 mSelectionColorButton->setColorDialogTitle( tr(
"Override Selection Color" ) );
268 connect( mRadioOverrideSelectionColor, &QRadioButton::toggled, mSelectionColorButton, &QWidget::setEnabled );
269 mSelectionColorButton->setEnabled(
false );
270 connect( mRadioOverrideSelectionSymbol, &QRadioButton::toggled, mSelectionSymbolButton, &QWidget::setEnabled );
288 mSelectionSymbolButton->setEnabled(
false );
289 mRadioDefaultSelectionColor->setChecked(
true );
292 QVBoxLayout *diagLayout =
new QVBoxLayout( mDiagramFrame );
293 diagLayout->setContentsMargins( 0, 0, 0, 0 );
295 diagramPropertiesDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
297 diagLayout->addWidget( diagramPropertiesDialog );
298 mDiagramFrame->setLayout( diagLayout );
308 pbnIndex->setEnabled(
false );
312 pbnIndex->setEnabled(
false );
313 pbnIndex->setText( tr(
"Spatial Index Exists" ) );
320 int encindex = cboProviderEncoding->findText( enc );
323 cboProviderEncoding->insertItem( 0, enc );
326 cboProviderEncoding->setCurrentIndex( encindex );
328 else if ( mLayer->
providerType() == QLatin1String(
"ogr" ) )
333 cboProviderEncoding->setEnabled(
false );
338 mDataSourceEncodingFrame->hide();
342 mCrsSelector->setCrs( mLayer->
crs() );
345 const QList< QgsVectorLayerJoinInfo > &joins = mLayer->
vectorJoins();
348 addJoinToTreeWidget( join );
354 mLegendWidget->setMapCanvas(
mCanvas );
355 mLegendWidget->setLayer( mLayer );
356 mLegendConfigEmbeddedWidget->setLayer( mLayer );
362 mLayerShortNameLineEdit->setValidator( shortNameValidator );
371 mLayerDataUrlFormatComboBox->setCurrentIndex(
372 mLayerDataUrlFormatComboBox->findText(
381 tableViewMetadataUrl->setSelectionMode( QAbstractItemView::SingleSelection );
382 tableViewMetadataUrl->setSelectionBehavior( QAbstractItemView::SelectRows );
383 tableViewMetadataUrl->horizontalHeader()->setStretchLastSection(
true );
384 tableViewMetadataUrl->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
386 mMetadataUrlModel =
new QStandardItemModel( tableViewMetadataUrl );
387 mMetadataUrlModel->clear();
388 mMetadataUrlModel->setColumnCount( 3 );
389 QStringList metadataUrlHeaders;
390 metadataUrlHeaders << tr(
"URL" ) << tr(
"Type" ) << tr(
"Format" );
391 mMetadataUrlModel->setHorizontalHeaderLabels( metadataUrlHeaders );
392 tableViewMetadataUrl->setModel( mMetadataUrlModel );
393 tableViewMetadataUrl->setItemDelegate(
new MetadataUrlItemDelegate(
this ) );
398 const int row = mMetadataUrlModel->rowCount();
399 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( metaUrl.url ) );
400 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( metaUrl.type ) );
401 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( metaUrl.format ) );
405 mLayerLegendUrlLineEdit->setText( mLayer->
legendUrl() );
406 mLayerLegendUrlFormatComboBox->setCurrentIndex(
407 mLayerLegendUrlFormatComboBox->findText(
414 const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &wmsDims = serverProperties->
wmsDimensions();
417 addWmsDimensionInfoToTreeWidget( dim );
421 myStyle.append( QStringLiteral(
"body { margin: 10px; }\n " ) );
422 teMetadataViewer->clear();
423 teMetadataViewer->document()->setDefaultStyleSheet( myStyle );
424 teMetadataViewer->setHtml( htmlMetadata() );
425 teMetadataViewer->setOpenLinks(
false );
427 mMetadataFilled =
true;
432 if ( !settings.
contains( QStringLiteral(
"/Windows/VectorLayerProperties/tab" ) ) )
434 settings.
setValue( QStringLiteral(
"Windows/VectorLayerProperties/tab" ),
438 QList<QgsMapLayer *> dependencySources;
439 const QSet<QgsMapLayerDependency> constDependencies = mLayer->
dependencies();
444 dependencySources << layer;
450 connect(
QgsProject::instance(), &QObject::destroyed,
this, [ = ] {mLayersDependenciesTreeView->setModel(
nullptr );} );
451 mLayersDependenciesTreeView->setModel( mLayersDependenciesTreeModel );
453 mRefreshSettingsWidget->setLayer( mLayer );
456 QMenu *menu =
new QMenu(
this );
458 mAuxiliaryLayerActionNew =
new QAction( tr(
"Create" ),
this );
459 menu->addAction( mAuxiliaryLayerActionNew );
460 connect( mAuxiliaryLayerActionNew, &QAction::triggered,
this, &QgsVectorLayerProperties::onAuxiliaryLayerNew );
462 mAuxiliaryLayerActionClear =
new QAction( tr(
"Clear" ),
this );
463 menu->addAction( mAuxiliaryLayerActionClear );
464 connect( mAuxiliaryLayerActionClear, &QAction::triggered,
this, &QgsVectorLayerProperties::onAuxiliaryLayerClear );
466 mAuxiliaryLayerActionDelete =
new QAction( tr(
"Delete" ),
this );
467 menu->addAction( mAuxiliaryLayerActionDelete );
468 connect( mAuxiliaryLayerActionDelete, &QAction::triggered,
this, &QgsVectorLayerProperties::onAuxiliaryLayerDelete );
470 mAuxiliaryLayerActionExport =
new QAction( tr(
"Export" ),
this );
471 menu->addAction( mAuxiliaryLayerActionExport );
474 mAuxiliaryStorageActions->setMenu( menu );
476 connect( mAuxiliaryStorageFieldsDeleteBtn, &QPushButton::clicked,
this, &QgsVectorLayerProperties::onAuxiliaryLayerDeleteField );
477 connect( mAuxiliaryStorageFieldsAddBtn, &QPushButton::clicked,
this, &QgsVectorLayerProperties::onAuxiliaryLayerAddField );
479 updateAuxiliaryStoragePage();
481 mOptsPage_Information->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#information-properties" ) );
482 mOptsPage_Source->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#source-properties" ) );
483 mOptsPage_Style->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#symbology-properties" ) );
484 mOptsPage_Labels->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#labels-properties" ) );
485 mOptsPage_Masks->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#masks-properties" ) );
486 mOptsPage_Diagrams->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#diagrams-properties" ) );
487 mOptsPage_SourceFields->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#fields-properties" ) );
488 mOptsPage_AttributesForm->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#attributes-form-properties" ) );
489 mOptsPage_Joins->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#joins-properties" ) );
490 mOptsPage_AuxiliaryStorage->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#auxiliary-storage-properties" ) );
491 mOptsPage_Actions->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#actions-properties" ) );
492 mOptsPage_Display->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#display-properties" ) );
493 mOptsPage_Rendering->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#rendering-properties" ) );
494 mOptsPage_Temporal->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#temporal-properties" ) );
495 mOptsPage_Variables->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#variables-properties" ) );
496 mOptsPage_Metadata->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#metadata-properties" ) );
497 mOptsPage_DataDependencies->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#dependencies-properties" ) ) ;
498 mOptsPage_Legend->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#legend-properties" ) );
499 mOptsPage_Server->setProperty(
"helpPage", QStringLiteral(
"working_with_vector/vector_properties.html#qgis-server-properties" ) );
507void QgsVectorLayerProperties::toggleEditing()
512 emit toggleEditing( mLayer );
514 setPbnQueryBuilderEnabled();
517void QgsVectorLayerProperties::insertField()
521 if ( mMapTipFieldComboBox->currentField().isEmpty() )
523 QString expression = QStringLiteral(
"[%\"" );
524 expression += mMapTipFieldComboBox->currentField();
525 expression += QLatin1String(
"\"%]" );
527 mMapTipWidget->insertText( expression );
530void QgsVectorLayerProperties::insertOrEditExpression()
533 int selectionStart = mMapTipWidget->selectionStart();
534 int selectionEnd = mMapTipWidget->selectionEnd();
540 exprDlg.setWindowTitle( tr(
"Insert Expression" ) );
541 if ( exprDlg.exec() == QDialog::Accepted && !exprDlg.expressionText().trimmed().isEmpty() )
542 mMapTipWidget->insertText(
"[%" + exprDlg.expressionText().trimmed() +
"%]" );
544 mMapTipWidget->setLinearSelection( selectionStart, selectionEnd );
547void QgsVectorLayerProperties::addMetadataUrl()
549 const int row = mMetadataUrlModel->rowCount();
550 mMetadataUrlModel->setItem( row, 0,
new QStandardItem( QLatin1String() ) );
551 mMetadataUrlModel->setItem( row, 1,
new QStandardItem( QLatin1String() ) );
552 mMetadataUrlModel->setItem( row, 2,
new QStandardItem( QLatin1String() ) );
555void QgsVectorLayerProperties::removeSelectedMetadataUrl()
557 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
558 if ( selectedRows.empty() )
560 mMetadataUrlModel->removeRow( selectedRows[0].row() );
565 if ( !mSourceWidget )
570 QHBoxLayout *layout =
new QHBoxLayout();
571 layout->addWidget( mSourceWidget );
572 mSourceGroupBox->setLayout( layout );
574 mSourceGroupBox->setTitle( mSourceWidget->
groupTitle() );
576 mSourceGroupBox->show();
580 buttonBox->button( QDialogButtonBox::Apply )->setEnabled( isValid );
581 buttonBox->button( QDialogButtonBox::Ok )->setEnabled( isValid );
593 mLayerOrigNameLineEdit->setText( mLayer->
name() );
594 mBackupCrs = mLayer->
crs();
597 mSubsetGroupBox->setEnabled(
true );
604 txtSubsetSQL->setReadOnly(
true );
605 txtSubsetSQL->setCaretWidth( 0 );
606 txtSubsetSQL->setCaretLineVisible(
false );
607 setPbnQueryBuilderEnabled();
611 mSubsetGroupBox->hide();
621 mScaleRangeWidget->setMapCanvas(
mCanvas );
624 mReferenceScaleWidget->setShowCurrentScaleButton(
true );
625 mReferenceScaleWidget->setMapCanvas(
mCanvas );
626 if ( mUseReferenceScaleGroupBox->isChecked() )
634 mSimplifyDrawingSpinBox->setValue( simplifyMethod.
threshold() );
635 mSimplifyDrawingSpinBox->setClearValue( 1.0 );
640 mSelectionColorButton->setColor( selectionProperties->
selectionColor() );
644 mSelectionSymbolButton->setSymbol( symbol->clone() );
649 mRadioDefaultSelectionColor->setChecked(
true );
656 mRadioOverrideSelectionColor->setChecked(
true );
660 mRadioDefaultSelectionColor->setChecked(
true );
668 mRadioOverrideSelectionSymbol->setChecked(
true );
672 mRadioDefaultSelectionColor->setChecked(
true );
677 QString remark = QStringLiteral(
" (%1)" ).arg( tr(
"Not supported" ) );
681 mSimplifyDrawingAtProvider->setChecked(
false );
682 mSimplifyDrawingAtProvider->setEnabled(
false );
683 if ( !mSimplifyDrawingAtProvider->text().endsWith( remark ) )
684 mSimplifyDrawingAtProvider->setText( mSimplifyDrawingAtProvider->text().append( remark ) );
689 mSimplifyDrawingAtProvider->setEnabled( mSimplifyDrawingGroupBox->isChecked() );
690 if ( mSimplifyDrawingAtProvider->text().endsWith( remark ) )
692 QString newText = mSimplifyDrawingAtProvider->text();
693 newText.chop( remark.size() );
694 mSimplifyDrawingAtProvider->setText( newText );
701 mSimplifyDrawingGroupBox->setChecked(
false );
702 mSimplifyDrawingGroupBox->setEnabled(
false );
709 mSimplifyAlgorithmComboBox->setCurrentIndex( mSimplifyAlgorithmComboBox->findData( QVariant::fromValue( simplifyMethod.
simplifyAlgorithm() ) ) );
712 myScalesList.append( QStringLiteral(
"1:1" ) );
713 mSimplifyMaximumScaleComboBox->updateScales( myScalesList );
714 mSimplifyMaximumScaleComboBox->setScale( simplifyMethod.
maximumScale() );
718 mRefreshSettingsWidget->syncToLayer();
726 updateSymbologyPage();
730 if ( labelingDialog )
733 mSourceFieldsPropertiesDialog->
init();
734 mAttributesFormPropertiesDialog->
init();
737 updateVariableEditor();
739 if ( diagramPropertiesDialog )
745 page->syncToLayer( mLayer );
752 mLegendWidget->setLayer( mLayer );
758 if ( labelingDialog )
762 mBackupCrs = mLayer->
crs();
764 mLegendWidget->applyToLayer();
765 mLegendConfigEmbeddedWidget->applyToLayer();
769 mMetadataFilled =
false;
772 if ( mMaskingWidget )
773 mMaskingWidget->apply();
794 const auto constActions = mActionDialog->
actions();
795 for (
const QgsAction &action : constActions )
802 QVector<QgsAttributeTableConfig::ColumnConfig> columns = attributeTableConfig.
columns();
804 for (
int i = 0; i < columns.size(); ++i )
816 mLayer->
setName( mLayerOrigNameLineEdit->text() );
818 mAttributesFormPropertiesDialog->
apply();
819 mSourceFieldsPropertiesDialog->
apply();
831 diagramPropertiesDialog->
apply();
841 mMetadataFilled =
false;
845 mMetadataFilled =
false;
848 if ( !mLayerOptWfsTitleLineEdit->text().isEmpty() && mLayerOptWfsTitleLineEdit->text() != mLayerTitleLineEdit->text() )
851 mMetadataFilled =
false;
859 mMetadataFilled =
false;
863 mMetadataFilled =
false;
867 mMetadataFilled =
false;
871 mMetadataFilled =
false;
876 mMetadataFilled =
false;
880 mMetadataFilled =
false;
884 QList<QgsMapLayerServerProperties::MetadataUrl> metaUrls;
885 for (
int row = 0; row < mMetadataUrlModel->rowCount() ; row++ )
888 metaUrl.
url = mMetadataUrlModel->item( row, 0 )->text();
889 metaUrl.
type = mMetadataUrlModel->item( row, 1 )->text();
890 metaUrl.
format = mMetadataUrlModel->item( row, 2 )->text();
891 metaUrls.append( metaUrl );
892 mMetadataFilled =
false;
897 if ( mLayer->
legendUrl() != mLayerLegendUrlLineEdit->text() )
898 mMetadataFilled =
false;
899 mLayer->
setLegendUrl( mLayerLegendUrlLineEdit->text() );
901 if ( mLayer->
legendUrlFormat() != mLayerLegendUrlFormatComboBox->currentText() )
902 mMetadataFilled =
false;
907 if ( mSimplifyDrawingGroupBox->isChecked() )
910 if ( mSimplifyDrawingSpinBox->value() > 1 )
916 simplifyMethod.
setThreshold( mSimplifyDrawingSpinBox->value() );
918 simplifyMethod.
setMaximumScale( mSimplifyMaximumScaleComboBox->scale() );
928 if ( mSelectionColorButton->color() != mSelectionColorButton->defaultColor() )
932 if (
QgsSymbol *symbol = mSelectionSymbolButton->symbol() )
935 if ( mRadioOverrideSelectionSymbol->isChecked() )
939 else if ( mRadioOverrideSelectionColor->isChecked() )
948 mRefreshSettingsWidget->saveToLayer();
951 mLayer->
setRefreshOnNofifyMessage( mNotificationMessageCheckBox->isChecked() ? mNotifyMessagValueLineEdit->text() : QString() );
957 updateVariableEditor();
960 QSet<QgsMapLayerDependency> deps;
961 const auto checkedLayers = mLayersDependenciesTreeModel->
checkedLayers();
966 QMessageBox::warning(
nullptr, tr(
"Save Dependency" ), tr(
"This configuration introduces a cycle in data dependencies and will be ignored." ) );
975 bool dialogNeedsResync =
false;
978 const QString newSource = mSourceWidget->
sourceUri();
979 if ( newSource != mLayer->
source() )
987 dialogNeedsResync =
true;
993 mSubsetGroupBox->setEnabled(
true );
998 mMetadataFilled =
false;
1000 dialogNeedsResync =
true;
1004 if ( dialogNeedsResync )
1009 mProjectDirtyBlocker.reset();
1022 const auto constVectorJoins = mLayer->
vectorJoins();
1044 if ( backupCrs != mLayer->
crs() )
1045 mLayer->
setCrs( backupCrs );
1049void QgsVectorLayerProperties::pbnQueryBuilder_clicked()
1058 if ( dialog->exec() )
1072void QgsVectorLayerProperties::pbnIndex_clicked()
1077 setCursor( Qt::WaitCursor );
1079 setCursor( Qt::ArrowCursor );
1082 pbnIndex->setEnabled(
false );
1083 pbnIndex->setText( tr(
"Spatial Index Exists" ) );
1084 QMessageBox::information(
this, tr(
"Spatial Index" ), tr(
"Creation of spatial index successful" ) );
1088 QMessageBox::warning(
this, tr(
"Spatial Index" ), tr(
"Creation of spatial index failed" ) );
1093QString QgsVectorLayerProperties::htmlMetadata()
1103 mMetadataFilled =
false;
1107void QgsVectorLayerProperties::saveMultipleStylesAs()
1110 dlg.setSaveOnlyCurrentStyle(
false );
1119 const QListWidget *stylesWidget { dlg.stylesWidget() };
1122 QStringList stylesSelected;
1123 for (
int i = 0; i < stylesWidget->count(); i++ )
1125 if ( stylesWidget->item( i )->checkState() == Qt::CheckState::Checked )
1127 stylesSelected.push_back( stylesWidget->item( i )->text() );
1131 if ( ! stylesSelected.isEmpty() )
1134 for (
const QString &styleName : std::as_const( stylesSelected ) )
1136 bool defaultLoadedFlag =
false;
1138 StyleType type = dlg.currentStyleType();
1146 const QString filePath { dlg.outputFilePath() };
1147 const QFileInfo fi { filePath };
1148 QString safePath { QString( filePath ).replace( fi.baseName(),
1150 if ( styleIndex > 0 && stylesSelected.count( ) > 1 )
1153 while ( QFile::exists( safePath ) )
1155 const QFileInfo fi { safePath };
1156 safePath = QString( safePath ).replace(
'.' + fi.completeSuffix(),
1157 QStringLiteral(
"_%1.%2" ).arg( QString::number( i ), fi.completeSuffix() ) );
1162 message = mLayer->
saveNamedStyle( safePath, defaultLoadedFlag, dlg.styleCategories() );
1164 message = mLayer->
saveSldStyle( safePath, defaultLoadedFlag );
1167 if ( defaultLoadedFlag )
1174 QMessageBox::information(
this, tr(
"Save Style" ), message );
1181 QString infoWindowTitle = QObject::tr(
"Save style '%1' to DB (%2)" )
1188 QString name { dbSettings.
name };
1189 if ( name.isEmpty() )
1195 name += QStringLiteral(
"_%1" ).arg( styleName );
1196 QStringList ids, names, descriptions;
1199 while ( names.contains( name ) )
1201 name = QStringLiteral(
"%1 %2" ).arg( name, QString::number( i ) );
1206 QString errorMessage;
1209 if ( QMessageBox::question(
nullptr, QObject::tr(
"Save style in database" ),
1210 QObject::tr(
"A matching style already exists in the database for this layer. Do you want to overwrite it?" ),
1211 QMessageBox::Yes | QMessageBox::No ) == QMessageBox::No )
1216 else if ( !errorMessage.isEmpty() )
1218 QMessageBox::warning(
this, infoWindowTitle, errorMessage );
1224 if ( !msgError.isNull() )
1226 QMessageBox::warning(
this, infoWindowTitle, msgError );
1230 QMessageBox::information(
this, infoWindowTitle, tr(
"Style '%1' saved" ).arg( styleName ) );
1245void QgsVectorLayerProperties::aboutToShowStyleMenu()
1248 QMenu *m = qobject_cast<QMenu *>( sender() );
1251 m->addAction( mActionLoadStyle );
1252 m->addAction( mActionSaveStyle );
1257 mActionSaveStyle->setText( tr(
"Save Current Style…" ) );
1258 m->addAction( mActionSaveMultipleStyles );
1262 mActionSaveStyle->setText( tr(
"Save Style…" ) );
1274void QgsVectorLayerProperties::mButtonAddJoin_clicked()
1279 QList<QgsMapLayer *> joinedLayers;
1280 const QList< QgsVectorLayerJoinInfo > &joins = mLayer->
vectorJoins();
1281 joinedLayers.reserve( joins.size() );
1282 for (
int i = 0; i < joins.size(); ++i )
1284 joinedLayers.append( joins[i].joinLayer() );
1288 if ( d.exec() == QDialog::Accepted )
1292 if ( d.createAttributeIndex() )
1301 addJoinToTreeWidget( info );
1302 setPbnQueryBuilderEnabled();
1303 mSourceFieldsPropertiesDialog->
init();
1304 mAttributesFormPropertiesDialog->
init();
1308void QgsVectorLayerProperties::mButtonEditJoin_clicked()
1310 QTreeWidgetItem *currentJoinItem = mJoinTreeWidget->currentItem();
1311 mJoinTreeWidget_itemDoubleClicked( currentJoinItem, 0 );
1314void QgsVectorLayerProperties::mJoinTreeWidget_itemDoubleClicked( QTreeWidgetItem *item,
int )
1316 if ( !mLayer || !item )
1321 QList<QgsMapLayer *> joinedLayers;
1322 QString joinLayerId = item->data( 0, Qt::UserRole ).toString();
1323 const QList< QgsVectorLayerJoinInfo > &joins = mLayer->
vectorJoins();
1325 for (
int i = 0; i < joins.size(); ++i )
1331 if ( joinLayer->
id() == joinLayerId )
1338 joinedLayers.append( joinLayer );
1347 d.setWindowTitle( tr(
"Edit Vector Join" ) );
1348 d.setJoinInfo( joins[j] );
1350 if ( d.exec() == QDialog::Accepted )
1356 int idx = mJoinTreeWidget->indexOfTopLevelItem( item );
1357 mJoinTreeWidget->takeTopLevelItem( idx );
1362 if ( d.createAttributeIndex() )
1371 addJoinToTreeWidget( info, idx );
1373 setPbnQueryBuilderEnabled();
1374 mSourceFieldsPropertiesDialog->
init();
1375 mAttributesFormPropertiesDialog->
init();
1379void QgsVectorLayerProperties::addJoinToTreeWidget(
const QgsVectorLayerJoinInfo &join,
const int insertIndex )
1381 QTreeWidgetItem *joinItem =
new QTreeWidgetItem();
1382 joinItem->setFlags( Qt::ItemIsEnabled );
1385 if ( !mLayer || !joinLayer )
1390 joinItem->setText( 0, tr(
"Join layer" ) );
1396 joinItem->setText( 1, joinLayer->
name() );
1398 QFont f = joinItem->font( 0 );
1400 joinItem->setFont( 0, f );
1401 joinItem->setFont( 1, f );
1403 joinItem->setData( 0, Qt::UserRole, join.
joinLayerId() );
1405 QTreeWidgetItem *childJoinField =
new QTreeWidgetItem();
1406 childJoinField->setText( 0, tr(
"Join field" ) );
1408 childJoinField->setFlags( Qt::ItemIsEnabled );
1409 joinItem->addChild( childJoinField );
1411 QTreeWidgetItem *childTargetField =
new QTreeWidgetItem();
1412 childTargetField->setText( 0, tr(
"Target field" ) );
1414 joinItem->addChild( childTargetField );
1416 QTreeWidgetItem *childMemCache =
new QTreeWidgetItem();
1417 childMemCache->setText( 0, tr(
"Cache join layer in virtual memory" ) );
1419 childMemCache->setText( 1, QChar( 0x2714 ) );
1420 joinItem->addChild( childMemCache );
1422 QTreeWidgetItem *childDynForm =
new QTreeWidgetItem();
1423 childDynForm->setText( 0, tr(
"Dynamic form" ) );
1425 childDynForm->setText( 1, QChar( 0x2714 ) );
1426 joinItem->addChild( childDynForm );
1428 QTreeWidgetItem *childEditable =
new QTreeWidgetItem();
1429 childEditable->setText( 0, tr(
"Editable join layer" ) );
1431 childEditable->setText( 1, QChar( 0x2714 ) );
1432 joinItem->addChild( childEditable );
1434 QTreeWidgetItem *childUpsert =
new QTreeWidgetItem();
1435 childUpsert->setText( 0, tr(
"Upsert on edit" ) );
1437 childUpsert->setText( 1, QChar( 0x2714 ) );
1438 joinItem->addChild( childUpsert );
1440 QTreeWidgetItem *childCascade =
new QTreeWidgetItem();
1441 childCascade->setText( 0, tr(
"Delete cascade" ) );
1443 childCascade->setText( 1, QChar( 0x2714 ) );
1444 joinItem->addChild( childCascade );
1446 QTreeWidgetItem *childPrefix =
new QTreeWidgetItem();
1447 childPrefix->setText( 0, tr(
"Custom field name prefix" ) );
1448 childPrefix->setText( 1, join.
prefix() );
1449 joinItem->addChild( childPrefix );
1451 QTreeWidgetItem *childFields =
new QTreeWidgetItem();
1452 childFields->setText( 0, tr(
"Joined fields" ) );
1455 childFields->setText( 1, QLocale().toString( list->count() ) );
1457 childFields->setText( 1, tr(
"all" ) );
1458 joinItem->addChild( childFields );
1460 if ( insertIndex >= 0 )
1461 mJoinTreeWidget->insertTopLevelItem( insertIndex, joinItem );
1463 mJoinTreeWidget->addTopLevelItem( joinItem );
1465 mJoinTreeWidget->setCurrentItem( joinItem );
1466 mJoinTreeWidget->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
1476 QDialog *dlg =
new QDialog();
1477 QString key = QStringLiteral(
"/UI/paneldialog/%1" ).arg( panel->
panelTitle() );
1479 dlg->restoreGeometry( settings.
value( key ).toByteArray() );
1481 dlg->setLayout(
new QVBoxLayout() );
1482 dlg->layout()->addWidget( panel );
1483 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok );
1484 connect( buttonBox, &QDialogButtonBox::accepted, dlg, &QDialog::accept );
1485 dlg->layout()->addWidget( buttonBox );
1487 settings.
setValue( key, dlg->saveGeometry() );
1491void QgsVectorLayerProperties::mButtonRemoveJoin_clicked()
1493 QTreeWidgetItem *currentJoinItem = mJoinTreeWidget->currentItem();
1494 if ( !mLayer || !currentJoinItem )
1499 mLayer->
removeJoin( currentJoinItem->data( 0, Qt::UserRole ).toString() );
1500 mJoinTreeWidget->takeTopLevelItem( mJoinTreeWidget->indexOfTopLevelItem( currentJoinItem ) );
1501 setPbnQueryBuilderEnabled();
1502 mSourceFieldsPropertiesDialog->
init();
1503 mAttributesFormPropertiesDialog->
init();
1507void QgsVectorLayerProperties::mButtonAddWmsDimension_clicked()
1513 QStringList alreadyDefinedDimensions;
1515 const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->
wmsDimensions();
1518 alreadyDefinedDimensions << dim.name;
1522 if ( d.exec() == QDialog::Accepted )
1527 addWmsDimensionInfoToTreeWidget( info );
1531void QgsVectorLayerProperties::mButtonEditWmsDimension_clicked()
1533 QTreeWidgetItem *currentWmsDimensionItem = mWmsDimensionsTreeWidget->currentItem();
1534 mWmsDimensionsTreeWidget_itemDoubleClicked( currentWmsDimensionItem, 0 );
1537void QgsVectorLayerProperties::mWmsDimensionsTreeWidget_itemDoubleClicked( QTreeWidgetItem *item,
int )
1539 if ( !mLayer || !item )
1544 QString wmsDimName = item->data( 0, Qt::UserRole ).toString();
1546 const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->
wmsDimensions();
1547 QStringList alreadyDefinedDimensions;
1549 for (
int i = 0; i < dims.size(); ++i )
1551 QString dimName = dims[i].name;
1552 if ( dimName == wmsDimName )
1558 alreadyDefinedDimensions << dimName;
1567 d.setWindowTitle( tr(
"Edit WMS Dimension" ) );
1568 d.setInfo( dims[j] );
1570 if ( d.exec() == QDialog::Accepted )
1577 int idx = mWmsDimensionsTreeWidget->indexOfTopLevelItem( item );
1578 mWmsDimensionsTreeWidget->takeTopLevelItem( idx );
1582 addWmsDimensionInfoToTreeWidget( info, idx );
1588 QTreeWidgetItem *wmsDimensionItem =
new QTreeWidgetItem();
1589 wmsDimensionItem->setFlags( Qt::ItemIsEnabled );
1591 wmsDimensionItem->setText( 0, tr(
"Dimension" ) );
1592 wmsDimensionItem->setText( 1, wmsDim.
name );
1594 QFont f = wmsDimensionItem->font( 0 );
1596 wmsDimensionItem->setFont( 0, f );
1597 wmsDimensionItem->setFont( 1, f );
1599 wmsDimensionItem->setData( 0, Qt::UserRole, wmsDim.
name );
1601 QTreeWidgetItem *childWmsDimensionField =
new QTreeWidgetItem();
1602 childWmsDimensionField->setText( 0, tr(
"Field" ) );
1603 childWmsDimensionField->setText( 1, wmsDim.
fieldName );
1604 childWmsDimensionField->setFlags( Qt::ItemIsEnabled );
1605 wmsDimensionItem->addChild( childWmsDimensionField );
1607 QTreeWidgetItem *childWmsDimensionEndField =
new QTreeWidgetItem();
1608 childWmsDimensionEndField->setText( 0, tr(
"End field" ) );
1609 childWmsDimensionEndField->setText( 1, wmsDim.
endFieldName );
1610 childWmsDimensionEndField->setFlags( Qt::ItemIsEnabled );
1611 wmsDimensionItem->addChild( childWmsDimensionEndField );
1613 QTreeWidgetItem *childWmsDimensionUnits =
new QTreeWidgetItem();
1614 childWmsDimensionUnits->setText( 0, tr(
"Units" ) );
1615 childWmsDimensionUnits->setText( 1, wmsDim.
units );
1616 childWmsDimensionUnits->setFlags( Qt::ItemIsEnabled );
1617 wmsDimensionItem->addChild( childWmsDimensionUnits );
1619 QTreeWidgetItem *childWmsDimensionUnitSymbol =
new QTreeWidgetItem();
1620 childWmsDimensionUnitSymbol->setText( 0, tr(
"Unit symbol" ) );
1621 childWmsDimensionUnitSymbol->setText( 1, wmsDim.
unitSymbol );
1622 childWmsDimensionUnitSymbol->setFlags( Qt::ItemIsEnabled );
1623 wmsDimensionItem->addChild( childWmsDimensionUnitSymbol );
1625 QTreeWidgetItem *childWmsDimensionDefaultValue =
new QTreeWidgetItem();
1626 childWmsDimensionDefaultValue->setText( 0, tr(
"Default display" ) );
1628 childWmsDimensionDefaultValue->setFlags( Qt::ItemIsEnabled );
1629 wmsDimensionItem->addChild( childWmsDimensionDefaultValue );
1631 QTreeWidgetItem *childWmsDimensionRefValue =
new QTreeWidgetItem();
1632 childWmsDimensionRefValue->setText( 0, tr(
"Reference value" ) );
1633 childWmsDimensionRefValue->setText( 1, wmsDim.
referenceValue.toString() );
1634 childWmsDimensionRefValue->setFlags( Qt::ItemIsEnabled );
1635 wmsDimensionItem->addChild( childWmsDimensionRefValue );
1637 if ( insertIndex >= 0 )
1638 mWmsDimensionsTreeWidget->insertTopLevelItem( insertIndex, wmsDimensionItem );
1640 mWmsDimensionsTreeWidget->addTopLevelItem( wmsDimensionItem );
1642 mWmsDimensionsTreeWidget->setCurrentItem( wmsDimensionItem );
1643 mWmsDimensionsTreeWidget->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
1646void QgsVectorLayerProperties::mButtonRemoveWmsDimension_clicked()
1648 QTreeWidgetItem *currentWmsDimensionItem = mWmsDimensionsTreeWidget->currentItem();
1649 if ( !mLayer || !currentWmsDimensionItem )
1655 serverProperties->
removeWmsDimension( currentWmsDimensionItem->data( 0, Qt::UserRole ).toString() );
1656 mWmsDimensionsTreeWidget->takeTopLevelItem( mWmsDimensionsTreeWidget->indexOfTopLevelItem( currentWmsDimensionItem ) );
1660void QgsVectorLayerProperties::updateSymbologyPage()
1664 delete mRendererDialog;
1665 mRendererDialog =
nullptr;
1681 mOptsPage_Style->setEnabled(
false );
1684 if ( mRendererDialog )
1686 mRendererDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
1687 widgetStackRenderers->addWidget( mRendererDialog );
1688 widgetStackRenderers->setCurrentWidget( mRendererDialog );
1689 widgetStackRenderers->currentWidget()->layout()->setContentsMargins( 0, 0, 0, 0 );
1693void QgsVectorLayerProperties::setPbnQueryBuilderEnabled()
1695 pbnQueryBuilder->setEnabled( mLayer &&
1702 pbnQueryBuilder->setToolTip( tr(
"Stop editing mode to enable this." ) );
1707void QgsVectorLayerProperties::pbnUpdateExtents_clicked()
1710 mMetadataFilled =
false;
1717 if ( index ==
mOptStackedWidget->indexOf( mOptsPage_Information ) && ! mMetadataFilled )
1720 teMetadataViewer->clear();
1721 teMetadataViewer->setHtml( htmlMetadata() );
1722 mMetadataFilled =
true;
1727 mAttributesFormPropertiesDialog->
store();
1733void QgsVectorLayerProperties::mSimplifyDrawingGroupBox_toggled(
bool checked )
1738 mSimplifyDrawingAtProvider->setEnabled(
false );
1742 mSimplifyDrawingAtProvider->setEnabled( checked );
1746void QgsVectorLayerProperties::updateVariableEditor()
1749 mVariableEditor->setContext( &context );
1753 mVariableEditor->reloadContext();
1754 mVariableEditor->setEditableScopeIndex( 2 );
1757void QgsVectorLayerProperties::showHelp()
1759 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property(
"helpPage" );
1761 if ( helpPage.isValid() )
1767 QgsHelp::openHelp( QStringLiteral(
"working_with_vector/vector_properties.html" ) );
1771void QgsVectorLayerProperties::updateAuxiliaryStoragePage()
1778 mAuxiliaryStorageInformationGrpBox->setEnabled(
true );
1779 mAuxiliaryStorageFieldsGrpBox->setEnabled(
true );
1786 mAuxiliaryStorageFeaturesLineEdit->setText( QLocale().toString( features ) );
1789 mAuxiliaryLayerActionClear->setEnabled(
true );
1790 mAuxiliaryLayerActionDelete->setEnabled(
true );
1791 mAuxiliaryLayerActionExport->setEnabled(
true );
1792 mAuxiliaryLayerActionNew->setEnabled(
false );
1798 mAuxiliaryStorageFieldsLineEdit->setText( QLocale().toString( fields ) );
1801 mAuxiliaryStorageFieldsTree->clear();
1802 for (
const QgsField &field : alayer->auxiliaryFields() )
1805 QTreeWidgetItem *item =
new QTreeWidgetItem();
1807 item->setText( 0, prop.
origin() );
1808 item->setText( 1, prop.
name() );
1809 item->setText( 2, prop.
comment() );
1810 item->setText( 3, field.typeName() );
1811 item->setText( 4, field.name() );
1813 mAuxiliaryStorageFieldsTree->addTopLevelItem( item );
1819 mAuxiliaryStorageInformationGrpBox->setEnabled(
false );
1820 mAuxiliaryStorageFieldsGrpBox->setEnabled(
false );
1822 mAuxiliaryLayerActionClear->setEnabled(
false );
1823 mAuxiliaryLayerActionDelete->setEnabled(
false );
1824 mAuxiliaryLayerActionExport->setEnabled(
false );
1825 mAuxiliaryLayerActionNew->setEnabled(
true );
1827 mAuxiliaryStorageFieldsTree->clear();
1828 mAuxiliaryStorageKeyLineEdit->setText( QString() );
1829 mAuxiliaryStorageFieldsLineEdit->setText( QString() );
1830 mAuxiliaryStorageFeaturesLineEdit->setText( QString() );
1834void QgsVectorLayerProperties::onAuxiliaryLayerNew()
1842 if ( dlg.exec() == QDialog::Accepted )
1844 updateAuxiliaryStoragePage();
1848void QgsVectorLayerProperties::onAuxiliaryLayerClear()
1855 const QString msg = tr(
"Are you sure you want to clear auxiliary data for %1?" ).arg( mLayer->
name() );
1856 QMessageBox::StandardButton reply;
1857 reply = QMessageBox::question(
this,
"Clear Auxiliary Data", msg, QMessageBox::Yes | QMessageBox::No );
1859 if ( reply == QMessageBox::Yes )
1861 QApplication::setOverrideCursor( Qt::WaitCursor );
1863 QApplication::restoreOverrideCursor();
1864 updateAuxiliaryStoragePage();
1869void QgsVectorLayerProperties::onAuxiliaryLayerDelete()
1875 const QString msg = tr(
"Are you sure you want to delete auxiliary storage for %1?" ).arg( mLayer->
name() );
1876 QMessageBox::StandardButton reply;
1877 reply = QMessageBox::question(
this,
"Delete Auxiliary Storage", msg, QMessageBox::Yes | QMessageBox::No );
1879 if ( reply == QMessageBox::Yes )
1881 QApplication::setOverrideCursor( Qt::WaitCursor );
1894 QApplication::restoreOverrideCursor();
1895 updateAuxiliaryStoragePage();
1900void QgsVectorLayerProperties::onAuxiliaryLayerDeleteField()
1906 QList<QTreeWidgetItem *> items = mAuxiliaryStorageFieldsTree->selectedItems();
1907 if ( items.count() < 1 )
1911 const QTreeWidgetItem *item = items[0];
1914 def.
setName( item->text( 1 ) );
1924 const QString msg = tr(
"Are you sure you want to delete auxiliary field %1 for %2?" ).arg( item->text( 1 ), item->text( 0 ) );
1926 QMessageBox::StandardButton reply;
1927 const QString title = QObject::tr(
"Delete Auxiliary Field" );
1928 reply = QMessageBox::question(
this, title, msg, QMessageBox::Yes | QMessageBox::No );
1930 if ( reply == QMessageBox::Yes )
1932 QApplication::setOverrideCursor( Qt::WaitCursor );
1933 deleteAuxiliaryField( index );
1935 QApplication::restoreOverrideCursor();
1939void QgsVectorLayerProperties::onAuxiliaryLayerAddField()
1946 if ( dlg.exec() == QDialog::Accepted )
1948 updateAuxiliaryStoragePage();
1952void QgsVectorLayerProperties::deleteAuxiliaryField(
int index )
1965 if ( key >= 0 && def.
origin().compare(
"labeling", Qt::CaseInsensitive ) == 0
1972 updateAuxiliaryStoragePage();
1973 mSourceFieldsPropertiesDialog->
init();
1977 const QString title = QObject::tr(
"Delete Auxiliary Field" );
1979 const QString msg = QObject::tr(
"Unable to remove auxiliary field (%1)" ).arg( errors );
1987 if ( obj == mMapTipPreviewContainer && ev->type() == QEvent::Resize )
1991 return QgsOptionsDialogBase::eventFilter( obj, ev );
1994void QgsVectorLayerProperties::initMapTipPreview()
1997 mMapTipSplitter->setSizes( { 400, 200 } );
1999 mMapTipPreviewContainer->installEventFilter(
this );
2003 mMapTipPreview =
new QgsWebView( mMapTipPreviewContainer );
2006 mMapTipPreview->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
2007 mMapTipPreview->setContextMenuPolicy( Qt::NoContextMenu );
2008 connect( mMapTipPreview, &QWebView::loadFinished,
this, &QgsVectorLayerProperties::resizeMapTip );
2011 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled,
true );
2012 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::JavascriptEnabled,
true );
2013 mMapTipPreview->page()->settings()->setAttribute( QWebSettings::LocalStorageEnabled,
true );
2016 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
2017 mMapTipPreview->page()->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
2020 connect( mMapTipWidget, &QgsCodeEditorHTML::textChanged,
this, &QgsVectorLayerProperties::updateMapTipPreview );
2024void QgsVectorLayerProperties::updateMapTipPreview()
2026 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
2028 mMapTipPreview->setHtml( htmlContent );
2031void QgsVectorLayerProperties::resizeMapTip()
2034 mMapTipPreview->setMaximumSize( mMapTipPreviewContainer->width(), mMapTipPreviewContainer->height() );
2037 const QWebElement container = mMapTipPreview->page()->mainFrame()->findFirstElement(
2038 QStringLiteral(
"#QgsWebViewContainer" ) );
2039 const int width = container.geometry().width();
2040 const int height = container.geometry().height();
2041 mMapTipPreview->resize( width, height );
2044 mMapTipPreview->move( ( mMapTipPreviewContainer->width() - mMapTipPreview->width() ) / 2,
2045 ( mMapTipPreviewContainer->height() - mMapTipPreview->height() ) / 2 );
2048 mMapTipPreview->adjustSize();
@ SimplifyGeometries
Supports simplification of geometries on provider side according to a distance tolerance.
@ SelectEncoding
Allows user to select encoding.
@ CreateSpatialIndex
Allows creation of spatial index.
QFlags< VectorRenderingSimplificationFlag > VectorRenderingSimplificationFlags
Simplification flags for vector feature rendering.
@ Present
A valid spatial index exists for the source.
@ AntialiasingSimplification
The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'.
@ NoSimplification
No simplification can be applied.
@ GeometrySimplification
The geometries can be simplified using the current map2pixel context state.
VectorSimplificationAlgorithm
Simplification algorithms for vector features.
@ Distance
The simplification uses the distance between points to remove duplicate points.
@ SnapToGrid
The simplification uses a grid (similar to ST_SnapToGrid) to remove duplicate points.
@ Visvalingam
The simplification gives each point in a line an importance weighting, so that least important points...
@ Warning
Warning message.
static QString defaultProjectScales()
A string with default project scales.
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
QFlags< VectorProviderCapability > VectorProviderCapabilities
Vector data provider capabilities.
@ CustomColor
Use default symbol with a custom selection color.
@ CustomSymbol
Use a custom symbol.
@ Default
Use default symbol and selection colors.
void clearActions()
Removes all actions.
QUuid addAction(Qgis::AttributeActionType type, const QString &name, const QString &command, bool capture=false)
Add an action with the given name and action details.
Utility class that encapsulates an action based on vector attributes.
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 QRegularExpression shortNameRegularExpression()
Returns the short name regular expression for line edit validator.
void init(const QgsActionManager &action, const QgsAttributeTableConfig &attributeTableConfig)
bool showWidgetInAttributeTable() const
QList< QgsAction > actions() const
QgsAttributeTableConfig::ActionWidgetStyle attributeTableWidgetStyle() const
This is a container for configuration of the attribute table.
@ Action
This column represents an action widget.
QVector< QgsAttributeTableConfig::ColumnConfig > columns() const
Gets the list with all columns and their configuration.
void update(const QgsFields &fields)
Update the configuration with the given fields.
void setActionWidgetStyle(ActionWidgetStyle actionWidgetStyle)
Set the style of the action widget.
void setColumns(const QVector< QgsAttributeTableConfig::ColumnConfig > &columns)
Set the list of columns visible in the attribute table.
Class allowing to manage the auxiliary storage for a vector layer.
static QString nameFromProperty(const QgsPropertyDefinition &def, bool joined=false)
Returns the name of the auxiliary field for a property definition.
static QgsPropertyDefinition propertyDefinitionFromField(const QgsField &field)
Returns the property definition from an auxiliary field.
bool clear()
Deletes all features from the layer.
bool deleteAttribute(int attr) override
Removes attribute from the layer and commits changes.
QgsFields auxiliaryFields() const
Returns a list of all auxiliary fields currently managed by the layer.
int propertyFromIndex(int index) const
Returns the underlying property key for the field index.
QgsVectorLayerJoinInfo joinInfo() const
Returns information to use for joining with primary key and so on.
QgsPropertyDefinition propertyDefinitionFromIndex(int index) const
Returns the property definition for the underlying field index.
static bool deleteTable(const QgsDataSourceUri &uri)
Removes a table from the auxiliary storage.
This class represents a coordinate reference system (CRS).
virtual bool supportsSubsetString() const
Returns true if the provider supports setting of subset strings.
Class for storing the component parts of a RDBMS data source URI (e.g.
A generic dialog for building expression strings.
static void setLayerVariables(QgsMapLayer *layer, const QVariantMap &variables)
Sets all layer context variables.
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 * 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.
bool forceRasterRender() const
Returns whether the renderer must render as a raster.
void setForceRasterRender(bool forceRaster)
Sets whether the renderer should be rendered to a raster destination.
double referenceScale() const
Returns the symbology reference scale.
void setReferenceScale(double scale)
Sets the symbology reference scale.
virtual Qgis::SpatialIndexPresence hasSpatialIndex() const
Returns an enum value representing the presence of a valid spatial index on the source,...
Encapsulate a field in an attribute table or data source.
Q_INVOKABLE int indexFromName(const QString &fieldName) const
Gets the field index from the field name.
Q_INVOKABLE int indexOf(const QString &fieldName) const
Gets the field index from the field name.
int size() const
Returns number of items.
static QString stringToSafeFilename(const QString &string)
Converts a string to a safe filename, replacing characters which are not safe for filenames with an '...
static QgsProviderSourceWidgetProviderRegistry * sourceWidgetProviderRegistry()
Returns the registry of provider source widget providers.
static QgsSubsetStringEditorProviderRegistry * subsetStringEditorProviderRegistry()
Returns the registry of subset string editors of data providers.
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
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
StyleType
Style storage type.
QList< QgsMapLayerConfigWidget * > mConfigWidgets
Layer config widgets.
void setMetadataWidget(QgsMetadataWidget *widget, QWidget *page)
Sets the metadata widget and page associated with the dialog.
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 saveDefaultStyle()
Saves the default style when appropriate button is pressed.
QPushButton * mBtnMetadata
Metadata button.
void initialize()
Initialize the dialog.
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.
QgsLayerTreeFilterProxyModel is a sort filter proxy model to easily reproduce the legend/layer tree i...
QList< QgsMapLayer * > checkedLayers() const
Returns the checked layers.
void setLayerTreeModel(QgsLayerTreeModel *layerTreeModel)
Sets the layer tree model.
void setCheckedLayers(const QList< QgsMapLayer * > layers)
Initialize the list of checked layers.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
Map canvas is a class for displaying all GIS data types on a canvas.
QColor selectionColor() const
Returns color for selected features.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
double scale() const
Returns the last reported scale of the canvas.
This class models dependencies with or between map layers.
The QgsMapLayerSaveStyleDialog class provides the UI to save the current style or multiple styles int...
Manages QGIS Server properties for a map 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 wfsTitle() const
Returns the optional WFS title if set or the title of the layer used by QGIS WFS in GetCapabilities r...
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.
void setWfsTitle(const QString &title)
Sets the title of the layer used by QGIS Server in WFS GetCapabilities request.
QString abstract() const
Returns the abstract of the layerused by QGIS Server in GetCapabilities request.
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
QString currentStyle() const
Returns name of the current style.
QStringList styles() const
Returns list of all defined style names.
bool setCurrentStyle(const QString &name)
Set a different style as the current style - will apply it to the layer.
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.
void setRefreshOnNotifyEnabled(bool enabled)
Set whether provider notification is connected to triggerRepaint.
virtual QString saveSldStyle(const QString &uri, bool &resultFlag) const
Saves the properties of this layer to an SLD format file.
QString source() const
Returns the source for the layer.
void setLegendUrl(const QString &legendUrl)
Sets the URL for the layer's legend.
QString providerType() const
Returns the provider type (provider key) for this layer.
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
QgsCoordinateReferenceSystem crs
QgsMapLayerServerProperties * serverProperties()
Returns QGIS Server Properties for the map layer.
virtual int listStylesInDatabase(QStringList &ids, QStringList &names, QStringList &descriptions, QString &msgError)
Lists all the style in db split into related to the layer and not related to.
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.
QgsLayerMetadata metadata
bool isRefreshOnNotifyEnabled() const
Returns true if the refresh on provider nofification is enabled.
virtual void saveStyleToDatabase(const QString &name, const QString &description, bool useAsDefault, const QString &uiFileContent, QString &msgError, QgsMapLayer::StyleCategories categories=QgsMapLayer::AllStyleCategories)
Saves named and sld style of the layer to the style table in the db.
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 setRefreshOnNofifyMessage(const QString &message)
Set the notification message that triggers repaint If refresh on notification is enabled,...
void setName(const QString &name)
Set the display name of the layer.
QString refreshOnNotifyMessage() const
Returns the message that should be notified by the provider to triggerRepaint.
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.
virtual QString saveNamedStyle(const QString &uri, bool &resultFlag, StyleCategories categories=AllStyleCategories)
Save the properties of this layer as a named style (either as a .qml file on disk or as a record in t...
void setMapTipTemplate(const QString &mapTipTemplate)
The mapTip is a pretty, html representation for feature information.
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.
static QString vectorMapTipPreviewText(QgsMapLayer *layer, QgsMapCanvas *mapCanvas, const QString &mapTemplate, const QString &displayExpression)
Returns the html that would be displayed in a maptip for a given layer.
A bar for displaying non-blocking messages to the user.
void pushMessage(const QString &text, Qgis::MessageLevel level=Qgis::MessageLevel::Info, int duration=-1)
A convenience method for pushing a message with the specified text to the bar.
A dialog to create a new auxiliary field.
A dialog to create a new auxiliary layer.
void resizeAlltabs(int index)
Resizes all tabs when the dialog is resized.
QStackedWidget * mOptStackedWidget
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
Property
Data definable properties.
static QgsProject * instance()
Returns the QgsProject singleton instance.
Q_INVOKABLE QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
void setDirty(bool b=true)
Flag the project as dirty (modified).
Definition for a property.
QString comment() const
Returns the comment of the property.
void setOrigin(const QString &origin)
Sets the origin of the property.
QString name() const
Returns the name of the property.
void setName(const QString &name)
Sets the name of the property.
QString origin() const
Returns the origin of the property.
void setComment(const QString &comment)
Sets comment of the property.
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface.
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the dialog is shown, e.g., the associated map canvas and expression context...
void apply()
Apply the changes from the dialog to the layer.
void layerVariablesChanged()
Emitted when expression context variables on the associated vector layers have been changed.
void widgetChanged()
Emitted when something on the widget has changed.
void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
static QMap< int, QString > wmsDimensionDefaultDisplayLabels()
Returns WMS Dimension default display labels.
bool addWmsDimension(const QgsServerWmsDimensionProperties::WmsDimensionInfo &wmsDimInfo)
Adds a QGIS Server WMS Dimension.
bool removeWmsDimension(const QString &wmsDimName)
Removes a QGIS Server WMS Dimension.
const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > wmsDimensions() const
Returns the QGIS Server WMS Dimension list.
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.
static QgsStyle * defaultStyle(bool initialize=true)
Returns the default application-wide style.
Interface for a dialog that can edit subset strings.
virtual QString subsetString() const =0
Returns the subset string entered in the dialog.
virtual void setSubsetString(const QString &subsetString)=0
Sets a subset string into the dialog.
QgsSubsetStringEditorInterface * createDialog(QgsVectorLayer *layer, QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags)
Creates a new dialog to edit the subset string of the provided layer.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the widget.
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget.
Abstract base class for all rendered symbols.
This is the base class for vector data providers.
static QStringList availableEncodings()
Returns a list of available encodings.
virtual bool createSpatialIndex()
Creates a spatial index on the datasource (if supported by the provider type).
virtual Q_INVOKABLE Qgis::VectorProviderCapabilities capabilities() const
Returns flags containing the supported capabilities.
virtual bool createAttributeIndex(int field)
Create an attribute index on the datasource.
QString encoding() const
Returns the encoding which is used for accessing data.
Defines left outer join from our vector layer to some other vector layer.
bool hasCascadedDelete() const
Returns whether a feature deleted on the target layer has to impact the joined layer by deleting the ...
bool isDynamicFormEnabled() const
Returns whether the form has to be dynamically updated with joined fields when a feature is being cre...
bool hasUpsertOnEdit() const
Returns whether a feature created on the target layer has to impact the joined layer by creating a ne...
bool isEditable() const
Returns whether joined fields may be edited through the form of the target layer.
bool isUsingMemoryCache() const
Returns whether values from the joined layer should be cached in memory to speed up lookups.
QString prefix() const
Returns prefix of fields from the joined layer. If nullptr, joined layer's name will be used.
static QStringList joinFieldNamesSubset(const QgsVectorLayerJoinInfo &info, bool blocklisted=true)
Returns the list of field names to use for joining considering blocklisted fields and subset.
QString joinFieldName() const
Returns name of the field of joined layer that will be used for join.
QString targetFieldName() const
Returns name of the field of our layer that will be used for join.
QString joinLayerId() const
ID of the joined layer - may be used to resolve reference to the joined layer.
QgsVectorLayer * joinLayer() const
Returns joined layer (may be nullptr if the reference was set by layer ID and not resolved yet)
bool eventFilter(QObject *obj, QEvent *ev) override
QgsVectorLayerProperties(QgsMapCanvas *canvas, QgsMessageBar *messageBar, QgsVectorLayer *lyr=nullptr, QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags)
void optionsStackedWidget_CurrentChanged(int index) final
void toggleEditing(QgsMapLayer *)
void exportAuxiliaryLayer(QgsAuxiliaryLayer *layer)
Implementation of layer selection properties for vector layers.
void setSelectionSymbol(QgsSymbol *symbol)
Sets the symbol used to render selected features in the layer.
QgsSymbol * selectionSymbol() const
Returns the symbol used to render selected features in the layer.
Qgis::SelectionRenderingMode selectionRenderingMode() const
Returns the selection rendering mode to use for selected features in the layer.
QColor selectionColor() const
Returns the color to use for rendering selected features in the layer.
void setSelectionColor(const QColor &color)
Sets the color to use for rendering selected features in the layer.
void setSelectionRenderingMode(Qgis::SelectionRenderingMode mode)
Sets the selection rendering mode to use for selected features in the layer.
Represents a vector layer which manages a vector based data sets.
void setAuxiliaryLayer(QgsAuxiliaryLayer *layer=nullptr)
Sets the current auxiliary layer.
bool addJoin(const QgsVectorLayerJoinInfo &joinInfo)
Joins another vector layer to this layer.
QSet< QgsMapLayerDependency > dependencies() const FINAL
Gets the list of dependencies.
long long featureCount(const QString &legendKey) const
Number of features rendered with specified legend key.
void updateFields()
Will regenerate the fields property of this layer by obtaining all fields from the dataProvider,...
bool isSpatial() const FINAL
Returns true if this is a geometry layer and false in case of NoGeometry (table only) or UnknownGeome...
QString htmlMetadata() const FINAL
Obtain a formatted HTML string containing assorted metadata for this layer.
void setSimplifyMethod(const QgsVectorSimplifyMethod &simplifyMethod)
Sets the simplification settings for fast rendering of features.
QgsAuxiliaryLayer * auxiliaryLayer()
Returns the current auxiliary layer.
bool setDependencies(const QSet< QgsMapLayerDependency > &layers) FINAL
Sets the list of dependencies.
void setProviderEncoding(const QString &encoding)
Sets the text encoding of the data provider.
void setDisplayExpression(const QString &displayExpression)
Set the preview expression, used to create a human readable preview string.
bool removeJoin(const QString &joinLayerId)
Removes a vector layer join.
bool isEditable() const FINAL
Returns true if the provider is in editing mode.
QStringList commitErrors() const
Returns a list containing any error messages generated when attempting to commit changes to the layer...
virtual void updateExtents(bool force=false)
Update the extents for the layer.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
QString displayExpression
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
QgsAttributeTableConfig attributeTableConfig() const
Returns the attribute table configuration object.
QgsActionManager * actions()
Returns all layer actions defined on this layer.
Q_INVOKABLE Qgis::GeometryType geometryType() const
Returns point, line or polygon.
void setAttributeTableConfig(const QgsAttributeTableConfig &attributeTableConfig)
Sets the attribute table configuration object.
virtual bool setSubsetString(const QString &subset)
Sets the string (typically sql) used to define a subset of the layer.
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings for fast rendering of features.
const QList< QgsVectorLayerJoinInfo > vectorJoins() const
QgsMapLayerSelectionProperties * selectionProperties() override
Returns the layer's selection properties.
This class contains information how to simplify geometries fetched from a vector layer.
bool forceLocalOptimization() const
Gets where the simplification executes, after fetch the geometries from provider, or when supported,...
Qgis::VectorRenderingSimplificationFlags simplifyHints() const
Gets the simplification hints of the vector layer managed.
float maximumScale() const
Gets the maximum scale at which the layer should be simplified.
Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const
Gets the local simplification algorithm of the vector layer managed.
void setThreshold(float threshold)
Sets the simplification threshold of the vector layer managed.
void setForceLocalOptimization(bool localOptimization)
Sets where the simplification executes, after fetch the geometries from provider, or when supported,...
void setSimplifyHints(Qgis::VectorRenderingSimplificationFlags simplifyHints)
Sets the simplification hints of the vector layer managed.
float threshold() const
Gets the simplification threshold of the vector layer managed.
void setMaximumScale(float maximumScale)
Sets the maximum scale at which the layer should be simplified.
void setSimplifyAlgorithm(Qgis::VectorSimplificationAlgorithm simplifyAlgorithm)
Sets the local simplification algorithm of the vector layer managed.
The QgsWebView class is a collection of stubs to mimic the API of QWebView on systems where the real ...
The QgsWmsDimensionDialog class provides an interface for WMS/OAPIF (WFS3) dimensions configuration A...
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.
Setting to define QGIS Server WMS Dimension.