Fix issues around enabled/disabled state of scalar/vector rendering

This commit is contained in:
Martin Dobias 2018-08-09 14:51:06 +02:00
parent 6fcc1626f9
commit 9273090d16
10 changed files with 53 additions and 65 deletions

View File

@ -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
{

View File

@ -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 )

View File

@ -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

View File

@ -37,11 +37,7 @@ QgsMeshRendererScalarSettingsWidget::QgsMeshRendererScalarSettingsWidget( QWidge
void QgsMeshRendererScalarSettingsWidget::setLayer( QgsMeshLayer *layer )
{
if ( layer != mMeshLayer )
{
mMeshLayer = layer;
syncToLayer();
}
mMeshLayer = layer;
}
QgsMeshRendererScalarSettings QgsMeshRendererScalarSettingsWidget::settings() const

View File

@ -49,11 +49,7 @@ QgsMeshRendererVectorSettingsWidget::QgsMeshRendererVectorSettingsWidget( QWidge
void QgsMeshRendererVectorSettingsWidget::setLayer( QgsMeshLayer *layer )
{
if ( layer != mMeshLayer )
{
mMeshLayer = layer;
syncToLayer();
}
mMeshLayer = layer;
}
QgsMeshRendererVectorSettings QgsMeshRendererVectorSettingsWidget::settings() const

View File

@ -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();
}

View File

@ -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
};

View File

@ -264,6 +264,9 @@ void QgsMeshLayerRenderer::renderScalarDataset()
void QgsMeshLayerRenderer::renderVectorDataset()
{
if ( !mRendererVectorSettings.isEnabled() )
return;
if ( mVectorDatasetValuesX.isEmpty() )
return;

View File

@ -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;
}

View File

@ -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