68
68
#include " qgsprocessingpointcloudexpressionlineedit.h"
69
69
#include " qgsprocessingrastercalculatorexpressionlineedit.h"
70
70
#include " qgsunittypes.h"
71
+ #include " qgsgeometrywidget.h"
72
+
71
73
#include < QToolButton>
72
74
#include < QLabel>
73
75
#include < QHBoxLayout>
@@ -4427,23 +4429,24 @@ QgsProcessingGeometryParameterDefinitionWidget::QgsProcessingGeometryParameterDe
4427
4429
4428
4430
vlayout->addWidget ( new QLabel ( tr ( " Default value" ) ) );
4429
4431
4430
- mDefaultLineEdit = new QLineEdit ();
4431
- mDefaultLineEdit ->setToolTip ( tr ( " Geometry as WKT" ) );
4432
- mDefaultLineEdit ->setPlaceholderText ( tr ( " Geometry as WKT" ) );
4432
+ mGeometryWidget = new QgsGeometryWidget ();
4433
4433
if ( const QgsProcessingParameterGeometry *geometryParam = dynamic_cast <const QgsProcessingParameterGeometry *>( definition ) )
4434
4434
{
4435
4435
QgsGeometry g = QgsProcessingParameters::parameterAsGeometry ( geometryParam, geometryParam->defaultValueForGui (), context );
4436
4436
if ( !g.isNull () )
4437
- mDefaultLineEdit ->setText ( g.asWkt () );
4437
+ {
4438
+ mGeometryWidget ->setGeometryValue ( QgsReferencedGeometry ( g, QgsCoordinateReferenceSystem () ) );
4439
+ }
4438
4440
}
4439
4441
4440
- vlayout->addWidget ( mDefaultLineEdit );
4442
+ vlayout->addWidget ( mGeometryWidget );
4441
4443
setLayout ( vlayout );
4442
4444
}
4443
4445
4444
4446
QgsProcessingParameterDefinition *QgsProcessingGeometryParameterDefinitionWidget::createParameter ( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const
4445
4447
{
4446
- auto param = std::make_unique< QgsProcessingParameterGeometry >( name, description, mDefaultLineEdit ->text () );
4448
+ const QgsReferencedGeometry geometry = mGeometryWidget ->geometryValue ();
4449
+ auto param = std::make_unique< QgsProcessingParameterGeometry >( name, description, geometry.isEmpty () ? QVariant () : geometry.asWkt () );
4447
4450
param->setFlags ( flags );
4448
4451
return param.release ();
4449
4452
}
@@ -4462,36 +4465,45 @@ QWidget *QgsProcessingGeometryWidgetWrapper::createWidget()
4462
4465
case QgsProcessingGui::Modeler:
4463
4466
case QgsProcessingGui::Batch:
4464
4467
{
4465
- mLineEdit = new QLineEdit ();
4466
- mLineEdit ->setToolTip ( parameterDefinition ()->toolTip () );
4467
- connect ( mLineEdit , &QLineEdit::textChanged , this , [ = ]
4468
+ mGeometryWidget = new QgsGeometryWidget ();
4469
+ mGeometryWidget ->setToolTip ( parameterDefinition ()->toolTip () );
4470
+ connect ( mGeometryWidget , &QgsGeometryWidget::geometryValueChanged , this , [ = ]( const QgsReferencedGeometry & )
4468
4471
{
4469
4472
emit widgetValueHasChanged ( this );
4470
4473
} );
4471
- return mLineEdit ;
4474
+ return mGeometryWidget ;
4472
4475
}
4473
4476
}
4474
4477
return nullptr ;
4475
4478
}
4476
4479
4477
4480
void QgsProcessingGeometryWidgetWrapper::setWidgetValue ( const QVariant &value, QgsProcessingContext &context )
4478
4481
{
4479
- if ( mLineEdit )
4482
+ if ( mGeometryWidget )
4480
4483
{
4481
4484
QgsGeometry g = QgsProcessingParameters::parameterAsGeometry ( parameterDefinition (), value, context );
4482
4485
if ( !g.isNull () )
4483
- mLineEdit ->setText ( g.asWkt () );
4486
+ {
4487
+ mGeometryWidget ->setGeometryValue ( QgsReferencedGeometry ( g, QgsCoordinateReferenceSystem () ) );
4488
+ }
4484
4489
else
4485
- mLineEdit ->clear ();
4490
+ {
4491
+ mGeometryWidget ->clearGeometry ();
4492
+ }
4486
4493
}
4487
4494
}
4488
4495
4489
4496
QVariant QgsProcessingGeometryWidgetWrapper::widgetValue () const
4490
4497
{
4491
- if ( mLineEdit )
4492
- return mLineEdit ->text ().isEmpty () ? QVariant () : mLineEdit ->text ();
4498
+ if ( mGeometryWidget )
4499
+ {
4500
+ const QgsReferencedGeometry geometry = mGeometryWidget ->geometryValue ();
4501
+ return geometry.isEmpty () ? QVariant () : geometry.asWkt ();
4502
+ }
4493
4503
else
4504
+ {
4494
4505
return QVariant ();
4506
+ }
4495
4507
}
4496
4508
4497
4509
QStringList QgsProcessingGeometryWidgetWrapper::compatibleParameterTypes () const
0 commit comments