@@ -408,6 +408,20 @@ class TestProcessingContextGenerator : public QgsProcessingContextGenerator
408
408
QgsProcessingContext &mContext ;
409
409
};
410
410
411
+
412
+ class TestLayerWrapper : public QgsAbstractProcessingParameterWidgetWrapper
413
+ {
414
+ public:
415
+ TestLayerWrapper ( const QgsProcessingParameterDefinition *parameter = nullptr )
416
+ : QgsAbstractProcessingParameterWidgetWrapper( parameter )
417
+ {}
418
+ QWidget *createWidget () override { return nullptr ; }
419
+ void setWidgetValue ( const QVariant &val, QgsProcessingContext & ) override { v = val;}
420
+ QVariant widgetValue () const override { return v; }
421
+
422
+ QVariant v;
423
+ };
424
+
411
425
void TestProcessingGui::testWrapperDynamic ()
412
426
{
413
427
const QgsProcessingAlgorithm *centroidAlg = QgsApplication::processingRegistry ()->algorithmById ( QStringLiteral ( " native:centroids" ) );
@@ -441,15 +455,20 @@ void TestProcessingGui::testWrapperDynamic()
441
455
QgsVectorLayer *vl = new QgsVectorLayer ( QStringLiteral ( " LineString" ), QStringLiteral ( " x" ), QStringLiteral ( " memory" ) );
442
456
p.addMapLayer ( vl );
443
457
458
+ TestLayerWrapper layerWrapper ( layerDef );
459
+
444
460
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
445
- allPartsWrapper.setDynamicParentLayerParameter ( QVariant::fromValue ( vl ) );
461
+ layerWrapper.setWidgetValue ( QVariant::fromValue ( vl ), context );
462
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
446
463
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer (), vl );
447
464
// should not be owned by wrapper
448
465
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
449
- allPartsWrapper.setDynamicParentLayerParameter ( QVariant () );
466
+ layerWrapper.setWidgetValue ( QVariant (), context );
467
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
450
468
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
451
469
452
- allPartsWrapper.setDynamicParentLayerParameter ( vl->id () );
470
+ layerWrapper.setWidgetValue ( vl->id (), context );
471
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
453
472
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
454
473
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
455
474
@@ -458,13 +477,15 @@ void TestProcessingGui::testWrapperDynamic()
458
477
TestProcessingContextGenerator generator ( context );
459
478
allPartsWrapper.registerProcessingContextGenerator ( &generator );
460
479
461
- allPartsWrapper.setDynamicParentLayerParameter ( vl->id () );
480
+ layerWrapper.setWidgetValue ( vl->id (), context );
481
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
462
482
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer (), vl );
463
483
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
464
484
465
485
// non-project layer
466
486
QString pointFileName = TEST_DATA_DIR + QStringLiteral ( " /points.shp" );
467
- allPartsWrapper.setDynamicParentLayerParameter ( pointFileName );
487
+ layerWrapper.setWidgetValue ( pointFileName, context );
488
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
468
489
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer ()->publicSource (), pointFileName );
469
490
// must be owned by wrapper, or layer may be deleted while still required by wrapper
470
491
QCOMPARE ( allPartsWrapper.mDynamicLayer ->publicSource (), pointFileName );
0 commit comments