QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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"
37
38#include <QDesktopServices>
39#include <QFileDialog>
40#include <QMessageBox>
41
42QgsMeshLayerProperties::QgsMeshLayerProperties( QgsMapLayer *lyr, QgsMapCanvas *canvas, QWidget *parent, Qt::WindowFlags fl )
43 : QgsLayerPropertiesDialog( lyr, canvas, QStringLiteral( "MeshLayerProperties" ), parent, fl )
44 , mMeshLayer( qobject_cast<QgsMeshLayer *>( lyr ) )
45{
46 Q_ASSERT( mMeshLayer );
47
48 setupUi( this );
49 mRendererMeshPropertiesWidget = new QgsRendererMeshPropertiesWidget( mMeshLayer, canvas, this );
50 mConfigWidgets << mRendererMeshPropertiesWidget;
51 mOptsPage_StyleContent->layout()->addWidget( mRendererMeshPropertiesWidget );
52
53 mSimplifyReductionFactorSpinBox->setClearValue( 10.0 );
54 mSimplifyMeshResolutionSpinBox->setClearValue( 5 );
55
56 mStaticDatasetWidget->setLayer( mMeshLayer );
57 mIsMapSettingsTemporal = mMeshLayer && canvas && canvas->mapSettings().isTemporal();
58
59 mTemporalProviderTimeUnitComboBox->addItem( tr( "Seconds" ), static_cast< int >( Qgis::TemporalUnit::Seconds ) );
60 mTemporalProviderTimeUnitComboBox->addItem( tr( "Minutes" ), static_cast< int >( Qgis::TemporalUnit::Minutes ) );
61 mTemporalProviderTimeUnitComboBox->addItem( tr( "Hours" ), static_cast< int >( Qgis::TemporalUnit::Hours ) );
62 mTemporalProviderTimeUnitComboBox->addItem( tr( "Days" ), static_cast< int >( Qgis::TemporalUnit::Days ) );
63
64 connect( mCrsSelector, &QgsProjectionSelectionWidget::crsChanged, this, &QgsMeshLayerProperties::changeCrs );
66
67 // QgsOptionsDialogBase handles saving/restoring of geometry, splitter and current tab states,
68 // switching vertical tabs between icon/text to icon-only modes (splitter collapsed to left),
69 // and connecting QDialogButtonBox's accepted/rejected signals to dialog's accept/reject slots
70 initOptionsBase( false );
71
72 connect( lyr->styleManager(), &QgsMapLayerStyleManager::currentStyleChanged, this, &QgsMeshLayerProperties::syncAndRepaint );
73
74 connect( this, &QDialog::accepted, this, &QgsMeshLayerProperties::apply );
75 connect( this, &QDialog::rejected, this, &QgsMeshLayerProperties::rollback );
76 connect( buttonBox->button( QDialogButtonBox::Apply ), &QAbstractButton::clicked, this, &QgsMeshLayerProperties::apply );
77
78 connect( mMeshLayer, &QgsMeshLayer::dataChanged, this, &QgsMeshLayerProperties::syncAndRepaint );
79 connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsMeshLayerProperties::showHelp );
80
81 connect( mTemporalReloadButton, &QPushButton::clicked, this, &QgsMeshLayerProperties::reloadTemporalProperties );
82 connect( mTemporalDateTimeReference, &QDateTimeEdit::dateTimeChanged, this, &QgsMeshLayerProperties::onTimeReferenceChange );
85
86 mScaleRangeWidget->setMapCanvas( mCanvas );
87 chkUseScaleDependentRendering->setChecked( lyr->hasScaleBasedVisibility() );
88 mScaleRangeWidget->setScaleRange( lyr->minimumScale(), lyr->maximumScale() );
89
90 connect( mAlwaysTimeFromSourceCheckBox, &QCheckBox::stateChanged, this, [this]
91 {
92 mTemporalDateTimeReference->setEnabled( !mAlwaysTimeFromSourceCheckBox->isChecked() );
93 if ( mAlwaysTimeFromSourceCheckBox->isChecked() )
94 reloadTemporalProperties();
95 } );
96
97 mComboBoxTemporalDatasetMatchingMethod->addItem( tr( "Find Closest Dataset Before Requested Time" ),
99 mComboBoxTemporalDatasetMatchingMethod->addItem( tr( "Find Closest Dataset From Requested Time (After or Before)" ),
101
102 QVBoxLayout *labelingLayout = nullptr;
103
104 if ( mMeshLayer->contains( QgsMesh::ElementType::Face ) )
105 {
106 // Create the Labeling dialog tab
107 labelingLayout = new QVBoxLayout( labelingFrame );
108 labelingLayout->setContentsMargins( 0, 0, 0, 0 );
109 mLabelingDialog = new QgsMeshLabelingWidget( mMeshLayer, mCanvas, labelingFrame );
110 mLabelingDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
111 labelingLayout->addWidget( mLabelingDialog );
112 labelingFrame->setLayout( labelingLayout );
113 }
114 else
115 {
116 mLabelingDialog = nullptr;
117 mOptsPage_Labels->setEnabled( false ); // disable labeling item
118 }
119
120 QVBoxLayout *metadataLayout = new QVBoxLayout( metadataFrame );
121 metadataLayout->setContentsMargins( 0, 0, 0, 0 );
122 metadataFrame->setContentsMargins( 0, 0, 0, 0 );
123 mMetadataWidget = new QgsMetadataWidget( this, mMeshLayer );
124 mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
125 mMetadataWidget->setMapCanvas( mCanvas );
126 metadataLayout->addWidget( mMetadataWidget );
127 metadataFrame->setLayout( metadataLayout );
128 mOptsPage_Metadata->setContentsMargins( 0, 0, 0, 0 );
129 mBackupCrs = mMeshLayer->crs();
130
131 mTemporalDateTimeStart->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
132 mTemporalDateTimeEnd->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
133 mTemporalDateTimeReference->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
134
135 setMetadataWidget( mMetadataWidget, mOptsPage_Metadata );
136
137 // update based on lyr's current state
138 syncToLayer();
139
140 QgsSettings settings;
141 // if dialog hasn't been opened/closed yet, default to Styles tab, which is used most often
142 // this will be read by restoreOptionsBaseUi()
143 if ( !settings.contains( QStringLiteral( "/Windows/MeshLayerProperties/tab" ) ) )
144 {
145 settings.setValue( QStringLiteral( "Windows/MeshLayerProperties/tab" ),
146 mOptStackedWidget->indexOf( mOptsPage_Style ) );
147 }
148
149 //Add help page references
150 mOptsPage_Information->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#information-properties" ) );
151 mOptsPage_Source->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#source-properties" ) );
152 mOptsPage_Style->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#symbology-properties" ) );
153 mOptsPage_Rendering->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#rendering-properties" ) );
154 mOptsPage_Temporal->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#temporal-properties" ) );
155 mOptsPage_Metadata->setProperty( "helpPage", QStringLiteral( "working_with_mesh/mesh_properties.html#metadata-properties" ) );
156
157 mBtnStyle = new QPushButton( tr( "Style" ) );
158 QMenu *menuStyle = new QMenu( this );
159 menuStyle->addAction( tr( "Load Style…" ), this, &QgsMeshLayerProperties::loadStyleFromFile );
160 menuStyle->addAction( tr( "Save Style…" ), this, &QgsMeshLayerProperties::saveStyleToFile );
161 menuStyle->addSeparator();
162 menuStyle->addAction( tr( "Save as Default" ), this, &QgsMeshLayerProperties::saveStyleAsDefault );
163 menuStyle->addAction( tr( "Restore Default" ), this, &QgsMeshLayerProperties::loadDefaultStyle );
164 mBtnStyle->setMenu( menuStyle );
165 connect( menuStyle, &QMenu::aboutToShow, this, &QgsMeshLayerProperties::aboutToShowStyleMenu );
166
167 buttonBox->addButton( mBtnStyle, QDialogButtonBox::ResetRole );
168
169 mBtnMetadata = new QPushButton( tr( "Metadata" ), this );
170 QMenu *menuMetadata = new QMenu( this );
171 mActionLoadMetadata = menuMetadata->addAction( tr( "Load Metadata…" ), this, &QgsMeshLayerProperties::loadMetadataFromFile );
172 mActionSaveMetadataAs = menuMetadata->addAction( tr( "Save Metadata…" ), this, &QgsMeshLayerProperties::saveMetadataToFile );
173 mBtnMetadata->setMenu( menuMetadata );
174 buttonBox->addButton( mBtnMetadata, QDialogButtonBox::ResetRole );
175
176 initialize();
177}
178
180{
181 Q_ASSERT( mRendererMeshPropertiesWidget );
182
183 QgsDebugMsgLevel( QStringLiteral( "populate general information tab" ), 4 );
184 /*
185 * Information Tab
186 */
187 QString myStyle = QgsApplication::reportStyleSheet();
188 myStyle.append( QStringLiteral( "body { margin: 10px; }\n " ) );
189 mInformationTextBrowser->clear();
190 mInformationTextBrowser->document()->setDefaultStyleSheet( myStyle );
191 mInformationTextBrowser->setHtml( mMeshLayer->htmlMetadata() );
192 mInformationTextBrowser->setOpenLinks( false );
193 connect( mInformationTextBrowser, &QTextBrowser::anchorClicked, this, &QgsMeshLayerProperties::openUrl );
194
195 QgsDebugMsgLevel( QStringLiteral( "populate source tab" ), 4 );
196 /*
197 * Source Tab
198 */
199 mLayerOrigNameLineEd->setText( mMeshLayer->name() );
200 whileBlocking( mCrsSelector )->setCrs( mMeshLayer->crs() );
201
202 mDatasetGroupTreeWidget->syncToLayer( mMeshLayer );
203
204 QgsDebugMsgLevel( QStringLiteral( "populate config tab" ), 4 );
205 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
206 w->syncToLayer( mMeshLayer );
207
208 QgsDebugMsgLevel( QStringLiteral( "populate rendering tab" ), 4 );
209 if ( mMeshLayer->isEditable() )
210 mSimplifyMeshGroupBox->setEnabled( false );
211
212 QgsMeshSimplificationSettings simplifySettings = mMeshLayer->meshSimplificationSettings();
213 mSimplifyMeshGroupBox->setChecked( simplifySettings.isEnabled() );
214 mSimplifyReductionFactorSpinBox->setValue( simplifySettings.reductionFactor() );
215 mSimplifyMeshResolutionSpinBox->setValue( simplifySettings.meshResolution() );
216
217 QgsDebugMsgLevel( QStringLiteral( "populate temporal tab" ), 4 );
218 const QgsMeshLayerTemporalProperties *temporalProperties = qobject_cast< const QgsMeshLayerTemporalProperties * >( mMeshLayer->temporalProperties() );
219 whileBlocking( mTemporalDateTimeReference )->setDateTime( temporalProperties->referenceTime() );
220 const QgsDateTimeRange timeRange = temporalProperties->timeExtent();
221 mTemporalDateTimeStart->setDateTime( timeRange.begin() );
222 mTemporalDateTimeEnd->setDateTime( timeRange.end() );
223 if ( mMeshLayer->dataProvider() )
224 {
225 mTemporalProviderTimeUnitComboBox->setCurrentIndex(
226 mTemporalProviderTimeUnitComboBox->findData( static_cast< int >( mMeshLayer->dataProvider()->temporalCapabilities()->temporalUnit() ) ) );
227 }
228 mAlwaysTimeFromSourceCheckBox->setChecked( temporalProperties->alwaysLoadReferenceTimeFromSource() );
229 mComboBoxTemporalDatasetMatchingMethod->setCurrentIndex(
230 mComboBoxTemporalDatasetMatchingMethod->findData( temporalProperties->matchingMethod() ) );
231
232 mStaticDatasetWidget->syncToLayer();
233 mStaticDatasetGroupBox->setChecked( !mMeshLayer->temporalProperties()->isActive() );
234}
235
237{
239}
240
242{
244}
245
247{
249}
250
252{
253 Q_ASSERT( mRendererMeshPropertiesWidget );
254
255 QgsDebugMsgLevel( QStringLiteral( "processing general tab" ), 4 );
256 /*
257 * General Tab
258 */
259 mMeshLayer->setName( mLayerOrigNameLineEd->text() );
260
261 QgsDebugMsgLevel( QStringLiteral( "processing source tab" ), 4 );
262 /*
263 * Source Tab
264 */
265 mDatasetGroupTreeWidget->apply();
266
267 QgsDebugMsgLevel( QStringLiteral( "processing config tabs" ), 4 );
268
269 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
270 w->apply();
271
272 QgsDebugMsgLevel( QStringLiteral( "processing rendering tab" ), 4 );
273 /*
274 * Rendering Tab
275 */
276 QgsMeshSimplificationSettings simplifySettings;
277 simplifySettings.setEnabled( mSimplifyMeshGroupBox->isChecked() );
278 simplifySettings.setReductionFactor( mSimplifyReductionFactorSpinBox->value() );
279 simplifySettings.setMeshResolution( mSimplifyMeshResolutionSpinBox->value() );
280 bool needMeshUpdating = ( ( simplifySettings.isEnabled() != mMeshLayer->meshSimplificationSettings().isEnabled() ) ||
281 ( simplifySettings.reductionFactor() != mMeshLayer->meshSimplificationSettings().reductionFactor() ) );
282
283 mMeshLayer->setMeshSimplificationSettings( simplifySettings );
284
285 mMeshLayer->setScaleBasedVisibility( chkUseScaleDependentRendering->isChecked() );
286 mMeshLayer->setMinimumScale( mScaleRangeWidget->minimumScale() );
287 mMeshLayer->setMaximumScale( mScaleRangeWidget->maximumScale() );
288
289 QgsDebugMsgLevel( QStringLiteral( "processing labeling tab" ), 4 );
290 /*
291 * Labeling Tab
292 */
293 if ( mLabelingDialog )
294 {
295 mLabelingDialog->writeSettingsToLayer();
296 }
297
298 QgsDebugMsgLevel( QStringLiteral( "processing temporal tab" ), 4 );
299 /*
300 * Temporal Tab
301 */
302
303 mMeshLayer->setReferenceTime( mTemporalDateTimeReference->dateTime() );
304 if ( mMeshLayer->dataProvider() )
305 mMeshLayer->dataProvider()->setTemporalUnit(
306 static_cast<Qgis::TemporalUnit>( mTemporalProviderTimeUnitComboBox->currentData().toInt() ) );
307
308 mStaticDatasetWidget->apply();
309 bool needEmitRendererChanged = mMeshLayer->temporalProperties()->isActive() == mStaticDatasetGroupBox->isChecked();
310 mMeshLayer->temporalProperties()->setIsActive( !mStaticDatasetGroupBox->isChecked() );
312 mComboBoxTemporalDatasetMatchingMethod->currentData().toInt() ) );
313 static_cast<QgsMeshLayerTemporalProperties *>(
314 mMeshLayer->temporalProperties() )->setAlwaysLoadReferenceTimeFromSource( mAlwaysTimeFromSourceCheckBox->isChecked() );
315
316 mMetadataWidget->acceptMetadata();
317
318 mBackupCrs = mMeshLayer->crs();
319
320 if ( needMeshUpdating )
321 mMeshLayer->reload();
322
323 if ( needEmitRendererChanged )
324 emit mMeshLayer->rendererChanged();
325
326 //make sure the layer is redrawn
327 mMeshLayer->triggerRepaint();
328
329 // notify the project we've made a change
331
332 // Resync what have to be resync (widget that can be changed by other properties part)
333 mStaticDatasetWidget->syncToLayer();
334 for ( QgsMapLayerConfigWidget *w : std::as_const( mConfigWidgets ) )
335 w->syncToLayer( mMeshLayer );
336}
337
338void QgsMeshLayerProperties::changeCrs( const QgsCoordinateReferenceSystem &crs )
339{
340 QgsDatumTransformDialog::run( crs, QgsProject::instance()->crs(), this, mCanvas, tr( "Select Transformation" ) );
341 mMeshLayer->setCrs( crs );
342}
343
344void QgsMeshLayerProperties::syncAndRepaint()
345{
346 syncToLayer();
347 mMeshLayer->triggerRepaint();
348}
349
350void QgsMeshLayerProperties::showHelp()
351{
352 const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property( "helpPage" );
353
354 if ( helpPage.isValid() )
355 {
356 QgsHelp::openHelp( helpPage.toString() );
357 }
358 else
359 {
360 QgsHelp::openHelp( QStringLiteral( "working_with_mesh/mesh_properties.html" ) );
361 }
362}
363
364void QgsMeshLayerProperties::aboutToShowStyleMenu()
365{
366 QMenu *m = qobject_cast<QMenu *>( sender() );
367
369 // re-add style manager actions!
370 m->addSeparator();
372}
373
374void QgsMeshLayerProperties::reloadTemporalProperties()
375{
376 if ( !mMeshLayer->dataProvider() )
377 return;
378 QgsMeshDataProviderTemporalCapabilities *temporalCapabalities = mMeshLayer->dataProvider()->temporalCapabilities();
379 QgsDateTimeRange timeExtent;
380 QDateTime referenceTime = temporalCapabalities->referenceTime();
381 if ( referenceTime.isValid() )
382 {
383 timeExtent = temporalCapabalities->timeExtent();
384 whileBlocking( mTemporalDateTimeReference )->setDateTime( referenceTime );
385 }
386 else
387 // The reference time already here is used again to define the time extent
388 timeExtent = temporalCapabalities->timeExtent( mTemporalDateTimeReference->dateTime() );
389
390 mTemporalDateTimeStart->setDateTime( timeExtent.begin() );
391 mTemporalDateTimeEnd->setDateTime( timeExtent.end() );
392}
393
394void QgsMeshLayerProperties::onTimeReferenceChange()
395{
396 if ( !mMeshLayer->dataProvider() )
397 return;
398 const QgsDateTimeRange &timeExtent = mMeshLayer->dataProvider()->temporalCapabilities()->timeExtent( mTemporalDateTimeReference->dateTime() );
399 mTemporalDateTimeStart->setDateTime( timeExtent.begin() );
400 mTemporalDateTimeEnd->setDateTime( timeExtent.end() );
401}
402
404{
405 if ( mBackupCrs != mMeshLayer->crs() )
406 mMeshLayer->setCrs( mBackupCrs );
407
409}
TemporalUnit
Temporal units.
Definition: qgis.h:4231
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:39
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.
Definition: qgsmapcanvas.h:93
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:75
QString name
Definition: qgsmaplayer.h:78
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
QgsCoordinateReferenceSystem crs
Definition: qgsmaplayer.h:81
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.
Master widget for configuration of labeling of a mesh layer.
void writeSettingsToLayer()
save config to layer
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.
Definition: qgsmeshlayer.h:101
void setMeshSimplificationSettings(const QgsMeshSimplificationSettings &meshSimplificationSettings)
Sets mesh simplification settings.
bool contains(const QgsMesh::ElementType &type) const
Returns whether the mesh contains at mesh elements of given type.
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.
Definition: qgsproject.cpp:481
void setDirty(bool b=true)
Flag the project as dirty (modified).
Definition: qgsproject.cpp:599
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:64
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:444
T end() const
Returns the upper bound of the range.
Definition: qgsrange.h:451
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition: qgis.h:5111
#define QgsDebugMsgLevel(str, level)
Definition: qgslogger.h:39
const QgsCoordinateReferenceSystem & crs