mirror of
https://github.com/qgis/QGIS.git
synced 2025-05-03 00:03:15 -04:00
Fixes use of range parameters inside models, allowing range inputs to be used for range parameter values. Fixes #19785
259 lines
9.0 KiB
C++
259 lines
9.0 KiB
C++
/***************************************************************************
|
|
qgsprocessingwidgetwrapperimpl.h
|
|
---------------------
|
|
begin : August 2018
|
|
copyright : (C) 2018 by Nyall Dawson
|
|
email : nyall dot dawson at gmail dot com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
|
|
#ifndef QGSPROCESSINGWIDGETWRAPPERIMPL_H
|
|
#define QGSPROCESSINGWIDGETWRAPPERIMPL_H
|
|
|
|
#define SIP_NO_FILE
|
|
#include "qgsprocessingwidgetwrapper.h"
|
|
|
|
class QCheckBox;
|
|
class QComboBox;
|
|
class QLineEdit;
|
|
class QPlainTextEdit;
|
|
class QgsProjectionSelectionWidget;
|
|
class QgsSpinBox;
|
|
class QgsDoubleSpinBox;
|
|
|
|
|
|
///@cond PRIVATE
|
|
|
|
class GUI_EXPORT QgsProcessingBooleanWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingBooleanWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
QLabel *createLabel() override SIP_FACTORY;
|
|
|
|
protected:
|
|
|
|
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
|
|
QVariant widgetValue() const override;
|
|
|
|
QStringList compatibleParameterTypes() const override;
|
|
|
|
QStringList compatibleOutputTypes() const override;
|
|
|
|
QList< int > compatibleDataTypes() const override;
|
|
|
|
private:
|
|
|
|
QCheckBox *mCheckBox = nullptr;
|
|
QComboBox *mComboBox = nullptr;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
class GUI_EXPORT QgsProcessingCrsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingCrsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
|
|
protected:
|
|
|
|
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
|
|
QVariant widgetValue() const override;
|
|
|
|
QStringList compatibleParameterTypes() const override;
|
|
QStringList compatibleOutputTypes() const override;
|
|
QList< int > compatibleDataTypes() const override;
|
|
QString modelerExpressionFormatString() const override;
|
|
|
|
private:
|
|
|
|
QgsProjectionSelectionWidget *mProjectionSelectionWidget = nullptr;
|
|
QCheckBox *mUseProjectCrsCheckBox = nullptr;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
class GUI_EXPORT QgsProcessingStringWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingStringWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
|
|
protected:
|
|
|
|
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
|
|
QVariant widgetValue() const override;
|
|
|
|
QStringList compatibleParameterTypes() const override;
|
|
|
|
QStringList compatibleOutputTypes() const override;
|
|
|
|
QList< int > compatibleDataTypes() const override;
|
|
|
|
private:
|
|
|
|
QLineEdit *mLineEdit = nullptr;
|
|
QPlainTextEdit *mPlainTextEdit = nullptr;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
class GUI_EXPORT QgsProcessingNumericWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingNumericWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
|
|
protected:
|
|
|
|
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
|
|
QVariant widgetValue() const override;
|
|
|
|
QStringList compatibleParameterTypes() const override;
|
|
|
|
QStringList compatibleOutputTypes() const override;
|
|
|
|
QList< int > compatibleDataTypes() const override;
|
|
|
|
protected:
|
|
|
|
QgsSpinBox *mSpinBox = nullptr;
|
|
QgsDoubleSpinBox *mDoubleSpinBox = nullptr;
|
|
|
|
private:
|
|
|
|
static double calculateStep( double minimum, double maximum );
|
|
|
|
bool mAllowingNull = false;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
|
|
class GUI_EXPORT QgsProcessingDistanceWidgetWrapper : public QgsProcessingNumericWidgetWrapper
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingDistanceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
|
|
|
|
public slots:
|
|
void setUnitParameterValue( const QVariant &value );
|
|
void setUnits( QgsUnitTypes::DistanceUnit unit );
|
|
|
|
protected:
|
|
|
|
QVariant widgetValue() const override;
|
|
|
|
private:
|
|
|
|
QgsUnitTypes::DistanceUnit mBaseUnit = QgsUnitTypes::DistanceUnknownUnit;
|
|
QLabel *mLabel = nullptr;
|
|
QWidget *mWarningLabel = nullptr;
|
|
QComboBox *mUnitsCombo = nullptr;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
|
|
class GUI_EXPORT QgsProcessingRangeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
QgsProcessingRangeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
|
|
QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
|
|
|
|
// QgsProcessingParameterWidgetFactoryInterface
|
|
QString parameterType() const override;
|
|
QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
|
|
|
|
// QgsProcessingParameterWidgetWrapper interface
|
|
QWidget *createWidget() override SIP_FACTORY;
|
|
|
|
protected:
|
|
|
|
void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
|
|
QVariant widgetValue() const override;
|
|
QStringList compatibleParameterTypes() const override;
|
|
QStringList compatibleOutputTypes() const override;
|
|
QList< int > compatibleDataTypes() const override;
|
|
QString modelerExpressionFormatString() const override;
|
|
|
|
protected:
|
|
|
|
QgsDoubleSpinBox *mMinSpinBox = nullptr;
|
|
QgsDoubleSpinBox *mMaxSpinBox = nullptr;
|
|
|
|
private:
|
|
|
|
int mBlockChangedSignal = 0;
|
|
|
|
friend class TestProcessingGui;
|
|
};
|
|
|
|
///@endcond PRIVATE
|
|
|
|
#endif // QGSPROCESSINGWIDGETWRAPPERIMPL_H
|