Skip to content

Commit

Permalink
Fix issues around enabled/disabled state of scalar/vector rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
wonder-sk committed Aug 14, 2018
1 parent 6fcc162 commit 9273090
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 65 deletions.
12 changes: 12 additions & 0 deletions python/core/auto_generated/mesh/qgsmeshrenderersettings.sip.in
Expand Up @@ -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
Expand All @@ -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
{

Expand Down
10 changes: 3 additions & 7 deletions src/app/mesh/qgsmeshrendereractivedatasetwidget.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -161,6 +155,8 @@ QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::datasetIndex() const

void QgsMeshRendererActiveDatasetWidget::syncToLayer()
{
setEnabled( mMeshLayer );

whileBlocking( mDatasetGroupTreeView )->syncToLayer();

if ( mMeshLayer )
Expand Down
7 changes: 1 addition & 6 deletions src/app/mesh/qgsmeshrenderermeshsettingswidget.cpp
Expand Up @@ -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
Expand Down
6 changes: 1 addition & 5 deletions src/app/mesh/qgsmeshrendererscalarsettingswidget.cpp
Expand Up @@ -37,11 +37,7 @@ QgsMeshRendererScalarSettingsWidget::QgsMeshRendererScalarSettingsWidget( QWidge

void QgsMeshRendererScalarSettingsWidget::setLayer( QgsMeshLayer *layer )
{
if ( layer != mMeshLayer )
{
mMeshLayer = layer;
syncToLayer();
}
mMeshLayer = layer;
}

QgsMeshRendererScalarSettings QgsMeshRendererScalarSettingsWidget::settings() const
Expand Down
6 changes: 1 addition & 5 deletions src/app/mesh/qgsmeshrenderervectorsettingswidget.cpp
Expand Up @@ -49,11 +49,7 @@ QgsMeshRendererVectorSettingsWidget::QgsMeshRendererVectorSettingsWidget( QWidge

void QgsMeshRendererVectorSettingsWidget::setLayer( QgsMeshLayer *layer )
{
if ( layer != mMeshLayer )
{
mMeshLayer = layer;
syncToLayer();
}
mMeshLayer = layer;
}

QgsMeshRendererVectorSettings QgsMeshRendererVectorSettingsWidget::settings() const
Expand Down
51 changes: 16 additions & 35 deletions src/app/mesh/qgsrenderermeshpropertieswidget.cpp
Expand Up @@ -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 );
Expand All @@ -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()
Expand All @@ -86,56 +83,40 @@ 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();
}

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();
}
6 changes: 0 additions & 6 deletions src/app/mesh/qgsrenderermeshpropertieswidget.h
Expand Up @@ -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
};

Expand Down
3 changes: 3 additions & 0 deletions src/core/mesh/qgsmeshlayerrenderer.cpp
Expand Up @@ -264,6 +264,9 @@ void QgsMeshLayerRenderer::renderScalarDataset()

void QgsMeshLayerRenderer::renderVectorDataset()
{
if ( !mRendererVectorSettings.isEnabled() )
return;

if ( mVectorDatasetValuesX.isEmpty() )
return;

Expand Down
7 changes: 6 additions & 1 deletion src/core/mesh/qgsmeshrenderersettings.cpp
Expand Up @@ -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;
}


Expand Down
10 changes: 10 additions & 0 deletions src/core/mesh/qgsmeshrenderersettings.h
Expand Up @@ -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;
};

Expand All @@ -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
{
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 9273090

Please sign in to comment.