@@ -209,6 +209,26 @@ def setupUi(self):
209
209
self .verticalLayout .addWidget (self .datatypeCombo )
210
210
elif (self .paramType == parameters .PARAMETER_NUMBER or self .paramType == parameters .PARAMETER_DISTANCE or
211
211
isinstance (self .param , (QgsProcessingParameterNumber , QgsProcessingParameterDistance ))):
212
+
213
+ if (self .paramType == parameters .PARAMETER_DISTANCE or
214
+ isinstance (self .param , QgsProcessingParameterDistance )):
215
+ self .verticalLayout .addWidget (QLabel (self .tr ('Linked input' )))
216
+ self .parentCombo = QComboBox ()
217
+ self .parentCombo .addItem ('' , '' )
218
+ idx = 1
219
+ for param in list (self .alg .parameterComponents ().values ()):
220
+ definition = self .alg .parameterDefinition (param .parameterName ())
221
+ if isinstance (definition , (QgsProcessingParameterFeatureSource ,
222
+ QgsProcessingParameterVectorLayer ,
223
+ QgsProcessingParameterMapLayer ,
224
+ QgsProcessingParameterCrs )):
225
+ self .parentCombo .addItem (definition .description (), definition .name ())
226
+ if self .param is not None :
227
+ if self .param .parentParameterName () == definition .name ():
228
+ self .parentCombo .setCurrentIndex (idx )
229
+ idx += 1
230
+ self .verticalLayout .addWidget (self .parentCombo )
231
+
212
232
self .verticalLayout .addWidget (QLabel (self .tr ('Min value' )))
213
233
self .minTextBox = QLineEdit ()
214
234
self .verticalLayout .addWidget (self .minTextBox )
@@ -399,11 +419,34 @@ def accept(self):
399
419
self .param = QgsProcessingParameterMultipleLayers (
400
420
name , description ,
401
421
self .datatypeCombo .currentData ())
422
+ elif (self .paramType == parameters .PARAMETER_DISTANCE or
423
+ isinstance (self .param , QgsProcessingParameterDistance )):
424
+ self .param = QgsProcessingParameterDistance (name , description ,
425
+ self .defaultTextBox .text ())
426
+ try :
427
+ vmin = self .minTextBox .text ().strip ()
428
+ if not vmin == '' :
429
+ self .param .setMinimum (float (vmin ))
430
+ vmax = self .maxTextBox .text ().strip ()
431
+ if not vmax == '' :
432
+ self .param .setMaximum (float (vmax ))
433
+ except :
434
+ QMessageBox .warning (self , self .tr ('Unable to define parameter' ),
435
+ self .tr ('Wrong or missing parameter values' ))
436
+ return
437
+
438
+ if self .parentCombo .currentIndex () < 0 :
439
+ QMessageBox .warning (self , self .tr ('Unable to define parameter' ),
440
+ self .tr ('Wrong or missing parameter values' ))
441
+ return
442
+ parent = self .parentCombo .currentData ()
443
+ if parent :
444
+ self .param .setParentParameterName (parent )
402
445
elif (self .paramType == parameters .PARAMETER_NUMBER or
403
- isinstance (self .param , (QgsProcessingParameterNumber , QgsProcessingParameterDistance ))):
446
+ isinstance (self .param , QgsProcessingParameterNumber )):
447
+ self .param = QgsProcessingParameterNumber (name , description , QgsProcessingParameterNumber .Double ,
448
+ self .defaultTextBox .text ())
404
449
try :
405
- self .param = QgsProcessingParameterNumber (name , description , QgsProcessingParameterNumber .Double ,
406
- self .defaultTextBox .text ())
407
450
vmin = self .minTextBox .text ().strip ()
408
451
if not vmin == '' :
409
452
self .param .setMinimum (float (vmin ))
0 commit comments