Skip to content

Commit

Permalink
add classification method parameters to GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Dec 4, 2019
1 parent b078370 commit 011b63f
Show file tree
Hide file tree
Showing 3 changed files with 276 additions and 199 deletions.
50 changes: 50 additions & 0 deletions src/gui/symbology/qgsgraduatedsymbolrendererwidget.cpp
Expand Up @@ -46,6 +46,14 @@
#include "qgsclassificationmethodregistry.h"
#include "qgsclassificationequalinterval.h"
#include "qgsclassificationstandarddeviation.h"
#include "qgsgui.h"
#include "qgsprocessinggui.h"
#include "qgsprocessingguiregistry.h"
#include "qgsprocessingcontext.h"
#include "qgsprocessingwidgetwrapper.h"




// ------------------------------ Model ------------------------------------

Expand Down Expand Up @@ -556,6 +564,8 @@ QgsGraduatedSymbolRendererWidget::QgsGraduatedSymbolRendererWidget( QgsVectorLay
connect( cbxLinkBoundaries, &QAbstractButton::toggled, this, &QgsGraduatedSymbolRendererWidget::toggleBoundariesLink );
connect( mSizeUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsGraduatedSymbolRendererWidget::mSizeUnitWidget_changed );

connect( cboGraduatedMode, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsGraduatedSymbolRendererWidget::updateMethodParameters );

connectUpdateHandlers();

// initialize from previously set renderer
Expand Down Expand Up @@ -598,6 +608,7 @@ void QgsGraduatedSymbolRendererWidget::mSizeUnitWidget_changed()
QgsGraduatedSymbolRendererWidget::~QgsGraduatedSymbolRendererWidget()
{
delete mModel;
qDeleteAll( mParameterWidgetWrappers );
}

QgsFeatureRenderer *QgsGraduatedSymbolRendererWidget::renderer()
Expand Down Expand Up @@ -631,6 +642,11 @@ void QgsGraduatedSymbolRendererWidget::connectUpdateHandlers()
connect( cbxAstride, &QAbstractButton::toggled, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
connect( cboSymmetryPoint, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
connect( cboSymmetryPoint->lineEdit(), &QLineEdit::editingFinished, this, &QgsGraduatedSymbolRendererWidget::symmetryPointEditingFinished );

for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
{
connect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
}
}

// Connect/disconnect event handlers which trigger updating renderer
Expand All @@ -652,6 +668,11 @@ void QgsGraduatedSymbolRendererWidget::disconnectUpdateHandlers()
disconnect( cbxAstride, &QAbstractButton::toggled, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
disconnect( cboSymmetryPoint, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
disconnect( cboSymmetryPoint->lineEdit(), &QLineEdit::editingFinished, this, &QgsGraduatedSymbolRendererWidget::symmetryPointEditingFinished );

for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
{
disconnect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
}
}

void QgsGraduatedSymbolRendererWidget::updateUiFromRenderer( bool updateCount )
Expand Down Expand Up @@ -798,6 +819,30 @@ void QgsGraduatedSymbolRendererWidget::methodComboBox_currentIndexChanged( int )
}
}

void QgsGraduatedSymbolRendererWidget::updateMethodParameters()
{
while ( mParametersLayout->rowCount() )
mParametersLayout->removeRow( 0 );
qDeleteAll( mParameterWidgetWrappers );

const QString methodId = cboGraduatedMode->currentData().toString();
QgsClassificationMethod *method = QgsApplication::classificationMethodRegistry()->method( methodId );
Q_ASSERT( method );

// todo need more?
QgsProcessingContext context;

for ( const auto *def : method->parameterDefinitions() )
{
QgsAbstractProcessingParameterWidgetWrapper *ppww = QgsGui::processingGuiRegistry()->createParameterWidgetWrapper( def, QgsProcessingGui::Standard );
mParametersLayout->addRow( ppww->createWrappedLabel(), ppww->createWrappedWidget( context ) );

connect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );

mParameterWidgetWrappers.append( ppww );
}
}

void QgsGraduatedSymbolRendererWidget::toggleMethodWidgets( MethodMode mode )
{
switch ( mode )
Expand Down Expand Up @@ -946,6 +991,11 @@ void QgsGraduatedSymbolRendererWidget::classifyGraduated()
method->setSymmetricMode( true, symmetryPoint, astride );
}

QVariantMap parameterValues;
for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
parameterValues.insert( ppww->parameterDefinition()->name(), ppww->parameterValue() );
method->setParameterValues( parameterValues );

// set method to renderer
mRenderer->setClassificationMethod( method );

Expand Down
10 changes: 9 additions & 1 deletion src/gui/symbology/qgsgraduatedsymbolrendererwidget.h
Expand Up @@ -16,15 +16,20 @@
#ifndef QGSGRADUATEDSYMBOLRENDERERWIDGET_H
#define QGSGRADUATEDSYMBOLRENDERERWIDGET_H

#include <QStandardItem>


#include "qgsgraduatedsymbolrenderer.h"
#include "qgis_sip.h"
#include "qgsrendererwidget.h"
#include "qgsproxystyle.h"
#include <QStandardItem>

#include "ui_qgsgraduatedsymbolrendererwidget.h"

#include "qgis_gui.h"

class QgsAbstractProcessingParameterWidgetWrapper;

#ifndef SIP_RUN
/// @cond PRIVATE

Expand Down Expand Up @@ -125,6 +130,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererWidget : public QgsRendererWidget, pr
private slots:
void mSizeUnitWidget_changed();
void methodComboBox_currentIndexChanged( int );
void updateMethodParameters();
void cleanUpSymbolSelector( QgsPanelWidget *container );
void updateSymbolsFromWidget();
void dataDefinedSizeLegend();
Expand Down Expand Up @@ -180,6 +186,8 @@ class GUI_EXPORT QgsGraduatedSymbolRendererWidget : public QgsRendererWidget, pr
QgsRangeList mCopyBuffer;

QDoubleValidator *mSymmetryPointValidator;

QList< QgsAbstractProcessingParameterWidgetWrapper * > mParameterWidgetWrappers;
};


Expand Down

0 comments on commit 011b63f

Please sign in to comment.