QGIS API Documentation 3.34.0-Prizren (ffbdd678812)
Loading...
Searching...
No Matches
qgsmeshlayerproperties.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmeshlayerproperties.cpp
3 --------------------------
4 begin : Jun 2018
5 copyright : (C) 2018 by Peter Petrik
6 email : zilolv at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include <limits>
19#include <typeinfo>
20
21#include "qgsapplication.h"
22#include "qgshelp.h"
23#include "qgslogger.h"
24#include "qgsmapcanvas.h"
27#include "qgsmeshlayer.h"
30#include "qgsproject.h"
33#include "qgssettings.h"
35#include "qgsmetadatawidget.h"
36
37#include <QDesktopServices>
38#include <QFileDialog>
39#include <QMessageBox>
40
41QgsMeshLayerProperties::QgsMeshLayerProperties( QgsMapLayer *lyr, QgsMapCanvas *canvas, QWidget *parent, Qt::WindowFlags fl )
42 : QgsLayerPropertiesDialog( lyr, canvas, QStringLiteral( "MeshLayerProperties" ), parent, fl )
43 , mMeshLayer( qobject_cast<QgsMeshLayer *>( lyr ) )
44{
45 Q_ASSERT( mMeshLayer );
46
47 setupUi( this );
48 mRendererMeshPropertiesWidget = new QgsRendererMeshPropertiesWidget( mMeshLayer, canvas, this );
49 mConfigWidgets << mRendererMeshPropertiesWidget;
50 mOptsPage_StyleContent->layout()->addWidget( mRendererMeshPropertiesWidget );
51
52 mSimplifyReductionFactorSpinBox->setClearValue( 10.0 );
53 mSimplifyMeshResolutionSpinBox->setClearValue( 5 );
54
55 mStaticDatasetWidget->setLayer( mMeshLayer );
56 mIsMapSettingsTemporal = mMeshLayer && canvas && canvas->mapSettings().isTemporal();
57
58 mTemporalProviderTimeUnitComboBox->addItem( tr( "Seconds" ), static_cast< int >( Qgis::TemporalUnit::Seconds ) );
59 mTemporalProviderTimeUnitComboBox->addItem( tr( "Minutes" ), static_cast< int >( Qgis::TemporalUnit::Minutes ) );
60 mTemporalProviderTimeUnitComboBox->addItem( tr( "Hours" ), static_cast< int >( Qgis::TemporalUnit::Hours ) );
61 mTemporalProviderTimeUnitComboBox->addItem( tr( "Days" ), static_cast< int >( Qgis::TemporalUnit::Days ) );
62
63 connect( mCrsSelector, &QgsProjectionSelectionWidget::crsChanged, this, &QgsMeshLayerProperties::changeCrs );
65
66 // QgsOptionsDialogBase handles saving/restoring of geometry, splitter and current tab states,
67 // switching vertical tabs between icon/text to icon-only modes (splitter collapsed to left),
68 // and connecting QDialogButtonBox's accepted/rejected signals to dialog's accept/reject slots
69 initOptionsBase( false );
70
71 connect( lyr->styleManager(), &QgsMapLayerStyleManager::currentStyleChanged, this, &QgsMeshLayerProperties::syncAndRepaint );
72
73 connect( this, &QDialog::accepted, this, &QgsMeshLayerProperties::apply );
74 connect( this, &QDialog::rejected, this, &QgsMeshLayerProperties::rollback );
75 connect( buttonBox->button( QDialogButtonBox::Apply ), &QAbstractButton::clicked, this, &QgsMeshLayerProperties::apply );
76
77 connect( mMeshLayer, &QgsMeshLayer::dataChanged, this, &QgsMeshLayerProperties::syncAndRepaint );
78 connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsMeshLayerProperties::showHelp );
79
80 connect( mTemporalReloadButton, &QPushButton::clicked, this, &QgsMeshLayerProperties::reloadTemporalProperties );
81 connect( mTemporalDateTimeReference, &QDateTimeEdit::dateTimeChanged, this, &QgsMeshLayerProperties::onTimeReferenceChange );
84
85 mScaleRangeWidget->setMapCanvas( mCanvas );
86 chkUseScaleDependentRendering->setChecked( lyr->hasScaleBasedVisibility() );
87 mScaleRangeWidget->setScaleRange( lyr->minimumScale(), lyr->maximumScale() );
88
89 connect( mAlwaysTimeFromSourceCheckBox, &QCheckBox::stateChanged, this, [this]
90 {
91 mTemporalDateTimeReference->setEnabled( !mAlwaysTimeFromSourceCheckBox->isChecked() );
92 if ( mAlwaysTimeFromSourceCheckBox->isChecked() )
93 reloadTemporalProperties();
94 } );
95
96 mComboBoxTemporalDatasetMatchingMethod->addItem( tr( "Find Closest Dataset Before Requested Time" ),
98 mComboBoxTemporalDatasetMatchingMethod->addItem( tr( "Find Closest Dataset From Requested Time (After or Before)" ),
100
101 QVBoxLayout *layout = new QVBoxLayout( metadataFrame );
102 layout->setContentsMargins( 0, 0, 0, 0 );
103 metadataFrame->setContentsMargins( 0, 0, 0, 0 );
104 mMetadataWidget = new QgsMetadataWidget( this, mMeshLayer );
105 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
106 mMetadataWidget->setMapCanvas( mCanvas );
107 layout->addWidget( mMetadataWidget );
108 metadataFrame->setLayout( layout );
109 mOptsPage_Metadata->setContentsMargins( 0, 0, 0, 0 );
110 mBackupCrs = mMeshLayer->crs();
111
112 mTemporalDateTimeStart->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
113 mTemporalDateTimeEnd->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
114 mTemporalDateTimeReference->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
115
116 setMetadataWidget( mMetadataWidget, mOptsPage_Metadata );
117
118 // update based on lyr's current state
119 syncToLayer();
120
121 QgsSettings settings;
122 // if dialog hasn't been opened/closed yet, default to Styles tab, which is used most often
123 // this will be read by restoreOptionsBaseUi()
124 if ( !settings.contains( QStringLiteral( "/Windows/MeshLayerProperties/tab" ) ) )
125 {
126 settings.setValue( QStringLiteral( "Windows/MeshLayerProperties/tab" ),
127 mOptStackedWidget->indexOf( mOptsPage_Style ) );
128 }
129
130 //Add help page references
131 mOptsPage_Information->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#information-properties" ) );
132 mOptsPage_Source->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#source-properties" ) );
133 mOptsPage_Style->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#symbology-properties" ) );
134 mOptsPage_Rendering->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#rendering-properties" ) );
135 mOptsPage_Temporal->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#temporal-properties" ) );
136 mOptsPage_Metadata->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#metadata-properties" ) );
137
138 mBtnStyle = new QPushButton( tr( "Style" ) );
139 QMenu *menuStyle = new QMenu( this );
140 menuStyle->addAction( tr( "Load Style…" ), this, &QgsMeshLayerProperties::loadStyleFromFile );
141 menuStyle->addAction( tr( "Save Style…" ), this, &QgsMeshLayerProperties::saveStyleToFile );
142 menuStyle->addSeparator();
143 menuStyle->addAction( tr( "Save as Default" ), this, &QgsMeshLayerProperties::saveStyleAsDefault );
144 menuStyle->addAction( tr( "Restore Default" ), this, &QgsMeshLayerProperties::loadDefaultStyle );
145 mBtnStyle->setMenu( menuStyle );
146 connect( menuStyle, &QMenu::aboutToShow, this, &QgsMeshLayerProperties::aboutToShowStyleMenu );
147
148 buttonBox->addButton( mBtnStyle, QDialogButtonBox::ResetRole );
149
150 mBtnMetadata = new QPushButton( tr( "Metadata" ), this );
151 QMenu *menuMetadata = new QMenu( this );
152 mActionLoadMetadata = menuMetadata->addAction( tr( "Load Metadata…" ), this, &QgsMeshLayerProperties::loadMetadataFromFile );
153 mActionSaveMetadataAs = menuMetadata->addAction( tr( "Save Metadata…" ), this, &QgsMeshLayerProperties::saveMetadataToFile );
154 mBtnMetadata->setMenu( menuMetadata );
155 buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );
156
157 initialize();
158}
159
161{
162 Q_ASSERT( mRendererMeshPropertiesWidget );
163
164 QgsDebugMsgLevel( QStringLiteral( "populate general information tab" ), 4 );
165 /*
166 * Information Tab
167 */
168 QString myStyle = QgsApplication::reportStyleSheet();
169 myStyle.append( QStringLiteral( "body { margin: 10px; }\n " ) );
170 mInformationTextBrowser->clear();
171 mInformationTextBrowser->document()->setDefaultStyleSheet( myStyle );
172 mInformationTextBrowser->setHtml( mMeshLayer->htmlMetadata() );
173 mInformationTextBrowser->setOpenLinks( false );
174 connect( mInformationTextBrowser, &QTextBrowser::anchorClicked, this, &QgsMeshLayerProperties::openUrl );
175
176 QgsDebugMsgLevel( QStringLiteral( "populate source tab" ), 4 );
177 /*
178 * Source Tab
179 */
180 mLayerOrigNameLineEd->setText( mMeshLayer->name() );
181 whileBlocking( mCrsSelector )->setCrs( mMeshLayer->crs() );
182
183 mDatasetGroupTreeWidget->syncToLayer( mMeshLayer );
184
185 QgsDebugMsgLevel( QStringLiteral( "populate config tab" ), 4 );
186 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
187 w->syncToLayer( mMeshLayer );
188
189 QgsDebugMsgLevel( QStringLiteral( "populate rendering tab" ), 4 );
190 if ( mMeshLayer->isEditable() )
191 mSimplifyMeshGroupBox->setEnabled( false );
192
193 QgsMeshSimplificationSettings simplifySettings = mMeshLayer->meshSimplificationSettings();
194 mSimplifyMeshGroupBox->setChecked( simplifySettings.isEnabled() );
195 mSimplifyReductionFactorSpinBox->setValue( simplifySettings.reductionFactor() );
196 mSimplifyMeshResolutionSpinBox->setValue( simplifySettings.meshResolution() );
197
198 QgsDebugMsgLevel( QStringLiteral( "populate temporal tab" ), 4 );
199 const QgsMeshLayerTemporalProperties *temporalProperties = qobject_cast< const QgsMeshLayerTemporalProperties * >( mMeshLayer->temporalProperties() );
200 whileBlocking( mTemporalDateTimeReference )->setDateTime( temporalProperties->referenceTime() );
201 const QgsDateTimeRange timeRange = temporalProperties->timeExtent();
202 mTemporalDateTimeStart->setDateTime( timeRange.begin() );
203 mTemporalDateTimeEnd->setDateTime( timeRange.end() );
204 if ( mMeshLayer->dataProvider() )
205 {
206 mTemporalProviderTimeUnitComboBox->setCurrentIndex(
207 mTemporalProviderTimeUnitComboBox->findData( static_cast< int >( mMeshLayer->dataProvider()->temporalCapabilities()->temporalUnit() ) ) );
208 }
209 mAlwaysTimeFromSourceCheckBox->setChecked( temporalProperties->alwaysLoadReferenceTimeFromSource() );
210 mComboBoxTemporalDatasetMatchingMethod->setCurrentIndex(
211 mComboBoxTemporalDatasetMatchingMethod->findData( temporalProperties->matchingMethod() ) );
212
213 mStaticDatasetWidget->syncToLayer();
214 mStaticDatasetGroupBox->setChecked( !mMeshLayer->temporalProperties()->isActive() );
215}
216
221
226
231
233{
234 Q_ASSERT( mRendererMeshPropertiesWidget );
235
236 QgsDebugMsgLevel( QStringLiteral( "processing general tab" ), 4 );
237 /*
238 * General Tab
239 */
240 mMeshLayer->setName( mLayerOrigNameLineEd->text() );
241
242 QgsDebugMsgLevel( QStringLiteral( "processing source tab" ), 4 );
243 /*
244 * Source Tab
245 */
246 mDatasetGroupTreeWidget->apply();
247
248 QgsDebugMsgLevel( QStringLiteral( "processing config tabs" ), 4 );
249
250 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
251 w->apply();
252
253 QgsDebugMsgLevel( QStringLiteral( "processing rendering tab" ), 4 );
254 /*
255 * Rendering Tab
256 */
257 QgsMeshSimplificationSettings simplifySettings;
258 simplifySettings.setEnabled( mSimplifyMeshGroupBox->isChecked() );
259 simplifySettings.setReductionFactor( mSimplifyReductionFactorSpinBox->value() );
260 simplifySettings.setMeshResolution( mSimplifyMeshResolutionSpinBox->value() );
261 bool needMeshUpdating = ( ( simplifySettings.isEnabled() != mMeshLayer->meshSimplificationSettings().isEnabled() ) ||
262 ( simplifySettings.reductionFactor() != mMeshLayer->meshSimplificationSettings().reductionFactor() ) );
263
264 mMeshLayer->setMeshSimplificationSettings( simplifySettings );
265
266 mMeshLayer->setScaleBasedVisibility( chkUseScaleDependentRendering->isChecked() );
267 mMeshLayer->setMinimumScale( mScaleRangeWidget->minimumScale() );
268 mMeshLayer->setMaximumScale( mScaleRangeWidget->maximumScale() );
269
270 QgsDebugMsgLevel( QStringLiteral( "processing temporal tab" ), 4 );
271 /*
272 * Temporal Tab
273 */
274
275 mMeshLayer->setReferenceTime( mTemporalDateTimeReference->dateTime() );
276 if ( mMeshLayer->dataProvider() )
277 mMeshLayer->dataProvider()->setTemporalUnit(
278 static_cast<Qgis::TemporalUnit>( mTemporalProviderTimeUnitComboBox->currentData().toInt() ) );
279
280 mStaticDatasetWidget->apply();
281 bool needEmitRendererChanged = mMeshLayer->temporalProperties()->isActive() == mStaticDatasetGroupBox->isChecked();
282 mMeshLayer->temporalProperties()->setIsActive( !mStaticDatasetGroupBox->isChecked() );
284 mComboBoxTemporalDatasetMatchingMethod->currentData().toInt() ) );
285 static_cast<QgsMeshLayerTemporalProperties *>(
286 mMeshLayer->temporalProperties() )->setAlwaysLoadReferenceTimeFromSource( mAlwaysTimeFromSourceCheckBox->isChecked() );
287
288 mMetadataWidget->acceptMetadata();
289
290 mBackupCrs = mMeshLayer->crs();
291
292 if ( needMeshUpdating )
293 mMeshLayer->reload();
294
295 if ( needEmitRendererChanged )
296 emit mMeshLayer->rendererChanged();
297
298 //make sure the layer is redrawn
299 mMeshLayer->triggerRepaint();
300
301 // notify the project we've made a change
303
304 // Resync what have to be resync (widget that can be changed by other properties part)
305 mStaticDatasetWidget->syncToLayer();
306 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
307 w->syncToLayer( mMeshLayer );
308}
309
310void QgsMeshLayerProperties::changeCrs( const QgsCoordinateReferenceSystem &crs )
311{
312 QgsDatumTransformDialog::run( crs, QgsProject::instance()->crs(), this, mCanvas, tr( "Select Transformation" ) );
313 mMeshLayer->setCrs( crs );
314}
315
316void QgsMeshLayerProperties::syncAndRepaint()
317{
318 syncToLayer();
319 mMeshLayer->triggerRepaint();
320}
321
322void QgsMeshLayerProperties::showHelp()
323{
324 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property( "helpPage" );
325
326 if ( helpPage.isValid() )
327 {
328 QgsHelp::openHelp( helpPage.toString() );
329 }
330 else
331 {
332 QgsHelp::openHelp( QStringLiteral( "working_with_mesh/mesh_properties.html" ) );
333 }
334}
335
336void QgsMeshLayerProperties::aboutToShowStyleMenu()
337{
338 QMenu *m = qobject_cast<QMenu *>( sender() );
339
341 // re-add style manager actions!
342 m->addSeparator();
344}
345
346void QgsMeshLayerProperties::reloadTemporalProperties()
347{
348 if ( !mMeshLayer->dataProvider() )
349 return;
350 QgsMeshDataProviderTemporalCapabilities *temporalCapabalities = mMeshLayer->dataProvider()->temporalCapabilities();
351 QgsDateTimeRange timeExtent;
352 QDateTime referenceTime = temporalCapabalities->referenceTime();
353 if ( referenceTime.isValid() )
354 {
355 timeExtent = temporalCapabalities->timeExtent();
356 whileBlocking( mTemporalDateTimeReference )->setDateTime( referenceTime );
357 }
358 else
359 // The reference time already here is used again to define the time extent
360 timeExtent = temporalCapabalities->timeExtent( mTemporalDateTimeReference->dateTime() );
361
362 mTemporalDateTimeStart->setDateTime( timeExtent.begin() );
363 mTemporalDateTimeEnd->setDateTime( timeExtent.end() );
364}
365
366void QgsMeshLayerProperties::onTimeReferenceChange()
367{
368 if ( !mMeshLayer->dataProvider() )
369 return;
370 const QgsDateTimeRange &timeExtent = mMeshLayer->dataProvider()->temporalCapabilities()->timeExtent( mTemporalDateTimeReference->dateTime() );
371 mTemporalDateTimeStart->setDateTime( timeExtent.begin() );
372 mTemporalDateTimeEnd->setDateTime( timeExtent.end() );
373}
374
376{
377 if ( mBackupCrs != mMeshLayer->crs() )
378 mMeshLayer->setCrs( mBackupCrs );
379
381}
TemporalUnit
Temporal units.
Definition qgis.h:3603
static QString reportStyleSheet(QgsApplication::StyleSheetType styleSheetType=QgsApplication::StyleSheetType::Qt)
Returns a css style sheet for reports, the styleSheetType argument determines what type of stylesheet...
This class represents a coordinate reference system (CRS).
static bool run(const QgsCoordinateReferenceSystem &sourceCrs=QgsCoordinateReferenceSystem(), const QgsCoordinateReferenceSystem &destinationCrs=QgsCoordinateReferenceSystem(), QWidget *parent=nullptr, QgsMapCanvas *mapCanvas=nullptr, const QString &windowTitle=QString())
Runs the dialog (if required) prompting for the desired transform to use from sourceCrs to destinatio...
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
Definition qgshelp.cpp:38
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 saveStyleAsDefault()
Saves the current layer style as the default for the layer.
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 saveStyleToFile()
Allows the user to save the layer's style to a file.
QgsMapCanvas * mCanvas
Associated map canvas.
void loadMetadataFromFile()
Allows the user to load layer metadata from a file.
void loadStyleFromFile()
Allows the user to load layer style from a file.
QPushButton * mBtnMetadata
Metadata button.
void initialize()
Initialize the dialog.
void openUrl(const QUrl &url)
Handles opening a url from the dialog.
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.
A panel widget that can be shown in the map style dock.
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 &currentName)
Emitted when the current style has been changed.
Base class for all map layer types.
Definition qgsmaplayer.h:74
QString name
Definition qgsmaplayer.h:77
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
QgsCoordinateReferenceSystem crs
Definition qgsmaplayer.h:80
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.
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 dataChanged()
Data of layer changed.
void setName(const QString &name)
Set the display name of the layer.
double minimumScale() const
Returns the minimum map scale (i.e.
QgsMapLayerStyleManager * styleManager() const
Gets access to the layer's style manager.
double maximumScale() const
Returns the maximum map scale (i.e.
void setCrs(const QgsCoordinateReferenceSystem &srs, bool emitSignal=true)
Sets layer's spatial reference system.
Class for handling properties relating to a mesh data provider's temporal capabilities.
QDateTime referenceTime() const
Returns the reference time.
QgsDateTimeRange timeExtent() const
Returns the time extent using the internal reference time and the first and last times available from...
Qgis::TemporalUnit temporalUnit() const
Returns the temporal unit used to read data by the data provider.
MatchingTemporalDatasetMethod
Method for selection of temporal mesh dataset from a range time.
@ FindClosestDatasetFromStartRangeTime
Finds the closest dataset which have its time before the requested start range time.
void setTemporalUnit(Qgis::TemporalUnit unit)
Sets the temporal unit of the provider and reload data if it changes.
QgsMeshDataProviderTemporalCapabilities * temporalCapabilities() override
Returns the provider's temporal capabilities.
Q_DECL_DEPRECATED void saveStyleAs() SIP_DEPRECATED
Saves a style when appriate button is pressed.
Q_DECL_DEPRECATED void saveDefaultStyle() SIP_DEPRECATED
Saves the default style when appropriate button is pressed.
Q_DECL_DEPRECATED void loadStyle() SIP_DEPRECATED
Loads a saved style when appropriate button is pressed.
QgsMeshLayerProperties(QgsMapLayer *lyr, QgsMapCanvas *canvas, QWidget *parent=nullptr, Qt::WindowFlags=QgsGuiUtils::ModalDialogFlags)
Constructor.
Implementation of map layer temporal properties for mesh layers.
QDateTime referenceTime() const
Returns the reference time.
QgsMeshDataProviderTemporalCapabilities::MatchingTemporalDatasetMethod matchingMethod() const
Returns the method used to match dataset from temporal capabilities.
bool alwaysLoadReferenceTimeFromSource() const
Returns whether the time proporties are automatically reloaded from provider when project is opened o...
QgsDateTimeRange timeExtent() const
Returns the time extent.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
void setMeshSimplificationSettings(const QgsMeshSimplificationSettings &meshSimplificationSettings)
Sets mesh simplification settings.
void activeScalarDatasetGroupChanged(int index)
Emitted when active scalar group dataset is changed.
void activeVectorDatasetGroupChanged(int index)
Emitted when active vector group dataset is changed.
void reload() override
Synchronises with changes in the datasource.
QString htmlMetadata() const override
Obtain a formatted HTML string containing assorted metadata for this layer.
QgsMeshSimplificationSettings meshSimplificationSettings() const
Returns mesh simplification settings.
bool isEditable() const override
Returns true if the layer can be edited.
QgsMeshDataProvider * dataProvider() override
Returns the layer's data provider, it may be nullptr.
QgsMapLayerTemporalProperties * temporalProperties() override
Returns the layer's temporal properties.
void setReferenceTime(const QDateTime &referenceTime)
Sets the reference time of the layer.
void setTemporalMatchingMethod(const QgsMeshDataProviderTemporalCapabilities::MatchingTemporalDatasetMethod &matchingMethod)
Sets the method used to match the temporal dataset from a requested time, see activeVectorDatasetAtTi...
Represents an overview renderer settings.
void setMeshResolution(int meshResolution)
Sets the mesh resolution i.e., the minimum size (average) of triangles in pixels This value is used d...
void setEnabled(bool isEnabled)
Sets if the overview is active.
double reductionFactor() const
Returns the reduction factor used to build simplified mesh.
bool isEnabled() const
Returns if the overview is active.
int meshResolution() const
Returns the mesh resolution i.e., the minimum size (average) of triangles in pixels.
void setReductionFactor(double value)
Sets the reduction factor used to build simplified mesh.
void setScalarDatasetGroup(int index)
Sets the scalar dataset group.
void setVectorDatasetGroup(int index)
Sets the vector dataset group.
A wizard to edit metadata on a map layer.
void acceptMetadata()
Saves the metadata to the layer.
void setMapCanvas(QgsMapCanvas *canvas)
Sets a map canvas associated with the widget.
QStackedWidget * mOptStackedWidget
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
static QgsProject * instance()
Returns the QgsProject singleton instance.
void setDirty(bool b=true)
Flag the project as dirty (modified).
void crsChanged(const QgsCoordinateReferenceSystem &)
Emitted when the selected CRS is changed.
Widget for renderer properties of the mesh, contours (scalars) and vectors data associated with the m...
This class is a composition of two QSettings instances:
Definition qgssettings.h:63
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.
bool isActive() const
Returns true if the temporal property is active.
void setIsActive(bool active)
Sets whether the temporal property is active.
bool isTemporal() const
Returns true if the object's temporal range is enabled, and the object will be filtered when renderin...
T begin() const
Returns the beginning of the range.
Definition qgsrange.h:394
T end() const
Returns the upper bound of the range.
Definition qgsrange.h:401
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition qgis.h:4258
#define QgsDebugMsgLevel(str, level)
Definition qgslogger.h:39
const QgsCoordinateReferenceSystem & crs