28#include "moc_qgsrenderermeshpropertieswidget.cpp"
30using namespace Qt::StringLiterals;
43 mMeshRendererActiveDatasetWidget->setLayer( mMeshLayer );
44 mMeshRendererScalarSettingsWidget->setLayer( mMeshLayer );
45 mMeshRendererScalarSettingsWidget->setCanvas(
mMapCanvas );
49 mMeshRendererVectorSettingsWidget->setLayer( mMeshLayer );
50 m3dAveragingSettingsWidget->setLayer( mMeshLayer );
55 mBlendModeComboBox->setBlendMode( mMeshLayer->blendMode() );
56 connect( mBlendModeComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &
QgsPanelWidget::widgetChanged );
58 mOpacityWidget->setOpacity( mMeshLayer->opacity() );
84 const bool edgeMeshRenderingIsEnabled = mEdgeMeshGroup->isChecked();
86 edgeMeshSettings.
setEnabled( edgeMeshRenderingIsEnabled );
89 const bool nativeMeshRenderingIsEnabled = mNativeMeshGroup->isChecked();
91 nativeMeshSettings.
setEnabled( nativeMeshRenderingIsEnabled );
94 const bool triangularMeshRenderingIsEnabled = mTriangularMeshGroup->isChecked();
96 triangularMeshSettings.
setEnabled( triangularMeshRenderingIsEnabled );
99 int activeScalarDatasetGroupIndex = mMeshRendererActiveDatasetWidget->activeScalarDatasetGroup();
100 if ( !mContoursGroupBox->isChecked() )
101 activeScalarDatasetGroupIndex = -1;
104 int activeVectorDatasetGroupIndex = mMeshRendererActiveDatasetWidget->activeVectorDatasetGroup();
105 if ( !mVectorsGroupBox->isChecked() )
106 activeVectorDatasetGroupIndex = -1;
114 if ( activeScalarDatasetGroupIndex > -1 )
115 settings.
setScalarSettings( activeScalarDatasetGroupIndex, mMeshRendererScalarSettingsWidget->settings() );
118 if ( activeVectorDatasetGroupIndex > -1 )
119 settings.
setVectorSettings( activeVectorDatasetGroupIndex, mMeshRendererVectorSettingsWidget->settings() );
121 const QgsMeshDatasetIndex staticScalarDatasetIndex( activeScalarDatasetGroupIndex, mMeshLayer->staticScalarDatasetIndex().dataset() );
122 const QgsMeshDatasetIndex staticVectorDatasetIndex( activeVectorDatasetGroupIndex, mMeshLayer->staticVectorDatasetIndex().dataset() );
123 mMeshLayer->setStaticScalarDatasetIndex( staticScalarDatasetIndex );
124 mMeshLayer->setStaticVectorDatasetIndex( staticVectorDatasetIndex );
127 mMeshLayer->setBlendMode( mBlendModeComboBox->blendMode() );
128 mLayer->setOpacity( mOpacityWidget->opacity() );
130 const std::unique_ptr<QgsMesh3DAveragingMethod> averagingMethod( m3dAveragingSettingsWidget->averagingMethod() );
132 mMeshLayer->setRendererSettings( settings );
133 mMeshLayer->triggerRepaint();
136 windowsSettings.
setValue( u
"/Windows/RendererMeshProperties/tab"_s, mStyleOptionsTab->currentIndex() );
141 QgsMeshLayer *ml = qobject_cast<QgsMeshLayer *>( mapLayer );
145 mMeshRendererActiveDatasetWidget->setLayer( ml );
149 m3dAveragingSettingsWidget->setLayer( ml );
154 syncToLayerPrivate();
157void QgsRendererMeshPropertiesWidget::syncToLayerPrivate()
162 mMeshRendererActiveDatasetWidget->syncToLayer();
163 mNativeMeshSettingsWidget->syncToLayer();
164 mTriangularMeshSettingsWidget->syncToLayer();
165 mEdgeMeshSettingsWidget->syncToLayer();
166 m3dAveragingSettingsWidget->syncToLayer();
176 mFaceMeshGroupBox->setVisible( hasFaces || !mMeshLayer->
isValid() );
179 mEdgeMeshGroupBox->setVisible( hasEdges || !mMeshLayer->
isValid() );
182 if ( !settings.
contains( u
"/Windows/RendererMeshProperties/tab"_s ) )
183 settings.
setValue( u
"/Windows/RendererMeshProperties/tab"_s, 0 );
185 mStyleOptionsTab->setCurrentIndex( settings.
value( u
"/Windows/RendererMeshProperties/tab"_s ).toInt() );
188void QgsRendererMeshPropertiesWidget::onActiveScalarGroupChanged(
int groupIndex )
190 mMeshRendererScalarSettingsWidget->setActiveDatasetGroup( groupIndex );
191 mMeshRendererScalarSettingsWidget->syncToLayer();
192 mContoursGroupBox->setChecked( groupIndex >= 0 );
193 mContoursGroupBox->setEnabled( groupIndex >= 0 );
196void QgsRendererMeshPropertiesWidget::onActiveVectorGroupChanged(
int groupIndex )
198 if ( groupIndex >= 0 && !mMeshLayer->datasetGroupMetadata( groupIndex ).isVector() )
200 mMeshRendererVectorSettingsWidget->setActiveDatasetGroup( groupIndex );
201 mMeshRendererVectorSettingsWidget->syncToLayer();
202 mVectorsGroupBox->setChecked( groupIndex >= 0 );
203 mVectorsGroupBox->setEnabled( groupIndex >= 0 );
Map canvas is a class for displaying all GIS data types on a canvas.
Base class for all map layer types.
void dataChanged()
Data of layer changed.
An index that identifies the dataset group (e.g.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
bool contains(const QgsMesh::ElementType &type) const
Returns whether the mesh contains at mesh elements of given type.
QgsMeshRendererSettings rendererSettings() const
Returns renderer settings.
Represents a mesh renderer settings for mesh objects.
void setEnabled(bool enabled)
Sets whether mesh structure rendering is enabled.
bool isEnabled() const
Returns whether mesh structure rendering is enabled.
Represents all mesh renderer settings.
void setAveragingMethod(QgsMesh3DAveragingMethod *method)
Sets averaging method for conversion of 3d stacked mesh data to 2d data.
void setActiveVectorDatasetGroup(int activeVectorDatasetGroup)
Sets the active vector dataset group.
int activeVectorDatasetGroup() const
Returns the active vector dataset group.
void setEdgeMeshSettings(const QgsMeshRendererMeshSettings &settings)
Sets new edge mesh renderer settings.
int activeScalarDatasetGroup() const
Returns the active scalar dataset group.
void setActiveScalarDatasetGroup(int activeScalarDatasetGroup)
Sets the active scalar dataset group.
void setVectorSettings(int groupIndex, const QgsMeshRendererVectorSettings &settings)
Sets new renderer settings.
void setTriangularMeshSettings(const QgsMeshRendererMeshSettings &settings)
Sets new triangular mesh renderer settings.
QgsMeshRendererMeshSettings edgeMeshSettings() const
Returns edge mesh renderer settings.
QgsMeshRendererMeshSettings nativeMeshSettings() const
Returns native mesh renderer settings.
void setScalarSettings(int groupIndex, const QgsMeshRendererScalarSettings &settings)
Sets new renderer settings.
QgsMeshRendererMeshSettings triangularMeshSettings() const
Returns triangular mesh renderer settings.
void setNativeMeshSettings(const QgsMeshRendererMeshSettings &settings)
Sets new native mesh renderer settings, triggers repaint.
static bool layerIsContainedInGroupLayer(QgsProject *project, QgsMapLayer *layer)
Returns true if the specified layer is a child layer from any QgsGroupLayer in the given project.
static QgsProject * instance()
Returns the QgsProject singleton instance.
Stores settings for use within QGIS.
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.