@@ -346,6 +346,20 @@ class TestProcessingContextGenerator : public QgsProcessingContextGenerator
346
346
QgsProcessingContext &mContext ;
347
347
};
348
348
349
+
350
+ class TestLayerWrapper : public QgsAbstractProcessingParameterWidgetWrapper
351
+ {
352
+ public:
353
+ TestLayerWrapper ( const QgsProcessingParameterDefinition *parameter = nullptr )
354
+ : QgsAbstractProcessingParameterWidgetWrapper( parameter )
355
+ {}
356
+ QWidget *createWidget () override { return nullptr ; }
357
+ void setWidgetValue ( const QVariant &val, QgsProcessingContext & ) override { v = val;}
358
+ QVariant widgetValue () const override { return v; }
359
+
360
+ QVariant v;
361
+ };
362
+
349
363
void TestProcessingGui::testWrapperDynamic ()
350
364
{
351
365
const QgsProcessingAlgorithm *centroidAlg = QgsApplication::processingRegistry ()->algorithmById ( QStringLiteral ( " native:centroids" ) );
@@ -379,15 +393,20 @@ void TestProcessingGui::testWrapperDynamic()
379
393
QgsVectorLayer *vl = new QgsVectorLayer ( QStringLiteral ( " LineString" ), QStringLiteral ( " x" ), QStringLiteral ( " memory" ) );
380
394
p.addMapLayer ( vl );
381
395
396
+ TestLayerWrapper layerWrapper ( layerDef );
397
+
382
398
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
383
- allPartsWrapper.setDynamicParentLayerParameter ( QVariant::fromValue ( vl ) );
399
+ layerWrapper.setWidgetValue ( QVariant::fromValue ( vl ), context );
400
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
384
401
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer (), vl );
385
402
// should not be owned by wrapper
386
403
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
387
- allPartsWrapper.setDynamicParentLayerParameter ( QVariant () );
404
+ layerWrapper.setWidgetValue ( QVariant (), context );
405
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
388
406
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
389
407
390
- allPartsWrapper.setDynamicParentLayerParameter ( vl->id () );
408
+ layerWrapper.setWidgetValue ( vl->id (), context );
409
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
391
410
QVERIFY ( !allPartsWrapper.mPropertyButton ->vectorLayer () );
392
411
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
393
412
@@ -396,13 +415,15 @@ void TestProcessingGui::testWrapperDynamic()
396
415
TestProcessingContextGenerator generator ( context );
397
416
allPartsWrapper.registerProcessingContextGenerator ( &generator );
398
417
399
- allPartsWrapper.setDynamicParentLayerParameter ( vl->id () );
418
+ layerWrapper.setWidgetValue ( vl->id (), context );
419
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
400
420
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer (), vl );
401
421
QVERIFY ( !allPartsWrapper.mDynamicLayer .get () );
402
422
403
423
// non-project layer
404
424
QString pointFileName = TEST_DATA_DIR + QStringLiteral ( " /points.shp" );
405
- allPartsWrapper.setDynamicParentLayerParameter ( pointFileName );
425
+ layerWrapper.setWidgetValue ( pointFileName, context );
426
+ allPartsWrapper.setDynamicParentLayerParameter ( &layerWrapper );
406
427
QCOMPARE ( allPartsWrapper.mPropertyButton ->vectorLayer ()->publicSource (), pointFileName );
407
428
// must be owned by wrapper, or layer may be deleted while still required by wrapper
408
429
QCOMPARE ( allPartsWrapper.mDynamicLayer ->publicSource (), pointFileName );
0 commit comments