Skip to content

Commit

Permalink
[processing] use native enum 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 48af1c0 commit 87eefa3
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 261 deletions.
150 changes: 0 additions & 150 deletions python/plugins/processing/gui/enummodelerwidget.py

This file was deleted.

Expand Up @@ -53,7 +53,6 @@
QgsProcessingParameterScale,
QgsProcessingParameterRange,
QgsProcessingParameterRasterLayer,
QgsProcessingParameterEnum,
QgsProcessingParameterVectorLayer,
QgsProcessingParameterField,
QgsProcessingParameterFeatureSource,
Expand All @@ -65,7 +64,6 @@
QgsProcessingParameterRasterDestination,
QgsProcessingParameterVectorDestination)

from processing.gui.enummodelerwidget import EnumModelerWidget
from processing.gui.matrixmodelerwidget import MatrixModelerWidget
from processing.core import parameters
from processing.modeler.exceptions import UndefinedParameterException
Expand All @@ -83,7 +81,6 @@ def use_legacy_dialog(param=None, paramType=None):
parameters.PARAMETER_NUMBER,
parameters.PARAMETER_DISTANCE,
parameters.PARAMETER_SCALE,
parameters.PARAMETER_ENUM,
parameters.PARAMETER_MATRIX,
parameters.PARAMETER_MAP_LAYER):
return True
Expand All @@ -95,7 +92,6 @@ def use_legacy_dialog(param=None, paramType=None):
QgsProcessingParameterNumber,
QgsProcessingParameterDistance,
QgsProcessingParameterScale,
QgsProcessingParameterEnum,
QgsProcessingParameterMatrix,
QgsProcessingParameterMapLayer,
QgsProcessingDestinationParameter)):
Expand Down Expand Up @@ -299,14 +295,6 @@ def setupUi(self):
if default:
self.defaultTextBox.setText(str(default))
self.verticalLayout.addWidget(self.defaultTextBox)
elif self.paramType == parameters.PARAMETER_ENUM or \
isinstance(self.param, QgsProcessingParameterEnum):
self.widget = EnumModelerWidget(self)
if self.param is not None:
self.widget.setAllowMultiple(bool(self.param.allowMultiple()))
self.widget.setOptions(self.param.options())
self.widget.setDefault(self.param.defaultValue())
self.verticalLayout.addWidget(self.widget)
elif self.paramType == parameters.PARAMETER_MATRIX or \
isinstance(self.param, QgsProcessingParameterMatrix):
self.widget = MatrixModelerWidget(self)
Expand Down Expand Up @@ -486,9 +474,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_ENUM
or isinstance(self.param, QgsProcessingParameterEnum)):
self.param = QgsProcessingParameterEnum(name, description, self.widget.options(), self.widget.allowMultiple(), self.widget.defaultOptions())
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())
Expand Down
96 changes: 0 additions & 96 deletions python/plugins/processing/ui/enummodelerwidgetbase.ui

This file was deleted.

32 changes: 32 additions & 0 deletions src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp
Expand Up @@ -52,6 +52,7 @@
#include "qgsdatabaseschemacombobox.h"
#include "qgsdatabasetablecombobox.h"
#include "qgsextentwidget.h"
#include "qgsprocessingenummodelerwidget.h"
#include <QToolButton>
#include <QLabel>
#include <QHBoxLayout>
Expand Down Expand Up @@ -2015,6 +2016,32 @@ void QgsProcessingEnumCheckboxPanelWidget::deselectAll()
// QgsProcessingEnumWidgetWrapper
//

QgsProcessingEnumParameterDefinitionWidget::QgsProcessingEnumParameterDefinitionWidget( 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 );

mEnumWidget = new QgsProcessingEnumModelerWidget();
if ( const QgsProcessingParameterEnum *enumParam = dynamic_cast<const QgsProcessingParameterEnum *>( definition ) )
{
mEnumWidget->setAllowMultiple( enumParam->allowMultiple() );
mEnumWidget->setOptions( enumParam->options() );
mEnumWidget->setDefaultOptions( enumParam->defaultValue() );
}
vlayout->addWidget( mEnumWidget );
setLayout( vlayout );
}

QgsProcessingParameterDefinition *QgsProcessingEnumParameterDefinitionWidget::createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const
{
auto param = qgis::make_unique< QgsProcessingParameterEnum >( name, description, mEnumWidget->options(), mEnumWidget->allowMultiple(), mEnumWidget->defaultOptions() );
param->setFlags( flags );
return param.release();
}


QgsProcessingEnumWidgetWrapper::QgsProcessingEnumWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type, QWidget *parent )
: QgsAbstractProcessingParameterWidgetWrapper( parameter, type, parent )
{
Expand Down Expand Up @@ -2153,6 +2180,11 @@ QgsAbstractProcessingParameterWidgetWrapper *QgsProcessingEnumWidgetWrapper::cre
return new QgsProcessingEnumWidgetWrapper( parameter, type );
}

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

//
// QgsProcessingLayoutWidgetWrapper
//
Expand Down

0 comments on commit 87eefa3

Please sign in to comment.