mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
Fix issues around enabled/disabled state of scalar/vector rendering
This commit is contained in:
parent
6fcc1626f9
commit
9273090d16
@ -87,6 +87,8 @@ Sets color ramp shader function
|
||||
%Docstring
|
||||
Returns whether color ramp has any items assigned
|
||||
%End
|
||||
|
||||
void setEnabled( bool enabled );
|
||||
};
|
||||
|
||||
class QgsMeshRendererVectorSettings
|
||||
@ -106,6 +108,16 @@ Represents a mesh renderer settings for vector datasets
|
||||
#include "qgsmeshrenderersettings.h"
|
||||
%End
|
||||
public:
|
||||
|
||||
bool isEnabled() const;
|
||||
%Docstring
|
||||
Returns whether rendering of vectors is enabled
|
||||
%End
|
||||
void setEnabled( bool enabled );
|
||||
%Docstring
|
||||
Sets whether rendering of vectors is enabled
|
||||
%End
|
||||
|
||||
enum ArrowScalingMethod
|
||||
{
|
||||
|
||||
|
@ -30,14 +30,8 @@ QgsMeshRendererActiveDatasetWidget::QgsMeshRendererActiveDatasetWidget( QWidget
|
||||
|
||||
void QgsMeshRendererActiveDatasetWidget::setLayer( QgsMeshLayer *layer )
|
||||
{
|
||||
if ( layer != mMeshLayer )
|
||||
{
|
||||
mMeshLayer = layer;
|
||||
}
|
||||
|
||||
mMeshLayer = layer;
|
||||
mDatasetGroupTreeView->setLayer( layer );
|
||||
setEnabled( mMeshLayer );
|
||||
syncToLayer();
|
||||
}
|
||||
|
||||
QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::activeScalarDataset() const
|
||||
@ -161,6 +155,8 @@ QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::datasetIndex() const
|
||||
|
||||
void QgsMeshRendererActiveDatasetWidget::syncToLayer()
|
||||
{
|
||||
setEnabled( mMeshLayer );
|
||||
|
||||
whileBlocking( mDatasetGroupTreeView )->syncToLayer();
|
||||
|
||||
if ( mMeshLayer )
|
||||
|
@ -41,12 +41,7 @@ QgsMeshRendererMeshSettingsWidget::QgsMeshRendererMeshSettingsWidget( QWidget *p
|
||||
void QgsMeshRendererMeshSettingsWidget::setLayer( QgsMeshLayer *layer, bool isTriangularMesh )
|
||||
{
|
||||
mIsTriangularMesh = isTriangularMesh;
|
||||
|
||||
if ( layer != mMeshLayer )
|
||||
{
|
||||
mMeshLayer = layer;
|
||||
syncToLayer();
|
||||
}
|
||||
mMeshLayer = layer;
|
||||
}
|
||||
|
||||
QgsMeshRendererMeshSettings QgsMeshRendererMeshSettingsWidget::settings() const
|
||||
|
@ -37,11 +37,7 @@ QgsMeshRendererScalarSettingsWidget::QgsMeshRendererScalarSettingsWidget( QWidge
|
||||
|
||||
void QgsMeshRendererScalarSettingsWidget::setLayer( QgsMeshLayer *layer )
|
||||
{
|
||||
if ( layer != mMeshLayer )
|
||||
{
|
||||
mMeshLayer = layer;
|
||||
syncToLayer();
|
||||
}
|
||||
mMeshLayer = layer;
|
||||
}
|
||||
|
||||
QgsMeshRendererScalarSettings QgsMeshRendererScalarSettingsWidget::settings() const
|
||||
|
@ -49,11 +49,7 @@ QgsMeshRendererVectorSettingsWidget::QgsMeshRendererVectorSettingsWidget( QWidge
|
||||
|
||||
void QgsMeshRendererVectorSettingsWidget::setLayer( QgsMeshLayer *layer )
|
||||
{
|
||||
if ( layer != mMeshLayer )
|
||||
{
|
||||
mMeshLayer = layer;
|
||||
syncToLayer();
|
||||
}
|
||||
mMeshLayer = layer;
|
||||
}
|
||||
|
||||
QgsMeshRendererVectorSettings QgsMeshRendererVectorSettingsWidget::settings() const
|
||||
|
@ -42,6 +42,7 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
|
||||
mNativeMeshSettingsWidget->setLayer( mMeshLayer, false );
|
||||
mTriangularMeshSettingsWidget->setLayer( mMeshLayer, true );
|
||||
mMeshRendererVectorSettingsWidget->setLayer( mMeshLayer );
|
||||
syncToLayer();
|
||||
|
||||
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeScalarDatasetChanged,
|
||||
mMeshRendererScalarSettingsWidget, &QgsMeshRendererScalarSettingsWidget::setActiveDataset );
|
||||
@ -62,10 +63,6 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
|
||||
this, &QgsPanelWidget::widgetChanged );
|
||||
connect( mTriangularMeshSettingsWidget, &QgsMeshRendererMeshSettingsWidget::widgetChanged,
|
||||
this, &QgsPanelWidget::widgetChanged );
|
||||
|
||||
mMeshRendererScalarSettingsWidget->setActiveDataset( mMeshRendererActiveDatasetWidget->activeScalarDataset() );
|
||||
mMeshRendererVectorSettingsWidget->setActiveDataset( mMeshRendererActiveDatasetWidget->activeVectorDataset() );
|
||||
enableVectorRenderingTab( activeVectorDataset() );
|
||||
}
|
||||
|
||||
void QgsRendererMeshPropertiesWidget::apply()
|
||||
@ -86,22 +83,18 @@ void QgsRendererMeshPropertiesWidget::apply()
|
||||
whileBlocking( mMeshLayer )->setRendererTriangularMeshSettings( triangularMeshSettings );
|
||||
|
||||
// SCALAR
|
||||
const QgsMeshDatasetIndex activeScalarDatasetIndex = activeScalarDataset();
|
||||
const QgsMeshDatasetIndex activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeScalarDataset();
|
||||
whileBlocking( mMeshLayer )->setActiveScalarDataset( activeScalarDatasetIndex );
|
||||
if ( activeScalarDatasetIndex.isValid() )
|
||||
{
|
||||
const QgsMeshRendererScalarSettings settings = mMeshRendererScalarSettingsWidget->settings();
|
||||
whileBlocking( mMeshLayer )->setRendererScalarSettings( settings );
|
||||
}
|
||||
QgsMeshRendererScalarSettings scalarSettings = mMeshRendererScalarSettingsWidget->settings();
|
||||
scalarSettings.setEnabled( mContoursGroupBox->isChecked() );
|
||||
whileBlocking( mMeshLayer )->setRendererScalarSettings( scalarSettings );
|
||||
|
||||
// VECTOR
|
||||
const QgsMeshDatasetIndex activeVectorDatasetIndex = activeVectorDataset();
|
||||
const QgsMeshDatasetIndex activeVectorDatasetIndex = mMeshRendererActiveDatasetWidget->activeVectorDataset();
|
||||
whileBlocking( mMeshLayer )->setActiveVectorDataset( activeVectorDatasetIndex );
|
||||
if ( activeVectorDatasetIndex.isValid() )
|
||||
{
|
||||
const QgsMeshRendererVectorSettings settings = mMeshRendererVectorSettingsWidget->settings();
|
||||
whileBlocking( mMeshLayer )->setRendererVectorSettings( settings );
|
||||
}
|
||||
QgsMeshRendererVectorSettings vectorSettings = mMeshRendererVectorSettingsWidget->settings();
|
||||
vectorSettings.setEnabled( mVectorsGroupBox->isChecked() );
|
||||
whileBlocking( mMeshLayer )->setRendererVectorSettings( vectorSettings );
|
||||
|
||||
mMeshLayer->triggerRepaint();
|
||||
}
|
||||
@ -109,33 +102,21 @@ void QgsRendererMeshPropertiesWidget::apply()
|
||||
void QgsRendererMeshPropertiesWidget::syncToLayer()
|
||||
{
|
||||
mMeshRendererActiveDatasetWidget->syncToLayer();
|
||||
mMeshRendererScalarSettingsWidget->setActiveDataset( mMeshRendererActiveDatasetWidget->activeScalarDataset() );
|
||||
mMeshRendererVectorSettingsWidget->setActiveDataset( mMeshRendererActiveDatasetWidget->activeVectorDataset() );
|
||||
|
||||
mMeshRendererScalarSettingsWidget->syncToLayer();
|
||||
mNativeMeshSettingsWidget->syncToLayer();
|
||||
mTriangularMeshSettingsWidget->syncToLayer();
|
||||
mMeshRendererVectorSettingsWidget->syncToLayer();
|
||||
|
||||
enableVectorRenderingTab( activeVectorDataset() );
|
||||
mContoursGroupBox->setChecked( mMeshLayer->rendererScalarSettings().isEnabled() );
|
||||
mVectorsGroupBox->setChecked( mMeshLayer->rendererVectorSettings().isEnabled() );
|
||||
|
||||
enableVectorRenderingTab( mMeshRendererActiveDatasetWidget->activeVectorDataset() );
|
||||
}
|
||||
|
||||
void QgsRendererMeshPropertiesWidget::enableVectorRenderingTab( QgsMeshDatasetIndex vectorDatasetIndex )
|
||||
{
|
||||
mVectorsGroupBox->setEnabled( vectorDatasetIndex.isValid() );
|
||||
}
|
||||
|
||||
QgsMeshDatasetIndex QgsRendererMeshPropertiesWidget::activeScalarDataset() const
|
||||
{
|
||||
QgsMeshDatasetIndex activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeScalarDataset();
|
||||
if ( activeScalarDatasetIndex.isValid() && mContoursGroupBox->isChecked() )
|
||||
return activeScalarDatasetIndex;
|
||||
else
|
||||
return QgsMeshDatasetIndex();
|
||||
}
|
||||
|
||||
QgsMeshDatasetIndex QgsRendererMeshPropertiesWidget::activeVectorDataset() const
|
||||
{
|
||||
QgsMeshDatasetIndex activeScalarDatasetIndex = mMeshRendererActiveDatasetWidget->activeVectorDataset();
|
||||
if ( activeScalarDatasetIndex.isValid() && mVectorsGroupBox->isChecked() )
|
||||
return activeScalarDatasetIndex;
|
||||
else
|
||||
return QgsMeshDatasetIndex();
|
||||
}
|
||||
|
@ -56,12 +56,6 @@ class APP_EXPORT QgsRendererMeshPropertiesWidget : public QgsMapLayerConfigWidge
|
||||
void enableVectorRenderingTab( QgsMeshDatasetIndex vectorDatasetIndex );
|
||||
|
||||
private:
|
||||
//! Gets index of the selected/active scalar dataset
|
||||
QgsMeshDatasetIndex activeScalarDataset() const;
|
||||
|
||||
//! Gets index of the selected/active vector dataset
|
||||
QgsMeshDatasetIndex activeVectorDataset() const;
|
||||
|
||||
QgsMeshLayer *mMeshLayer = nullptr; //not owned
|
||||
};
|
||||
|
||||
|
@ -264,6 +264,9 @@ void QgsMeshLayerRenderer::renderScalarDataset()
|
||||
|
||||
void QgsMeshLayerRenderer::renderVectorDataset()
|
||||
{
|
||||
if ( !mRendererVectorSettings.isEnabled() )
|
||||
return;
|
||||
|
||||
if ( mVectorDatasetValuesX.isEmpty() )
|
||||
return;
|
||||
|
||||
|
@ -61,7 +61,12 @@ void QgsMeshRendererScalarSettings::setColorRampShader( const QgsColorRampShader
|
||||
|
||||
bool QgsMeshRendererScalarSettings::isEnabled() const
|
||||
{
|
||||
return !mColorRampShader.isEmpty();
|
||||
return mEnabled;
|
||||
}
|
||||
|
||||
void QgsMeshRendererScalarSettings::setEnabled( bool enabled )
|
||||
{
|
||||
mEnabled = enabled;
|
||||
}
|
||||
|
||||
|
||||
|
@ -78,7 +78,10 @@ class CORE_EXPORT QgsMeshRendererScalarSettings
|
||||
|
||||
//! Returns whether color ramp has any items assigned
|
||||
bool isEnabled() const;
|
||||
|
||||
void setEnabled( bool enabled );
|
||||
private:
|
||||
bool mEnabled = false;
|
||||
QgsColorRampShader mColorRampShader;
|
||||
};
|
||||
|
||||
@ -94,6 +97,12 @@ class CORE_EXPORT QgsMeshRendererScalarSettings
|
||||
class CORE_EXPORT QgsMeshRendererVectorSettings
|
||||
{
|
||||
public:
|
||||
|
||||
//! Returns whether rendering of vectors is enabled
|
||||
bool isEnabled() const { return mEnabled; }
|
||||
//! Sets whether rendering of vectors is enabled
|
||||
void setEnabled( bool enabled ) { mEnabled = enabled; }
|
||||
|
||||
//! Algorithm how to transform vector magnitude to length of arrow on the device in pixels
|
||||
enum ArrowScalingMethod
|
||||
{
|
||||
@ -224,6 +233,7 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
|
||||
void setArrowHeadLengthRatio( double arrowHeadLengthRatio );
|
||||
|
||||
private:
|
||||
bool mEnabled = false;
|
||||
double mLineWidth = DEFAULT_LINE_WIDTH; //in milimeters
|
||||
QColor mColor = Qt::black;
|
||||
double mFilterMin = -1; //disabled
|
||||
|
Loading…
x
Reference in New Issue
Block a user