29#include "moc_qgsmeshlayerproperties.cpp" 
   39#include <QDesktopServices> 
   47  Q_ASSERT( mMeshLayer );
 
   52  mOptsPage_StyleContent->layout()->addWidget( mRendererMeshPropertiesWidget );
 
   54  mSimplifyReductionFactorSpinBox->setClearValue( 10.0 );
 
   55  mSimplifyMeshResolutionSpinBox->setClearValue( 5 );
 
   57  mStaticDatasetWidget->setLayer( mMeshLayer );
 
   80  connect( buttonBox, &QDialogButtonBox::helpRequested, 
this, &QgsMeshLayerProperties::showHelp );
 
   82  connect( mTemporalReloadButton, &QPushButton::clicked, 
this, &QgsMeshLayerProperties::reloadTemporalProperties );
 
   83  connect( mTemporalDateTimeReference, &QDateTimeEdit::dateTimeChanged, 
this, &QgsMeshLayerProperties::onTimeReferenceChange );
 
   87  mScaleRangeWidget->setMapCanvas( 
mCanvas );
 
   91  connect( mAlwaysTimeFromSourceCheckBox, &QCheckBox::stateChanged, 
this, [
this] {
 
   92    mTemporalDateTimeReference->setEnabled( !mAlwaysTimeFromSourceCheckBox->isChecked() );
 
   93    if ( mAlwaysTimeFromSourceCheckBox->isChecked() )
 
   94      reloadTemporalProperties();
 
  100  QVBoxLayout *labelingLayout = 
nullptr;
 
  105    labelingLayout = 
new QVBoxLayout( labelingFrame );
 
  106    labelingLayout->setContentsMargins( 0, 0, 0, 0 );
 
  108    mLabelingDialog->layout()->setContentsMargins( 0, 0, 0, 0 );
 
  109    labelingLayout->addWidget( mLabelingDialog );
 
  110    labelingFrame->setLayout( labelingLayout );
 
  114    mLabelingDialog = 
nullptr;
 
  115    mOptsPage_Labels->setEnabled( 
false ); 
 
  118  QVBoxLayout *metadataLayout = 
new QVBoxLayout( metadataFrame );
 
  119  metadataLayout->setContentsMargins( 0, 0, 0, 0 );
 
  120  metadataFrame->setContentsMargins( 0, 0, 0, 0 );
 
  122  mMetadataWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
 
  124  metadataLayout->addWidget( mMetadataWidget );
 
  125  metadataFrame->setLayout( metadataLayout );
 
  126  mOptsPage_Metadata->setContentsMargins( 0, 0, 0, 0 );
 
  127  mBackupCrs = mMeshLayer->
crs();
 
  129  mTemporalDateTimeStart->setDisplayFormat( 
"yyyy-MM-dd HH:mm:ss" );
 
  130  mTemporalDateTimeEnd->setDisplayFormat( 
"yyyy-MM-dd HH:mm:ss" );
 
  131  mTemporalDateTimeReference->setDisplayFormat( 
"yyyy-MM-dd HH:mm:ss" );
 
  141  if ( !settings.
contains( QStringLiteral( 
"/Windows/MeshLayerProperties/tab" ) ) )
 
  147  mOptsPage_Information->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#information-properties" ) );
 
  148  mOptsPage_Source->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#source-properties" ) );
 
  149  mOptsPage_Style->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#symbology-properties" ) );
 
  150  mOptsPage_Rendering->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#rendering-properties" ) );
 
  151  mOptsPage_Temporal->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#temporal-properties" ) );
 
  152  mOptsPage_Metadata->setProperty( 
"helpPage", QStringLiteral( 
"working_with_mesh/mesh_properties.html#metadata-properties" ) );
 
  154  mBtnStyle = 
new QPushButton( tr( 
"Style" ) );
 
  155  QMenu *menuStyle = 
new QMenu( 
this );
 
  158  menuStyle->addSeparator();
 
  162  connect( menuStyle, &QMenu::aboutToShow, 
this, &QgsMeshLayerProperties::aboutToShowStyleMenu );
 
  164  buttonBox->addButton( 
mBtnStyle, QDialogButtonBox::ResetRole );
 
  166  mBtnMetadata = 
new QPushButton( tr( 
"Metadata" ), 
this );
 
  167  QMenu *menuMetadata = 
new QMenu( 
this );
 
  171  buttonBox->addButton( 
mBtnMetadata, QDialogButtonBox::ResetRole );
 
 
  178  Q_ASSERT( mRendererMeshPropertiesWidget );
 
  180  QgsDebugMsgLevel( QStringLiteral( 
"populate general information tab" ), 4 );
 
  185  myStyle.append( QStringLiteral( 
"body { margin: 10px; }\n " ) );
 
  186  mInformationTextBrowser->clear();
 
  187  mInformationTextBrowser->document()->setDefaultStyleSheet( myStyle );
 
  188  mInformationTextBrowser->setHtml( mMeshLayer->
htmlMetadata() );
 
  189  mInformationTextBrowser->setOpenLinks( 
false );
 
  196  mLayerOrigNameLineEd->setText( mMeshLayer->
name() );
 
  199  mDatasetGroupTreeWidget->syncToLayer( mMeshLayer );
 
  203    w->syncToLayer( mMeshLayer );
 
  207    mSimplifyMeshGroupBox->setEnabled( 
false );
 
  210  mSimplifyMeshGroupBox->setChecked( simplifySettings.
isEnabled() );
 
  211  mSimplifyReductionFactorSpinBox->setValue( simplifySettings.
reductionFactor() );
 
  212  mSimplifyMeshResolutionSpinBox->setValue( simplifySettings.
meshResolution() );
 
  218  mTemporalDateTimeStart->setDateTime( timeRange.
begin() );
 
  219  mTemporalDateTimeEnd->setDateTime( timeRange.
end() );
 
  222    mTemporalProviderTimeUnitComboBox->setCurrentIndex(
 
  227  mComboBoxTemporalDatasetMatchingMethod->setCurrentIndex(
 
  228    mComboBoxTemporalDatasetMatchingMethod->findData( temporalProperties->
matchingMethod() )
 
  231  mStaticDatasetWidget->syncToLayer();
 
 
  252  Q_ASSERT( mRendererMeshPropertiesWidget );
 
  258  mMeshLayer->
setName( mLayerOrigNameLineEd->text() );
 
  264  mDatasetGroupTreeWidget->apply();
 
  276  simplifySettings.
setEnabled( mSimplifyMeshGroupBox->isChecked() );
 
  291  if ( mLabelingDialog )
 
  304      static_cast<Qgis::TemporalUnit>( mTemporalProviderTimeUnitComboBox->currentData().toInt() )
 
  307  mStaticDatasetWidget->apply();
 
  311    mComboBoxTemporalDatasetMatchingMethod->currentData().toInt()
 
  316    ->setAlwaysLoadReferenceTimeFromSource( mAlwaysTimeFromSourceCheckBox->isChecked() );
 
  320  mBackupCrs = mMeshLayer->
crs();
 
  322  if ( needMeshUpdating )
 
  325  if ( needEmitRendererChanged )
 
  335  mStaticDatasetWidget->syncToLayer();
 
  337    w->syncToLayer( mMeshLayer );
 
 
  346void QgsMeshLayerProperties::syncAndRepaint()
 
  352void QgsMeshLayerProperties::showHelp()
 
  354  const QVariant helpPage = mOptionsStackedWidget->currentWidget()->property( 
"helpPage" );
 
  356  if ( helpPage.isValid() )
 
  366void QgsMeshLayerProperties::aboutToShowStyleMenu()
 
  368  QMenu *m = qobject_cast<QMenu *>( sender() );
 
  376void QgsMeshLayerProperties::reloadTemporalProperties()
 
  382  QDateTime referenceTime = temporalCapabalities->
referenceTime();
 
  383  if ( referenceTime.isValid() )
 
  385    timeExtent = temporalCapabalities->
timeExtent();
 
  386    whileBlocking( mTemporalDateTimeReference )->setDateTime( referenceTime );
 
  390    timeExtent = temporalCapabalities->
timeExtent( mTemporalDateTimeReference->dateTime() );
 
  392  mTemporalDateTimeStart->setDateTime( timeExtent.
begin() );
 
  393  mTemporalDateTimeEnd->setDateTime( timeExtent.
end() );
 
  396void QgsMeshLayerProperties::onTimeReferenceChange()
 
  401  mTemporalDateTimeStart->setDateTime( timeExtent.
begin() );
 
  402  mTemporalDateTimeEnd->setDateTime( timeExtent.
end() );
 
  407  if ( mBackupCrs != mMeshLayer->
crs() )
 
  408    mMeshLayer->
setCrs( mBackupCrs );
 
 
TemporalUnit
Temporal units.
 
static QString reportStyleSheet(QgsApplication::StyleSheetType styleSheetType=QgsApplication::StyleSheetType::Qt)
Returns a css style sheet for reports, the styleSheetType argument determines what type of stylesheet...
 
Represents a coordinate reference system (CRS).
 
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 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.
 
void removesExtraMenuSeparators(QMenu *m)
removes extra separators from the menu
 
void addStyleManagerActions(QMenu *m, QgsMapLayer *layer)
adds actions to the menu in accordance to the layer
 
static QgsMapLayerStyleGuiUtils * instance()
returns a singleton instance of this class
 
void currentStyleChanged(const QString ¤tName)
Emitted when the current style has been changed.
 
Base class for all map layer types.
 
void setMinimumScale(double scale)
Sets the minimum map scale (i.e.
 
QgsCoordinateReferenceSystem crs
 
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.
 
Handles 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.
 
@ FindClosestDatasetBeforeStartRangeTime
 
@ 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.
 
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.
 
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).
 
Stores settings for use within QGIS.
 
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.
 
T end() const
Returns the upper bound of the range.
 
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
 
#define QgsDebugMsgLevel(str, level)
 
const QgsCoordinateReferenceSystem & crs