Skip to content

Commit

Permalink
[processing] use native matrix parameter definition widget
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbruy authored and nyalldawson committed Mar 26, 2020
1 parent ebe79ac commit 72404a9
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 266 deletions.
138 changes: 0 additions & 138 deletions python/plugins/processing/gui/matrixmodelerwidget.py

This file was deleted.

Expand Up @@ -46,7 +46,6 @@
QgsProcessingParameterDefinition,
QgsProcessingParameterCrs,
QgsProcessingParameterMapLayer,
QgsProcessingParameterMatrix,
QgsProcessingParameterMultipleLayers,
QgsProcessingParameterNumber,
QgsProcessingParameterDistance,
Expand All @@ -64,7 +63,6 @@
QgsProcessingParameterRasterDestination,
QgsProcessingParameterVectorDestination)

from processing.gui.matrixmodelerwidget import MatrixModelerWidget
from processing.core import parameters
from processing.modeler.exceptions import UndefinedParameterException

Expand All @@ -81,7 +79,6 @@ def use_legacy_dialog(param=None, paramType=None):
parameters.PARAMETER_NUMBER,
parameters.PARAMETER_DISTANCE,
parameters.PARAMETER_SCALE,
parameters.PARAMETER_MATRIX,
parameters.PARAMETER_MAP_LAYER):
return True
elif isinstance(param, (QgsProcessingParameterField,
Expand All @@ -92,7 +89,6 @@ def use_legacy_dialog(param=None, paramType=None):
QgsProcessingParameterNumber,
QgsProcessingParameterDistance,
QgsProcessingParameterScale,
QgsProcessingParameterMatrix,
QgsProcessingParameterMapLayer,
QgsProcessingDestinationParameter)):
return True
Expand Down Expand Up @@ -295,13 +291,6 @@ def setupUi(self):
if default:
self.defaultTextBox.setText(str(default))
self.verticalLayout.addWidget(self.defaultTextBox)
elif self.paramType == parameters.PARAMETER_MATRIX or \
isinstance(self.param, QgsProcessingParameterMatrix):
self.widget = MatrixModelerWidget(self)
if self.param is not None:
self.widget.setValue(self.param.headers(), self.param.defaultValue())
self.widget.setFixedRows(self.param.hasFixedNumberRows())
self.verticalLayout.addWidget(self.widget)

elif isinstance(self.param, QgsProcessingDestinationParameter):
self.verticalLayout.addWidget(QLabel(self.tr('Default value')))
Expand Down Expand Up @@ -474,9 +463,6 @@ def accept(self):
QMessageBox.warning(self, self.tr('Unable to define parameter'),
self.tr('Wrong or missing parameter values'))
return
elif (self.paramType == parameters.PARAMETER_MATRIX
or isinstance(self.param, QgsProcessingParameterMatrix)):
self.param = QgsProcessingParameterMatrix(name, description, hasFixedNumberRows=self.widget.fixedRows(), headers=self.widget.headers(), defaultValue=self.widget.value())

# Destination parameter
elif (isinstance(self.param, QgsProcessingParameterFeatureSink)):
Expand Down
113 changes: 0 additions & 113 deletions python/plugins/processing/ui/matrixmodelerwidgetbase.ui

This file was deleted.

31 changes: 30 additions & 1 deletion src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp
Expand Up @@ -53,6 +53,7 @@
#include "qgsdatabasetablecombobox.h"
#include "qgsextentwidget.h"
#include "qgsprocessingenummodelerwidget.h"
#include "qgsprocessingmatrixmodelerwidget.h"
#include <QToolButton>
#include <QLabel>
#include <QHBoxLayout>
Expand Down Expand Up @@ -1308,6 +1309,31 @@ QgsAbstractProcessingParameterWidgetWrapper *QgsProcessingRangeWidgetWrapper::cr
// QgsProcessingMatrixWidgetWrapper
//

QgsProcessingMatrixParameterDefinitionWidget::QgsProcessingMatrixParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition, const QgsProcessingAlgorithm *algorithm, QWidget *parent )
: QgsProcessingAbstractParameterDefinitionWidget( context, widgetContext, definition, algorithm, parent )
{
QVBoxLayout *vlayout = new QVBoxLayout();
vlayout->setMargin( 0 );
vlayout->setContentsMargins( 0, 0, 0, 0 );

mMatrixWidget = new QgsProcessingMatrixModelerWidget();
if ( const QgsProcessingParameterMatrix *matrixParam = dynamic_cast<const QgsProcessingParameterMatrix *>( definition ) )
{
mMatrixWidget->setValue( matrixParam->headers(), matrixParam->defaultValue() );
mMatrixWidget->setFixedRows( matrixParam->hasFixedNumberRows() );
}
vlayout->addWidget( mMatrixWidget );
setLayout( vlayout );
}

QgsProcessingParameterDefinition *QgsProcessingMatrixParameterDefinitionWidget::createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const
{
auto param = qgis::make_unique< QgsProcessingParameterMatrix >( name, description, 1, mMatrixWidget->fixedRows(), mMatrixWidget->headers(), mMatrixWidget->value() );
param->setFlags( flags );
return param.release();
}


QgsProcessingMatrixWidgetWrapper::QgsProcessingMatrixWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type, QWidget *parent )
: QgsAbstractProcessingParameterWidgetWrapper( parameter, type, parent )
{
Expand Down Expand Up @@ -1382,7 +1408,10 @@ QgsAbstractProcessingParameterWidgetWrapper *QgsProcessingMatrixWidgetWrapper::c
return new QgsProcessingMatrixWidgetWrapper( parameter, type );
}


QgsProcessingAbstractParameterDefinitionWidget *QgsProcessingMatrixWidgetWrapper::createParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition, const QgsProcessingAlgorithm *algorithm )
{
return new QgsProcessingMatrixParameterDefinitionWidget( context, widgetContext, definition, algorithm );
}


//
Expand Down

0 comments on commit 72404a9

Please sign in to comment.