QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsprocessingwidgetwrapperimpl.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsprocessingwidgetwrapperimpl.h
3 ---------------------
4 begin : August 2018
5 copyright : (C) 2018 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18
19#ifndef QGSPROCESSINGWIDGETWRAPPERIMPL_H
20#define QGSPROCESSINGWIDGETWRAPPERIMPL_H
21
22#define SIP_NO_FILE
24#include "qgsmaptool.h"
26#include "qgspointcloudlayer.h"
31#include "qobjectuniqueptr.h"
32
33#include <QAbstractButton>
34
35class QCheckBox;
36class QComboBox;
37class QLineEdit;
38class QPlainTextEdit;
39class QToolButton;
40class QButtonGroup;
42class QgsSpinBox;
45class QgsProcessingMatrixParameterPanel;
46class QgsFileWidget;
53class QgsPrintLayout;
54class QgsScaleWidget;
57class QgsColorButton;
60class QgsDateTimeEdit;
61class QgsDateEdit;
62class QgsTimeEdit;
66class QgsExtentWidget;
67class QgsProcessingEnumModelerWidget;
68class QgsProcessingMatrixModelerWidget;
69class QgsProcessingMapLayerComboBox;
72class QgsProcessingLayerOutputDestinationWidget;
75class QgsProcessingPointCloudExpressionLineEdit;
76class QgsProcessingRasterCalculatorExpressionLineEdit;
77class QgsRubberBand;
80
82
83class GUI_EXPORT QgsProcessingBooleanParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
84{
85 Q_OBJECT
86 public:
87 QgsProcessingBooleanParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
88 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
89
90 private:
91 QCheckBox *mDefaultCheckBox = nullptr;
92};
93
94class GUI_EXPORT QgsProcessingBooleanWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
95{
96 Q_OBJECT
97
98 public:
99 QgsProcessingBooleanWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
100
101 // QgsProcessingParameterWidgetFactoryInterface
102 QString parameterType() const override;
103 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
104 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
105 QgsProcessingContext &context,
106 const QgsProcessingParameterWidgetContext &widgetContext,
107 const QgsProcessingParameterDefinition *definition = nullptr,
108 const QgsProcessingAlgorithm *algorithm = nullptr
109 ) override;
110
111 // QgsProcessingParameterWidgetWrapper interface
112 QWidget *createWidget() override SIP_FACTORY;
113 QLabel *createLabel() override SIP_FACTORY;
114
115 protected:
116 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
117 QVariant widgetValue() const override;
118
119 private:
120 QCheckBox *mCheckBox = nullptr;
121 QComboBox *mComboBox = nullptr;
122
123 friend class TestProcessingGui;
124};
125
126
127class GUI_EXPORT QgsProcessingCrsParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
128{
129 Q_OBJECT
130 public:
131 QgsProcessingCrsParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
132 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
133
134 private:
135 QgsProjectionSelectionWidget *mCrsSelector = nullptr;
136};
137
138class GUI_EXPORT QgsProcessingCrsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
139{
140 Q_OBJECT
141
142 public:
143 QgsProcessingCrsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
144
145 // QgsProcessingParameterWidgetFactoryInterface
146 QString parameterType() const override;
147 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
148 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
149 QgsProcessingContext &context,
150 const QgsProcessingParameterWidgetContext &widgetContext,
151 const QgsProcessingParameterDefinition *definition = nullptr,
152 const QgsProcessingAlgorithm *algorithm = nullptr
153 ) override;
154
155 // QgsProcessingParameterWidgetWrapper interface
156 QWidget *createWidget() override SIP_FACTORY;
157
158 protected:
159 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
160 QVariant widgetValue() const override;
161
162 QString modelerExpressionFormatString() const override;
163
164 private:
165 QgsProjectionSelectionWidget *mProjectionSelectionWidget = nullptr;
166 QCheckBox *mUseProjectCrsCheckBox = nullptr;
167
168 friend class TestProcessingGui;
169};
170
171
172class GUI_EXPORT QgsProcessingStringParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
173{
174 Q_OBJECT
175 public:
176 QgsProcessingStringParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
177 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
178
179 private:
180 QLineEdit *mDefaultLineEdit = nullptr;
181 QCheckBox *mMultiLineCheckBox = nullptr;
182};
183
184class GUI_EXPORT QgsProcessingStringWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
185{
186 Q_OBJECT
187
188 public:
189 QgsProcessingStringWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
190
191 // QgsProcessingParameterWidgetFactoryInterface
192 QString parameterType() const override;
193 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
194 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
195 QgsProcessingContext &context,
196 const QgsProcessingParameterWidgetContext &widgetContext,
197 const QgsProcessingParameterDefinition *definition = nullptr,
198 const QgsProcessingAlgorithm *algorithm = nullptr
199 ) override;
200
201 // QgsProcessingParameterWidgetWrapper interface
202 QWidget *createWidget() override SIP_FACTORY;
203
204 protected:
205 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
206 QVariant widgetValue() const override;
207
208 private:
209 QLineEdit *mLineEdit = nullptr;
210 QComboBox *mComboBox = nullptr;
211 QPlainTextEdit *mPlainTextEdit = nullptr;
212
213 friend class TestProcessingGui;
214};
215
216
217class GUI_EXPORT QgsProcessingAuthConfigWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
218{
219 Q_OBJECT
220
221 public:
222 QgsProcessingAuthConfigWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
223
224 // QgsProcessingParameterWidgetFactoryInterface
225 QString parameterType() const override;
226 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
227
228 // QgsProcessingParameterWidgetWrapper interface
229 QWidget *createWidget() override SIP_FACTORY;
230
231 protected:
232 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
233 QVariant widgetValue() const override;
234
235 private:
236 QgsAuthConfigSelect *mAuthConfigSelect = nullptr;
237
238 friend class TestProcessingGui;
239};
240
241
242class GUI_EXPORT QgsProcessingNumberParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
243{
244 Q_OBJECT
245 public:
246 QgsProcessingNumberParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
247 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
248
249 private:
250 QComboBox *mTypeComboBox = nullptr;
251 QLineEdit *mMinLineEdit = nullptr;
252 QLineEdit *mMaxLineEdit = nullptr;
253 QLineEdit *mDefaultLineEdit = nullptr;
254};
255
256
257class GUI_EXPORT QgsProcessingNumericWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
258{
259 Q_OBJECT
260
261 public:
262 QgsProcessingNumericWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
263
264 // QgsProcessingParameterWidgetFactoryInterface
265 QString parameterType() const override;
266 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
267 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
268 QgsProcessingContext &context,
269 const QgsProcessingParameterWidgetContext &widgetContext,
270 const QgsProcessingParameterDefinition *definition = nullptr,
271 const QgsProcessingAlgorithm *algorithm = nullptr
272 ) override;
273
274 // QgsProcessingParameterWidgetWrapper interface
275 QWidget *createWidget() override SIP_FACTORY;
276
277 protected:
278 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
279 QVariant widgetValue() const override;
280
281 protected:
282 QgsSpinBox *mSpinBox = nullptr;
283 QgsDoubleSpinBox *mDoubleSpinBox = nullptr;
284
285 private:
286 static double calculateStep( double minimum, double maximum );
287
288 bool mAllowingNull = false;
289
290 friend class TestProcessingGui;
291};
292
293
294class GUI_EXPORT QgsProcessingDistanceParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
295{
296 Q_OBJECT
297 public:
298 QgsProcessingDistanceParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
299 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
300
301 private:
302 QComboBox *mParentLayerComboBox = nullptr;
303 QLineEdit *mMinLineEdit = nullptr;
304 QLineEdit *mMaxLineEdit = nullptr;
305 QLineEdit *mDefaultLineEdit = nullptr;
306};
307
308class GUI_EXPORT QgsProcessingDistanceWidgetWrapper : public QgsProcessingNumericWidgetWrapper
309{
310 Q_OBJECT
311
312 public:
313 QgsProcessingDistanceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
314
315 // QgsProcessingParameterWidgetFactoryInterface
316 QString parameterType() const override;
317 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
318 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
319 QgsProcessingContext &context,
320 const QgsProcessingParameterWidgetContext &widgetContext,
321 const QgsProcessingParameterDefinition *definition = nullptr,
322 const QgsProcessingAlgorithm *algorithm = nullptr
323 ) override;
324
325 // QgsProcessingParameterWidgetWrapper interface
326 QWidget *createWidget() override SIP_FACTORY;
327 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
328
329 public slots:
330 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
331 void setUnits( Qgis::DistanceUnit unit );
332
333 protected:
334 QVariant widgetValue() const override;
335
336 private:
337 Qgis::DistanceUnit mBaseUnit = Qgis::DistanceUnit::Unknown;
338 QLabel *mLabel = nullptr;
339 QWidget *mWarningLabel = nullptr;
340 QComboBox *mUnitsCombo = nullptr;
341
342 friend class TestProcessingGui;
343};
344
345class GUI_EXPORT QgsProcessingAreaParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
346{
347 Q_OBJECT
348 public:
349 QgsProcessingAreaParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
350 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
351
352 private:
353 QComboBox *mParentLayerComboBox = nullptr;
354 QLineEdit *mMinLineEdit = nullptr;
355 QLineEdit *mMaxLineEdit = nullptr;
356 QLineEdit *mDefaultLineEdit = nullptr;
357};
358
359class GUI_EXPORT QgsProcessingAreaWidgetWrapper : public QgsProcessingNumericWidgetWrapper
360{
361 Q_OBJECT
362
363 public:
364 QgsProcessingAreaWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
365
366 // QgsProcessingParameterWidgetFactoryInterface
367 QString parameterType() const override;
368 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
369 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
370 QgsProcessingContext &context,
371 const QgsProcessingParameterWidgetContext &widgetContext,
372 const QgsProcessingParameterDefinition *definition = nullptr,
373 const QgsProcessingAlgorithm *algorithm = nullptr
374 ) override;
375
376 // QgsProcessingParameterWidgetWrapper interface
377 QWidget *createWidget() override SIP_FACTORY;
378 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
379
380 public slots:
381 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
382 void setUnits( Qgis::AreaUnit unit );
383
384 protected:
385 QVariant widgetValue() const override;
386
387 private:
388 Qgis::AreaUnit mBaseUnit = Qgis::AreaUnit::Unknown;
389 QLabel *mLabel = nullptr;
390 QWidget *mWarningLabel = nullptr;
391 QComboBox *mUnitsCombo = nullptr;
392
393 friend class TestProcessingGui;
394};
395
396
397class GUI_EXPORT QgsProcessingVolumeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
398{
399 Q_OBJECT
400 public:
401 QgsProcessingVolumeParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
402 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
403
404 private:
405 QComboBox *mParentLayerComboBox = nullptr;
406 QLineEdit *mMinLineEdit = nullptr;
407 QLineEdit *mMaxLineEdit = nullptr;
408 QLineEdit *mDefaultLineEdit = nullptr;
409};
410
411class GUI_EXPORT QgsProcessingVolumeWidgetWrapper : public QgsProcessingNumericWidgetWrapper
412{
413 Q_OBJECT
414
415 public:
416 QgsProcessingVolumeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
417
418 // QgsProcessingParameterWidgetFactoryInterface
419 QString parameterType() const override;
420 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
421 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
422 QgsProcessingContext &context,
423 const QgsProcessingParameterWidgetContext &widgetContext,
424 const QgsProcessingParameterDefinition *definition = nullptr,
425 const QgsProcessingAlgorithm *algorithm = nullptr
426 ) override;
427
428 // QgsProcessingParameterWidgetWrapper interface
429 QWidget *createWidget() override SIP_FACTORY;
430 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
431
432 public slots:
433 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
434 void setUnits( Qgis::VolumeUnit unit );
435
436 protected:
437 QVariant widgetValue() const override;
438
439 private:
440 Qgis::VolumeUnit mBaseUnit = Qgis::VolumeUnit::Unknown;
441 QLabel *mLabel = nullptr;
442 QWidget *mWarningLabel = nullptr;
443 QComboBox *mUnitsCombo = nullptr;
444
445 friend class TestProcessingGui;
446};
447
448
449class GUI_EXPORT QgsProcessingDurationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
450{
451 Q_OBJECT
452 public:
453 QgsProcessingDurationParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
454 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
455
456 private:
457 QLineEdit *mMinLineEdit = nullptr;
458 QLineEdit *mMaxLineEdit = nullptr;
459 QLineEdit *mDefaultLineEdit = nullptr;
460 QComboBox *mUnitsCombo = nullptr;
461};
462
463class GUI_EXPORT QgsProcessingDurationWidgetWrapper : public QgsProcessingNumericWidgetWrapper
464{
465 Q_OBJECT
466
467 public:
468 QgsProcessingDurationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
469
470 // QgsProcessingParameterWidgetFactoryInterface
471 QString parameterType() const override;
472 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
473 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
474 QgsProcessingContext &context,
475 const QgsProcessingParameterWidgetContext &widgetContext,
476 const QgsProcessingParameterDefinition *definition = nullptr,
477 const QgsProcessingAlgorithm *algorithm = nullptr
478 ) override;
479
480 // QgsProcessingParameterWidgetWrapper interface
481 QWidget *createWidget() override SIP_FACTORY;
482 QLabel *createLabel() override SIP_FACTORY;
483
484 protected:
485 QVariant widgetValue() const override;
486 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
487
488 private:
489 Qgis::TemporalUnit mBaseUnit = Qgis::TemporalUnit::Milliseconds;
490 QComboBox *mUnitsCombo = nullptr;
491
492 friend class TestProcessingGui;
493};
494
495class GUI_EXPORT QgsProcessingScaleParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
496{
497 Q_OBJECT
498 public:
499 QgsProcessingScaleParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
500 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
501
502 private:
503 QLineEdit *mDefaultLineEdit = nullptr;
504};
505
506class GUI_EXPORT QgsProcessingScaleWidgetWrapper : public QgsProcessingNumericWidgetWrapper
507{
508 Q_OBJECT
509
510 public:
511 QgsProcessingScaleWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
512
513 // QgsProcessingParameterWidgetFactoryInterface
514 QString parameterType() const override;
515 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
516 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
517 QgsProcessingContext &context,
518 const QgsProcessingParameterWidgetContext &widgetContext,
519 const QgsProcessingParameterDefinition *definition = nullptr,
520 const QgsProcessingAlgorithm *algorithm = nullptr
521 ) override;
522
523 // QgsProcessingParameterWidgetWrapper interface
524 QWidget *createWidget() override SIP_FACTORY;
525 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
526
527 protected:
528 QVariant widgetValue() const override;
529 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
530
531 private:
532 QgsScaleWidget *mScaleWidget = nullptr;
533
534 friend class TestProcessingGui;
535};
536
537
538class GUI_EXPORT QgsProcessingRangeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
539{
540 Q_OBJECT
541 public:
542 QgsProcessingRangeParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
543 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
544
545 private:
546 QComboBox *mTypeComboBox = nullptr;
547 QLineEdit *mMinLineEdit = nullptr;
548 QLineEdit *mMaxLineEdit = nullptr;
549};
550
551class GUI_EXPORT QgsProcessingRangeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
552{
553 Q_OBJECT
554
555 public:
556 QgsProcessingRangeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
557
558 // QgsProcessingParameterWidgetFactoryInterface
559 QString parameterType() const override;
560 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
561 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
562 QgsProcessingContext &context,
563 const QgsProcessingParameterWidgetContext &widgetContext,
564 const QgsProcessingParameterDefinition *definition = nullptr,
565 const QgsProcessingAlgorithm *algorithm = nullptr
566 ) override;
567
568 // QgsProcessingParameterWidgetWrapper interface
569 QWidget *createWidget() override SIP_FACTORY;
570
571 protected:
572 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
573 QVariant widgetValue() const override;
574 QString modelerExpressionFormatString() const override;
575
576 protected:
577 QgsDoubleSpinBox *mMinSpinBox = nullptr;
578 QgsDoubleSpinBox *mMaxSpinBox = nullptr;
579
580 private:
581 int mBlockChangedSignal = 0;
582 bool mAllowingNull = false;
583
584 friend class TestProcessingGui;
585};
586
587class GUI_EXPORT QgsProcessingMatrixParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
588{
589 Q_OBJECT
590 public:
591 QgsProcessingMatrixParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
592 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
593
594 private:
595 QgsProcessingMatrixModelerWidget *mMatrixWidget = nullptr;
596};
597
598class GUI_EXPORT QgsProcessingMatrixWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
599{
600 Q_OBJECT
601
602 public:
603 QgsProcessingMatrixWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
604
605 // QgsProcessingParameterWidgetFactoryInterface
606 QString parameterType() const override;
607 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
608 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
609 QgsProcessingContext &context,
610 const QgsProcessingParameterWidgetContext &widgetContext,
611 const QgsProcessingParameterDefinition *definition = nullptr,
612 const QgsProcessingAlgorithm *algorithm = nullptr
613 ) override;
614
615 // QgsProcessingParameterWidgetWrapper interface
616 QWidget *createWidget() override SIP_FACTORY;
617
618 protected:
619 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
620 QVariant widgetValue() const override;
621
622 QString modelerExpressionFormatString() const override;
623
624 private:
625 QgsProcessingMatrixParameterPanel *mMatrixWidget = nullptr;
626
627 friend class TestProcessingGui;
628};
629
630class GUI_EXPORT QgsProcessingFileParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
631{
632 Q_OBJECT
633 public:
634 QgsProcessingFileParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
635 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
636
637 private:
638 QComboBox *mTypeComboBox = nullptr;
639 QComboBox *mFilterComboBox = nullptr;
640 QgsFileWidget *mDefaultFileWidget = nullptr;
641};
642
643class GUI_EXPORT QgsProcessingFileWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
644{
645 Q_OBJECT
646
647 public:
648 QgsProcessingFileWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
649
650 // QgsProcessingParameterWidgetFactoryInterface
651 QString parameterType() const override;
652 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
653 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
654 QgsProcessingContext &context,
655 const QgsProcessingParameterWidgetContext &widgetContext,
656 const QgsProcessingParameterDefinition *definition = nullptr,
657 const QgsProcessingAlgorithm *algorithm = nullptr
658 ) override;
659
660 // QgsProcessingParameterWidgetWrapper interface
661 QWidget *createWidget() override SIP_FACTORY;
662
663 protected:
664 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
665 QVariant widgetValue() const override;
666
667 QString modelerExpressionFormatString() const override;
668
669 private:
670 QgsFileWidget *mFileWidget = nullptr;
671
672 friend class TestProcessingGui;
673};
674
675
676class GUI_EXPORT QgsProcessingExpressionParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
677{
678 Q_OBJECT
679 public:
680 QgsProcessingExpressionParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
681 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
682
683 private:
684 QComboBox *mParentLayerComboBox = nullptr;
685 QgsExpressionLineEdit *mDefaultQgisLineEdit = nullptr;
686 QgsProcessingPointCloudExpressionLineEdit *mDefaultPointCloudLineEdit = nullptr;
687 QgsProcessingRasterCalculatorExpressionLineEdit *mDefaultRasterCalculatorLineEdit = nullptr;
688 QComboBox *mExpressionTypeComboBox = nullptr;
689};
690
691class GUI_EXPORT QgsProcessingExpressionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
692{
693 Q_OBJECT
694
695 public:
696 QgsProcessingExpressionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
697
698 // QgsProcessingParameterWidgetFactoryInterface
699 QString parameterType() const override;
700 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
701 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
702 QgsProcessingContext &context,
703 const QgsProcessingParameterWidgetContext &widgetContext,
704 const QgsProcessingParameterDefinition *definition = nullptr,
705 const QgsProcessingAlgorithm *algorithm = nullptr
706 ) override;
707
708 // QgsProcessingParameterWidgetWrapper interface
709 QWidget *createWidget() override SIP_FACTORY;
710 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
711 void registerProcessingContextGenerator( QgsProcessingContextGenerator *generator ) override;
712
713 public slots:
714 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
715
716 protected:
717 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
718 QVariant widgetValue() const override;
719
720 QString modelerExpressionFormatString() const override;
721 const QgsVectorLayer *linkedVectorLayer() const override;
722
723 private:
724 QgsFieldExpressionWidget *mFieldExpWidget = nullptr;
725 QgsExpressionBuilderWidget *mExpBuilderWidget = nullptr;
726 QgsExpressionLineEdit *mExpLineEdit = nullptr;
727 QgsProcessingPointCloudExpressionLineEdit *mPointCloudExpLineEdit = nullptr;
728 QgsProcessingRasterCalculatorExpressionLineEdit *mRasterCalculatorExpLineEdit = nullptr;
729 std::unique_ptr<QgsMapLayer> mParentLayer;
730
731 friend class TestProcessingGui;
732};
733
734
735class GUI_EXPORT QgsProcessingEnumCheckboxPanelWidget : public QWidget
736{
737 Q_OBJECT
738
739 public:
740 QgsProcessingEnumCheckboxPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr, int columns = 2 );
741 QVariant value() const;
742 void setValue( const QVariant &value );
743
744 signals:
745
746 void changed();
747
748 private slots:
749
750 void showPopupMenu();
751 void selectAll();
752 void deselectAll();
753
754 private:
755 const QgsProcessingParameterEnum *mParam = nullptr;
756 QMap<QVariant, QAbstractButton *> mButtons;
757 QButtonGroup *mButtonGroup = nullptr;
758 int mColumns = 2;
759 bool mBlockChangedSignal = false;
760
761 friend class TestProcessingGui;
762};
763
764class GUI_EXPORT QgsProcessingEnumPanelWidget : public QWidget
765{
766 Q_OBJECT
767
768 public:
769 QgsProcessingEnumPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr );
770 QVariant value() const { return mValue; }
771 void setValue( const QVariant &value );
772
773 signals:
774
775 void changed();
776
777 private slots:
778
779 void showDialog();
780
781 private:
782 void updateSummaryText();
783
784 const QgsProcessingParameterEnum *mParam = nullptr;
785 QLineEdit *mLineEdit = nullptr;
786 QToolButton *mToolButton = nullptr;
787
788 QVariantList mValue;
789
790 friend class TestProcessingGui;
791};
792
793class GUI_EXPORT QgsProcessingEnumParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
794{
795 Q_OBJECT
796 public:
797 QgsProcessingEnumParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
798 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
799
800 private:
801 QgsProcessingEnumModelerWidget *mEnumWidget = nullptr;
802};
803
804class GUI_EXPORT QgsProcessingEnumWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
805{
806 Q_OBJECT
807
808 public:
809 QgsProcessingEnumWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
810
811 // QgsProcessingParameterWidgetFactoryInterface
812 QString parameterType() const override;
813 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
814 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
815 QgsProcessingContext &context,
816 const QgsProcessingParameterWidgetContext &widgetContext,
817 const QgsProcessingParameterDefinition *definition = nullptr,
818 const QgsProcessingAlgorithm *algorithm = nullptr
819 ) override;
820
821 // QgsProcessingParameterWidgetWrapper interface
822 QWidget *createWidget() override SIP_FACTORY;
823
824 protected:
825 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
826 QVariant widgetValue() const override;
827
828 QString modelerExpressionFormatString() const override;
829
830 private:
831 QComboBox *mComboBox = nullptr;
832 QgsProcessingEnumPanelWidget *mPanel = nullptr;
833 QgsProcessingEnumCheckboxPanelWidget *mCheckboxPanel = nullptr;
834
835 friend class TestProcessingGui;
836};
837
838
839class GUI_EXPORT QgsProcessingLayoutWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
840{
841 Q_OBJECT
842
843 public:
844 QgsProcessingLayoutWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
845
846 // QgsProcessingParameterWidgetFactoryInterface
847 QString parameterType() const override;
848 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
849
850 // QgsProcessingParameterWidgetWrapper interface
851 QWidget *createWidget() override SIP_FACTORY;
852
853 protected:
854 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
855 QVariant widgetValue() const override;
856 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
857
858 QString modelerExpressionFormatString() const override;
859
860 private:
861 QgsLayoutComboBox *mComboBox = nullptr;
862 QComboBox *mPlainComboBox = nullptr;
863
864 friend class TestProcessingGui;
865};
866
867
868class GUI_EXPORT QgsProcessingLayoutItemParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
869{
870 Q_OBJECT
871 public:
872 QgsProcessingLayoutItemParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
873 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
874
875 private:
876 QComboBox *mParentLayoutComboBox = nullptr;
877};
878
879class GUI_EXPORT QgsProcessingLayoutItemWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
880{
881 Q_OBJECT
882
883 public:
884 QgsProcessingLayoutItemWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
885
886 // QgsProcessingParameterWidgetFactoryInterface
887 QString parameterType() const override;
888 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
889 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
890 QgsProcessingContext &context,
891 const QgsProcessingParameterWidgetContext &widgetContext,
892 const QgsProcessingParameterDefinition *definition = nullptr,
893 const QgsProcessingAlgorithm *algorithm = nullptr
894 ) override;
895
896 // QgsProcessingParameterWidgetWrapper interface
897 QWidget *createWidget() override SIP_FACTORY;
898 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
899
900
901 public slots:
902 void setLayoutParameterValue( const QVariant &value );
903 void setLayout( QgsPrintLayout *layout );
904
905 protected:
906 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
907 QVariant widgetValue() const override;
908
909 QString modelerExpressionFormatString() const override;
910
911 private:
912 QgsLayoutItemComboBox *mComboBox = nullptr;
913 QLineEdit *mLineEdit = nullptr;
914
915 friend class TestProcessingGui;
916};
917
918class GUI_EXPORT QgsProcessingPointMapTool : public QgsMapTool
919{
920 Q_OBJECT
921 public:
922 QgsProcessingPointMapTool( QgsMapCanvas *canvas );
923 ~QgsProcessingPointMapTool() override;
924 void deactivate() override;
925 void canvasMoveEvent( QgsMapMouseEvent *e ) override;
926 void canvasPressEvent( QgsMapMouseEvent *e ) override;
927 void keyPressEvent( QKeyEvent *e ) override;
928
929 signals:
930
931 void clicked( const QgsPointXY &point );
932 void complete();
933
934 private:
935 std::unique_ptr<QgsSnapIndicator> mSnapIndicator;
936 friend class TestProcessingGui;
937};
938
939class GUI_EXPORT QgsProcessingPointPanel : public QWidget
940{
941 Q_OBJECT
942
943 public:
944 QgsProcessingPointPanel( QWidget *parent );
945 void setMapCanvas( QgsMapCanvas *canvas );
946 void setAllowNull( bool allowNull );
947 void setShowPointOnCanvas( bool show );
948 void setAllowSelectOnCanvas( bool allow );
949
950 QVariant value() const;
951 void clear();
952 void setValue( const QgsPointXY &point, const QgsCoordinateReferenceSystem &crs );
953 void showEvent( QShowEvent *event ) override;
954
955 signals:
956
957 void toggleDialogVisibility( bool visible );
958 void changed();
959
960 private slots:
961
962 void selectOnCanvas();
963 void updatePoint( const QgsPointXY &point );
964 void pointPicked();
965 void textChanged( const QString &text );
966
967 private:
968 void updateRubberBand();
969
970 QgsFilterLineEdit *mLineEdit = nullptr;
971 bool mShowPointOnCanvas = false;
972 bool mFirstShow = true;
973 bool mAllowSelectOnCanvas = true;
974 QToolButton *mButton = nullptr;
975 QgsMapCanvas *mCanvas = nullptr;
976 QgsCoordinateReferenceSystem mCrs;
977 QPointer<QgsMapTool> mPrevTool;
978 std::unique_ptr<QgsProcessingPointMapTool> mTool;
979 QgsPointXY mPoint;
980 QObjectUniquePtr<QgsRubberBand> mMapPointRubberBand;
981 friend class TestProcessingGui;
982};
983
984
985class GUI_EXPORT QgsProcessingPointParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
986{
987 Q_OBJECT
988 public:
989 QgsProcessingPointParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
990 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
991
992 private:
993 QLineEdit *mDefaultLineEdit = nullptr;
994};
995
996class GUI_EXPORT QgsProcessingPointWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
997{
998 Q_OBJECT
999
1000 public:
1001 QgsProcessingPointWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1002
1003 // QgsProcessingParameterWidgetFactoryInterface
1004 QString parameterType() const override;
1005 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1006 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1007 QgsProcessingContext &context,
1008 const QgsProcessingParameterWidgetContext &widgetContext,
1009 const QgsProcessingParameterDefinition *definition = nullptr,
1010 const QgsProcessingAlgorithm *algorithm = nullptr
1011 ) override;
1012
1013 // QgsProcessingParameterWidgetWrapper interface
1014 QWidget *createWidget() override SIP_FACTORY;
1015 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1016 void setDialog( QDialog *dialog ) override;
1017
1018 protected:
1019 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1020 QVariant widgetValue() const override;
1021
1022 QString modelerExpressionFormatString() const override;
1023
1024 private:
1025 QgsProcessingPointPanel *mPanel = nullptr;
1026 QLineEdit *mLineEdit = nullptr;
1027 QDialog *mDialog = nullptr;
1028
1029 friend class TestProcessingGui;
1030};
1031
1032class GUI_EXPORT QgsProcessingGeometryParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1033{
1034 Q_OBJECT
1035 public:
1036 QgsProcessingGeometryParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1037 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1038
1039 private:
1040 QgsGeometryWidget *mGeometryWidget = nullptr;
1041};
1042
1043class GUI_EXPORT QgsProcessingGeometryWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1044{
1045 Q_OBJECT
1046
1047 public:
1048 QgsProcessingGeometryWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1049
1050 // QgsProcessingParameterWidgetFactoryInterface
1051 QString parameterType() const override;
1052 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1053 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1054 QgsProcessingContext &context,
1055 const QgsProcessingParameterWidgetContext &widgetContext,
1056 const QgsProcessingParameterDefinition *definition = nullptr,
1057 const QgsProcessingAlgorithm *algorithm = nullptr
1058 ) override;
1059
1060 // QgsProcessingParameterWidgetWrapper interface
1061 QWidget *createWidget() override SIP_FACTORY;
1062
1063 protected:
1064 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1065 QVariant widgetValue() const override;
1066
1067 QString modelerExpressionFormatString() const override;
1068
1069 private:
1070 QgsGeometryWidget *mGeometryWidget = nullptr;
1071
1072 friend class TestProcessingGui;
1073};
1074
1075class GUI_EXPORT QgsProcessingExtentParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1076{
1077 Q_OBJECT
1078 public:
1079 QgsProcessingExtentParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1080 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1081
1082 private:
1083 QgsExtentWidget *mDefaultWidget = nullptr;
1084};
1085
1086class GUI_EXPORT QgsProcessingExtentWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1087{
1088 Q_OBJECT
1089
1090 public:
1091 QgsProcessingExtentWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1092
1093 // QgsProcessingParameterWidgetFactoryInterface
1094 QString parameterType() const override;
1095 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1096 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1097 QgsProcessingContext &context,
1098 const QgsProcessingParameterWidgetContext &widgetContext,
1099 const QgsProcessingParameterDefinition *definition = nullptr,
1100 const QgsProcessingAlgorithm *algorithm = nullptr
1101 ) override;
1102
1103 // QgsProcessingParameterWidgetWrapper interface
1104 QWidget *createWidget() override SIP_FACTORY;
1105 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1106 void setDialog( QDialog *dialog ) override;
1107
1108 protected:
1109 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1110 QVariant widgetValue() const override;
1111
1112 QString modelerExpressionFormatString() const override;
1113
1114 private:
1115 QgsExtentWidget *mExtentWidget = nullptr;
1116 QDialog *mDialog = nullptr;
1117
1118 friend class TestProcessingGui;
1119};
1120
1121class GUI_EXPORT QgsProcessingColorParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1122{
1123 Q_OBJECT
1124 public:
1125 QgsProcessingColorParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1126 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1127
1128 private:
1129 QgsColorButton *mDefaultColorButton = nullptr;
1130 QCheckBox *mAllowOpacity = nullptr;
1131};
1132
1133class GUI_EXPORT QgsProcessingColorWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1134{
1135 Q_OBJECT
1136
1137 public:
1138 QgsProcessingColorWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1139
1140 // QgsProcessingParameterWidgetFactoryInterface
1141 QString parameterType() const override;
1142 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1143 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1144 QgsProcessingContext &context,
1145 const QgsProcessingParameterWidgetContext &widgetContext,
1146 const QgsProcessingParameterDefinition *definition = nullptr,
1147 const QgsProcessingAlgorithm *algorithm = nullptr
1148 ) override;
1149
1150 // QgsProcessingParameterWidgetWrapper interface
1151 QWidget *createWidget() override SIP_FACTORY;
1152
1153 protected:
1154 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1155 QVariant widgetValue() const override;
1156
1157 QString modelerExpressionFormatString() const override;
1158
1159 private:
1160 QgsColorButton *mColorButton = nullptr;
1161 friend class TestProcessingGui;
1162};
1163
1164
1165class GUI_EXPORT QgsProcessingCoordinateOperationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1166{
1167 Q_OBJECT
1168 public:
1169 QgsProcessingCoordinateOperationParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1170 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1171
1172 private:
1173 QLineEdit *mDefaultLineEdit = nullptr;
1174
1175 QComboBox *mSourceParamComboBox = nullptr;
1176 QComboBox *mDestParamComboBox = nullptr;
1177
1178 QgsProjectionSelectionWidget *mStaticSourceWidget = nullptr;
1179 QgsProjectionSelectionWidget *mStaticDestWidget = nullptr;
1180};
1181
1182class GUI_EXPORT QgsProcessingCoordinateOperationWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1183{
1184 Q_OBJECT
1185
1186 public:
1187 QgsProcessingCoordinateOperationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1188
1189 // QgsProcessingParameterWidgetFactoryInterface
1190 QString parameterType() const override;
1191 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1192 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1193 QgsProcessingContext &context,
1194 const QgsProcessingParameterWidgetContext &widgetContext,
1195 const QgsProcessingParameterDefinition *definition = nullptr,
1196 const QgsProcessingAlgorithm *algorithm = nullptr
1197 ) override;
1198
1199 // QgsProcessingParameterWidgetWrapper interface
1200 QWidget *createWidget() override SIP_FACTORY;
1201 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1202 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1203
1204 protected:
1205 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1206 QVariant widgetValue() const override;
1207
1208 QString modelerExpressionFormatString() const override;
1209
1210 private:
1211 void setSourceCrsParameterValue( const QVariant &value );
1212 void setDestinationCrsParameterValue( const QVariant &value );
1213
1214 QgsCoordinateOperationWidget *mOperationWidget = nullptr;
1215 QgsMapCanvas *mCanvas = nullptr;
1216 QLineEdit *mLineEdit = nullptr;
1217 QgsCoordinateReferenceSystem mSourceCrs;
1218 QgsCoordinateReferenceSystem mDestCrs;
1219 friend class TestProcessingGui;
1220};
1221
1222class GUI_EXPORT QgsProcessingFieldPanelWidget : public QWidget
1223{
1224 Q_OBJECT
1225
1226 public:
1227 QgsProcessingFieldPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterField *param = nullptr );
1228
1229 void setFields( const QgsFields &fields );
1230
1231 QgsFields fields() const { return mFields; }
1232
1233 QVariant value() const { return mValue; }
1234 void setValue( const QVariant &value );
1235
1236 signals:
1237
1238 void changed();
1239
1240 private slots:
1241
1242 void showDialog();
1243
1244 private:
1245 void updateSummaryText();
1246
1247 QgsFields mFields;
1248
1249 const QgsProcessingParameterField *mParam = nullptr;
1250 QLineEdit *mLineEdit = nullptr;
1251 QToolButton *mToolButton = nullptr;
1252
1253 QVariantList mValue;
1254
1255 friend class TestProcessingGui;
1256};
1257
1258class GUI_EXPORT QgsProcessingFieldParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1259{
1260 Q_OBJECT
1261 public:
1262 QgsProcessingFieldParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1263 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1264
1265 private:
1266 QComboBox *mParentLayerComboBox = nullptr;
1267 QComboBox *mDataTypeComboBox = nullptr;
1268 QLineEdit *mDefaultLineEdit = nullptr;
1269 QCheckBox *mAllowMultipleCheckBox = nullptr;
1270 QCheckBox *mDefaultToAllCheckBox = nullptr;
1271};
1272
1273class GUI_EXPORT QgsProcessingFieldWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1274{
1275 Q_OBJECT
1276
1277 public:
1278 QgsProcessingFieldWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1279
1280 // QgsProcessingParameterWidgetFactoryInterface
1281 QString parameterType() const override;
1282 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1283 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1284 QgsProcessingContext &context,
1285 const QgsProcessingParameterWidgetContext &widgetContext,
1286 const QgsProcessingParameterDefinition *definition = nullptr,
1287 const QgsProcessingAlgorithm *algorithm = nullptr
1288 ) override;
1289
1290 // QgsProcessingParameterWidgetWrapper interface
1291 QWidget *createWidget() override SIP_FACTORY;
1292 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1293
1294 public slots:
1295 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1296
1297 protected:
1298 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1299 QVariant widgetValue() const override;
1300
1301 QString modelerExpressionFormatString() const override;
1302 const QgsVectorLayer *linkedVectorLayer() const override;
1303
1304 private:
1305 QgsFieldComboBox *mComboBox = nullptr;
1306 QgsProcessingFieldPanelWidget *mPanel = nullptr;
1307 QLineEdit *mLineEdit = nullptr;
1308
1309 std::unique_ptr<QgsVectorLayer> mParentLayer;
1310
1311 QgsFields filterFields( const QgsFields &fields ) const;
1312
1313 friend class TestProcessingGui;
1314};
1315
1316
1317class GUI_EXPORT QgsProcessingMapThemeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1318{
1319 Q_OBJECT
1320 public:
1321 QgsProcessingMapThemeParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1322 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1323
1324 private:
1325 QComboBox *mDefaultComboBox = nullptr;
1326};
1327
1328class GUI_EXPORT QgsProcessingMapThemeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1329{
1330 Q_OBJECT
1331
1332 public:
1333 QgsProcessingMapThemeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1334
1335 // QgsProcessingParameterWidgetFactoryInterface
1336 QString parameterType() const override;
1337 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1338 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1339 QgsProcessingContext &context,
1340 const QgsProcessingParameterWidgetContext &widgetContext,
1341 const QgsProcessingParameterDefinition *definition = nullptr,
1342 const QgsProcessingAlgorithm *algorithm = nullptr
1343 ) override;
1344
1345 // QgsProcessingParameterWidgetWrapper interface
1346 QWidget *createWidget() override SIP_FACTORY;
1347
1348 protected:
1349 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1350 QVariant widgetValue() const override;
1351
1352 QString modelerExpressionFormatString() const override;
1353
1354 private:
1355 QComboBox *mComboBox = nullptr;
1356
1357 friend class TestProcessingGui;
1358};
1359
1360
1361class GUI_EXPORT QgsProcessingDateTimeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1362{
1363 Q_OBJECT
1364 public:
1365 QgsProcessingDateTimeParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1366 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1367
1368 private:
1369 QComboBox *mTypeComboBox = nullptr;
1370};
1371
1372class GUI_EXPORT QgsProcessingDateTimeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1373{
1374 Q_OBJECT
1375
1376 public:
1377 QgsProcessingDateTimeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1378
1379 // QgsProcessingParameterWidgetFactoryInterface
1380 QString parameterType() const override;
1381 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1382
1383 // QgsProcessingParameterWidgetWrapper interface
1384 QWidget *createWidget() override SIP_FACTORY;
1385 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1386 QgsProcessingContext &context,
1387 const QgsProcessingParameterWidgetContext &widgetContext,
1388 const QgsProcessingParameterDefinition *definition = nullptr,
1389 const QgsProcessingAlgorithm *algorithm = nullptr
1390 ) override;
1391
1392 protected:
1393 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1394 QVariant widgetValue() const override;
1395
1396 QString modelerExpressionFormatString() const override;
1397
1398 private:
1399 QgsDateTimeEdit *mDateTimeEdit = nullptr;
1400 QgsDateEdit *mDateEdit = nullptr;
1401 QgsTimeEdit *mTimeEdit = nullptr;
1402
1403 friend class TestProcessingGui;
1404};
1405
1406
1407//
1408// QgsProcessingProviderConnectionWidgetWrapper
1409//
1410
1411class GUI_EXPORT QgsProcessingProviderConnectionParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1412{
1413 Q_OBJECT
1414 public:
1415 QgsProcessingProviderConnectionParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1416 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1417
1418 private:
1419 QComboBox *mProviderComboBox = nullptr;
1420 QLineEdit *mDefaultEdit = nullptr;
1421};
1422
1423class GUI_EXPORT QgsProcessingProviderConnectionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1424{
1425 Q_OBJECT
1426
1427 public:
1428 QgsProcessingProviderConnectionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1429
1430 // QgsProcessingParameterWidgetFactoryInterface
1431 QString parameterType() const override;
1432 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1433
1434
1435 // QgsProcessingParameterWidgetWrapper interface
1436 QWidget *createWidget() override SIP_FACTORY;
1437 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1438 QgsProcessingContext &context,
1439 const QgsProcessingParameterWidgetContext &widgetContext,
1440 const QgsProcessingParameterDefinition *definition = nullptr,
1441 const QgsProcessingAlgorithm *algorithm = nullptr
1442 ) override;
1443
1444 protected:
1445 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1446 QVariant widgetValue() const override;
1447
1448 QString modelerExpressionFormatString() const override;
1449
1450 private:
1451 QgsProviderConnectionComboBox *mProviderComboBox = nullptr;
1452 int mBlockSignals = 0;
1453
1454 friend class TestProcessingGui;
1455};
1456
1457
1458class GUI_EXPORT QgsProcessingDatabaseSchemaParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1459{
1460 Q_OBJECT
1461 public:
1462 QgsProcessingDatabaseSchemaParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1463 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1464
1465 private:
1466 QComboBox *mConnectionParamComboBox = nullptr;
1467 QLineEdit *mDefaultEdit = nullptr;
1468};
1469
1470class GUI_EXPORT QgsProcessingDatabaseSchemaWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1471{
1472 Q_OBJECT
1473
1474 public:
1475 QgsProcessingDatabaseSchemaWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1476
1477 // QgsProcessingParameterWidgetFactoryInterface
1478 QString parameterType() const override;
1479 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1480 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1481
1482
1483 // QgsProcessingParameterWidgetWrapper interface
1484 QWidget *createWidget() override SIP_FACTORY;
1485 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1486 QgsProcessingContext &context,
1487 const QgsProcessingParameterWidgetContext &widgetContext,
1488 const QgsProcessingParameterDefinition *definition = nullptr,
1489 const QgsProcessingAlgorithm *algorithm = nullptr
1490 ) override;
1491
1492 public slots:
1493 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1494
1495 protected:
1496 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1497 QVariant widgetValue() const override;
1498
1499 QString modelerExpressionFormatString() const override;
1500
1501 private:
1502 QgsDatabaseSchemaComboBox *mSchemaComboBox = nullptr;
1503 int mBlockSignals = 0;
1504
1505 friend class TestProcessingGui;
1506};
1507
1508
1509class GUI_EXPORT QgsProcessingDatabaseTableParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1510{
1511 Q_OBJECT
1512 public:
1513 QgsProcessingDatabaseTableParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1514 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1515
1516 private:
1517 QComboBox *mConnectionParamComboBox = nullptr;
1518 QComboBox *mSchemaParamComboBox = nullptr;
1519 QLineEdit *mDefaultEdit = nullptr;
1520};
1521
1522class GUI_EXPORT QgsProcessingDatabaseTableWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1523{
1524 Q_OBJECT
1525
1526 public:
1527 QgsProcessingDatabaseTableWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1528
1529 // QgsProcessingParameterWidgetFactoryInterface
1530 QString parameterType() const override;
1531 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1532 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1533
1534
1535 // QgsProcessingParameterWidgetWrapper interface
1536 QWidget *createWidget() override SIP_FACTORY;
1537 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1538 QgsProcessingContext &context,
1539 const QgsProcessingParameterWidgetContext &widgetContext,
1540 const QgsProcessingParameterDefinition *definition = nullptr,
1541 const QgsProcessingAlgorithm *algorithm = nullptr
1542 ) override;
1543
1544 public slots:
1545 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1546 void setParentSchemaWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1547
1548 protected:
1549 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1550 QVariant widgetValue() const override;
1551
1552 QString modelerExpressionFormatString() const override;
1553
1554 private:
1555 QgsDatabaseTableComboBox *mTableComboBox = nullptr;
1556 int mBlockSignals = 0;
1557 QString mConnection;
1558 QString mProvider;
1559 QString mSchema;
1560
1561 friend class TestProcessingGui;
1562};
1563
1564class GUI_EXPORT QgsProcessingMapLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1565{
1566 Q_OBJECT
1567 public:
1568 QgsProcessingMapLayerParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1569 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1570
1571 private:
1572 QgsCheckableComboBox *mLayerTypeComboBox = nullptr;
1573};
1574
1575class GUI_EXPORT QgsProcessingMapLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1576{
1577 Q_OBJECT
1578
1579 public:
1580 QgsProcessingMapLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1581
1582 // QgsProcessingParameterWidgetFactoryInterface
1583 QString parameterType() const override;
1584 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1585 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1586 QgsProcessingContext &context,
1587 const QgsProcessingParameterWidgetContext &widgetContext,
1588 const QgsProcessingParameterDefinition *definition = nullptr,
1589 const QgsProcessingAlgorithm *algorithm = nullptr
1590 ) override;
1591
1592 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1593 // QgsProcessingParameterWidgetWrapper interface
1594 QWidget *createWidget() override SIP_FACTORY;
1595
1596 protected:
1597 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1598 QVariant widgetValue() const override;
1599
1600 QString modelerExpressionFormatString() const override;
1601 Qgis::ProcessingModelChildParameterSource defaultModelSource( const QgsProcessingParameterDefinition *parameter ) const override;
1602
1603 private:
1604 QPointer<QgsProcessingMapLayerComboBox> mComboBox;
1605 int mBlockSignals = 0;
1606
1607 friend class TestProcessingGui;
1608};
1609
1610
1611class GUI_EXPORT QgsProcessingRasterLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1612{
1613 Q_OBJECT
1614
1615 public:
1616 QgsProcessingRasterLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1617
1618 // QgsProcessingParameterWidgetFactoryInterface
1619 QString parameterType() const override;
1620 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1621 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1622 QgsProcessingContext &context,
1623 const QgsProcessingParameterWidgetContext &widgetContext,
1624 const QgsProcessingParameterDefinition *definition = nullptr,
1625 const QgsProcessingAlgorithm *algorithm = nullptr
1626 ) override;
1627
1628 protected:
1629 QString modelerExpressionFormatString() const override;
1630};
1631
1632
1633class GUI_EXPORT QgsProcessingVectorLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1634{
1635 Q_OBJECT
1636 public:
1637 QgsProcessingVectorLayerParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1638 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1639
1640 private:
1641 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1642};
1643
1644class GUI_EXPORT QgsProcessingVectorLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1645{
1646 Q_OBJECT
1647
1648 public:
1649 QgsProcessingVectorLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1650
1651 // QgsProcessingParameterWidgetFactoryInterface
1652 QString parameterType() const override;
1653 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1654 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1655 QgsProcessingContext &context,
1656 const QgsProcessingParameterWidgetContext &widgetContext,
1657 const QgsProcessingParameterDefinition *definition = nullptr,
1658 const QgsProcessingAlgorithm *algorithm = nullptr
1659 ) override;
1660
1661 protected:
1662 QString modelerExpressionFormatString() const override;
1663};
1664
1665
1666class GUI_EXPORT QgsProcessingFeatureSourceParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1667{
1668 Q_OBJECT
1669 public:
1670 QgsProcessingFeatureSourceParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1671 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1672
1673 private:
1674 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1675};
1676
1677class GUI_EXPORT QgsProcessingFeatureSourceWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1678{
1679 Q_OBJECT
1680
1681 public:
1682 QgsProcessingFeatureSourceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1683
1684 // QgsProcessingParameterWidgetFactoryInterface
1685 QString parameterType() const override;
1686 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1687 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1688 QgsProcessingContext &context,
1689 const QgsProcessingParameterWidgetContext &widgetContext,
1690 const QgsProcessingParameterDefinition *definition = nullptr,
1691 const QgsProcessingAlgorithm *algorithm = nullptr
1692 ) override;
1693
1694 protected:
1695 QString modelerExpressionFormatString() const override;
1696};
1697
1698
1699class GUI_EXPORT QgsProcessingMeshLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1700{
1701 Q_OBJECT
1702
1703 public:
1704 QgsProcessingMeshLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1705
1706 // QgsProcessingParameterWidgetFactoryInterface
1707 QString parameterType() const override;
1708 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1709 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1710 QgsProcessingContext &context,
1711 const QgsProcessingParameterWidgetContext &widgetContext,
1712 const QgsProcessingParameterDefinition *definition = nullptr,
1713 const QgsProcessingAlgorithm *algorithm = nullptr
1714 ) override;
1715
1716 protected:
1717 QString modelerExpressionFormatString() const override;
1718};
1719
1720
1721class GUI_EXPORT QgsProcessingRasterBandPanelWidget : public QWidget
1722{
1723 Q_OBJECT
1724
1725 public:
1726 QgsProcessingRasterBandPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterBand *param = nullptr );
1727
1728 void setBands( const QList<int> &bands );
1729 void setBandNames( const QHash<int, QString> &names );
1730 QList<int> bands() const { return mBands; }
1731
1732 QVariant value() const { return mValue; }
1733 void setValue( const QVariant &value );
1734
1735 signals:
1736
1737 void changed();
1738
1739 private slots:
1740
1741 void showDialog();
1742
1743 private:
1744 void updateSummaryText();
1745
1746 QList<int> mBands;
1747 QHash<int, QString> mBandNames;
1748
1749 const QgsProcessingParameterBand *mParam = nullptr;
1750 QLineEdit *mLineEdit = nullptr;
1751 QToolButton *mToolButton = nullptr;
1752
1753 QVariantList mValue;
1754
1755 friend class TestProcessingGui;
1756};
1757
1758class GUI_EXPORT QgsProcessingBandParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1759{
1760 Q_OBJECT
1761 public:
1762 QgsProcessingBandParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1763 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1764
1765 private:
1766 QComboBox *mParentLayerComboBox = nullptr;
1767 QLineEdit *mDefaultLineEdit = nullptr;
1768 QCheckBox *mAllowMultipleCheckBox = nullptr;
1769};
1770
1771class GUI_EXPORT QgsProcessingBandWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1772{
1773 Q_OBJECT
1774
1775 public:
1776 QgsProcessingBandWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1777
1778 // QgsProcessingParameterWidgetFactoryInterface
1779 QString parameterType() const override;
1780 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1781 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1782 QgsProcessingContext &context,
1783 const QgsProcessingParameterWidgetContext &widgetContext,
1784 const QgsProcessingParameterDefinition *definition = nullptr,
1785 const QgsProcessingAlgorithm *algorithm = nullptr
1786 ) override;
1787
1788 // QgsProcessingParameterWidgetWrapper interface
1789 QWidget *createWidget() override SIP_FACTORY;
1790 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1791
1792 public slots:
1793 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1794
1795 protected:
1796 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1797 QVariant widgetValue() const override;
1798
1799 QString modelerExpressionFormatString() const override;
1800
1801 private:
1802 QgsRasterBandComboBox *mComboBox = nullptr;
1803 QgsProcessingRasterBandPanelWidget *mPanel = nullptr;
1804 QLineEdit *mLineEdit = nullptr;
1805
1806 std::unique_ptr<QgsRasterLayer> mParentLayer;
1807
1808 friend class TestProcessingGui;
1809};
1810
1811
1812class GUI_EXPORT QgsProcessingMultipleLayerLineEdit : public QgsHighlightableLineEdit
1813{
1814 Q_OBJECT
1815
1816 public:
1817 QgsProcessingMultipleLayerLineEdit( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1818 void dragEnterEvent( QDragEnterEvent *event ) override;
1819 void dragLeaveEvent( QDragLeaveEvent *event ) override;
1820 void dropEvent( QDropEvent *event ) override;
1821
1822 signals:
1823
1824 void layersDropped( const QVariantList &value );
1825
1826 private:
1827 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1828};
1829
1830class GUI_EXPORT QgsProcessingMultipleLayerPanelWidget : public QWidget
1831{
1832 Q_OBJECT
1833
1834 public:
1835 QgsProcessingMultipleLayerPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1836
1837 QVariant value() const { return mValue; }
1838 void setValue( const QVariant &value );
1839
1840 void setProject( QgsProject *project );
1841 void setModel( QgsProcessingModelAlgorithm *model, const QString &modelChildAlgorithmID );
1842
1843 signals:
1844
1845 void changed();
1846
1847 private slots:
1848
1849 void showDialog();
1850
1851 private:
1852 void updateSummaryText();
1853
1854 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1855 QgsProcessingMultipleLayerLineEdit *mLineEdit = nullptr;
1856 QToolButton *mToolButton = nullptr;
1857
1858 QVariantList mValue;
1859 QList<QgsProcessingModelChildParameterSource> mModelSources;
1860 QgsProcessingModelAlgorithm *mModel = nullptr;
1861
1862 QgsProject *mProject = nullptr;
1863
1864 friend class TestProcessingGui;
1865};
1866
1867class GUI_EXPORT QgsProcessingMultipleLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1868{
1869 Q_OBJECT
1870 public:
1871 QgsProcessingMultipleLayerParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1872 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1873
1874 private:
1875 QComboBox *mLayerTypeComboBox = nullptr;
1876};
1877
1878class GUI_EXPORT QgsProcessingMultipleLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1879{
1880 Q_OBJECT
1881
1882 public:
1883 QgsProcessingMultipleLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1884
1885 // QgsProcessingParameterWidgetFactoryInterface
1886 QString parameterType() const override;
1887 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1888 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1889 QgsProcessingContext &context,
1890 const QgsProcessingParameterWidgetContext &widgetContext,
1891 const QgsProcessingParameterDefinition *definition = nullptr,
1892 const QgsProcessingAlgorithm *algorithm = nullptr
1893 ) override;
1894
1895 // QgsProcessingParameterWidgetWrapper interface
1896 QWidget *createWidget() override SIP_FACTORY;
1897 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1898
1899 protected:
1900 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1901 QVariant widgetValue() const override;
1902
1903 QString modelerExpressionFormatString() const override;
1904
1905 private:
1906 QgsProcessingMultipleLayerPanelWidget *mPanel = nullptr;
1907
1908 friend class TestProcessingGui;
1909};
1910
1911
1912class GUI_EXPORT QgsProcessingOutputWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1913{
1914 Q_OBJECT
1915
1916 public:
1917 QgsProcessingOutputWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1918
1919 // QgsProcessingParameterWidgetWrapper interface
1920 QWidget *createWidget() override SIP_FACTORY;
1921
1922 protected:
1923 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1924 QVariant widgetValue() const override;
1925 QVariantMap customProperties() const override;
1926
1927 private:
1928 QgsProcessingLayerOutputDestinationWidget *mOutputWidget = nullptr;
1929 int mBlockSignals = 0;
1930
1931 friend class TestProcessingGui;
1932};
1933
1934
1935class GUI_EXPORT QgsProcessingFeatureSinkWidgetWrapper : public QgsProcessingOutputWidgetWrapper
1936{
1937 Q_OBJECT
1938
1939 public:
1940 QgsProcessingFeatureSinkWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1941
1942 // QgsProcessingParameterWidgetFactoryInterface
1943 QString parameterType() const override;
1944 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1945
1946 protected:
1947 QString modelerExpressionFormatString() const override;
1948
1949 private:
1950 QgsProcessingContext mContext;
1951};
1952
1953class GUI_EXPORT QgsProcessingVectorDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
1954{
1955 Q_OBJECT
1956
1957 public:
1958 QgsProcessingVectorDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1959
1960 // QgsProcessingParameterWidgetFactoryInterface
1961 QString parameterType() const override;
1962 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1963
1964 protected:
1965 QString modelerExpressionFormatString() const override;
1966};
1967
1968class GUI_EXPORT QgsProcessingRasterDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
1969{
1970 Q_OBJECT
1971
1972 public:
1973 QgsProcessingRasterDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1974
1975 // QgsProcessingParameterWidgetFactoryInterface
1976 QString parameterType() const override;
1977 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1978
1979 protected:
1980 QString modelerExpressionFormatString() const override;
1981};
1982
1983class GUI_EXPORT QgsProcessingPointCloudDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
1984{
1985 Q_OBJECT
1986
1987 public:
1988 QgsProcessingPointCloudDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1989
1990 // QgsProcessingParameterWidgetFactoryInterface
1991 QString parameterType() const override;
1992 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1993
1994 protected:
1995 QString modelerExpressionFormatString() const override;
1996};
1997
1998class GUI_EXPORT QgsProcessingFileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
1999{
2000 Q_OBJECT
2001
2002 public:
2003 QgsProcessingFileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2004
2005 // QgsProcessingParameterWidgetFactoryInterface
2006 QString parameterType() const override;
2007 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2008
2009 protected:
2010 QString modelerExpressionFormatString() const override;
2011};
2012
2013class GUI_EXPORT QgsProcessingFolderDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2014{
2015 Q_OBJECT
2016
2017 public:
2018 QgsProcessingFolderDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2019
2020 // QgsProcessingParameterWidgetFactoryInterface
2021 QString parameterType() const override;
2022 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2023
2024 protected:
2025 QString modelerExpressionFormatString() const override;
2026};
2027
2028class GUI_EXPORT QgsProcessingPointCloudLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
2029{
2030 Q_OBJECT
2031
2032 public:
2033 QgsProcessingPointCloudLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2034
2035 // QgsProcessingParameterWidgetFactoryInterface
2036 QString parameterType() const override;
2037 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2038 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2039 QgsProcessingContext &context,
2040 const QgsProcessingParameterWidgetContext &widgetContext,
2041 const QgsProcessingParameterDefinition *definition = nullptr,
2042 const QgsProcessingAlgorithm *algorithm = nullptr
2043 ) override;
2044
2045 protected:
2046 QString modelerExpressionFormatString() const override;
2047};
2048
2049
2050class GUI_EXPORT QgsProcessingAnnotationLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2051{
2052 Q_OBJECT
2053
2054 public:
2055 QgsProcessingAnnotationLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2056
2057 // QgsProcessingParameterWidgetFactoryInterface
2058 QString parameterType() const override;
2059 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2060 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2061 QgsProcessingContext &context,
2062 const QgsProcessingParameterWidgetContext &widgetContext,
2063 const QgsProcessingParameterDefinition *definition = nullptr,
2064 const QgsProcessingAlgorithm *algorithm = nullptr
2065 ) override;
2066 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2067
2068 QWidget *createWidget() override SIP_FACTORY;
2069
2070 protected:
2071 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2072 QVariant widgetValue() const override;
2073
2074 QString modelerExpressionFormatString() const override;
2075
2076 private:
2077 QPointer<QgsMapLayerComboBox> mComboBox;
2078 int mBlockSignals = 0;
2079
2080 friend class TestProcessingGui;
2081};
2082
2083
2084class GUI_EXPORT QgsProcessingPointCloudAttributePanelWidget : public QWidget
2085{
2086 Q_OBJECT
2087
2088 public:
2089 QgsProcessingPointCloudAttributePanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterPointCloudAttribute *param = nullptr );
2090
2091 void setAttributes( const QgsPointCloudAttributeCollection &attributes );
2092
2093 QgsPointCloudAttributeCollection attributes() const { return mAttributes; }
2094
2095 QVariant value() const { return mValue; }
2096 void setValue( const QVariant &value );
2097
2098 signals:
2099
2100 void changed();
2101
2102 private slots:
2103
2104 void showDialog();
2105
2106 private:
2107 void updateSummaryText();
2108
2109 QgsPointCloudAttributeCollection mAttributes;
2110
2111 const QgsProcessingParameterPointCloudAttribute *mParam = nullptr;
2112 QLineEdit *mLineEdit = nullptr;
2113 QToolButton *mToolButton = nullptr;
2114
2115 QVariantList mValue;
2116
2117 friend class TestProcessingGui;
2118};
2119
2120class GUI_EXPORT QgsProcessingPointCloudAttributeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2121{
2122 Q_OBJECT
2123 public:
2124 QgsProcessingPointCloudAttributeParameterDefinitionWidget( QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
2125 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2126
2127 private:
2128 QComboBox *mParentLayerComboBox = nullptr;
2129 QLineEdit *mDefaultLineEdit = nullptr;
2130 QCheckBox *mAllowMultipleCheckBox = nullptr;
2131 QCheckBox *mDefaultToAllCheckBox = nullptr;
2132};
2133
2134class GUI_EXPORT QgsProcessingPointCloudAttributeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2135{
2136 Q_OBJECT
2137
2138 public:
2139 QgsProcessingPointCloudAttributeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2140
2141 // QgsProcessingParameterWidgetFactoryInterface
2142 QString parameterType() const override;
2143 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2144 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2145 QgsProcessingContext &context,
2146 const QgsProcessingParameterWidgetContext &widgetContext,
2147 const QgsProcessingParameterDefinition *definition = nullptr,
2148 const QgsProcessingAlgorithm *algorithm = nullptr
2149 ) override;
2150
2151 // QgsProcessingParameterWidgetWrapper interface
2152 QWidget *createWidget() override SIP_FACTORY;
2153 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2154
2155 public slots:
2156 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2157
2158 protected:
2159 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2160 QVariant widgetValue() const override;
2161
2162 QString modelerExpressionFormatString() const override;
2163
2164 private:
2165 QgsPointCloudAttributeComboBox *mComboBox = nullptr;
2166 QgsProcessingPointCloudAttributePanelWidget *mPanel = nullptr;
2167 QLineEdit *mLineEdit = nullptr;
2168
2169 std::unique_ptr<QgsPointCloudLayer> mParentLayer;
2170
2171 friend class TestProcessingGui;
2172};
2173
2174class GUI_EXPORT QgsProcessingVectorTileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2175{
2176 Q_OBJECT
2177
2178 public:
2179 QgsProcessingVectorTileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2180
2181 // QgsProcessingParameterWidgetFactoryInterface
2182 QString parameterType() const override;
2183 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2184
2185 protected:
2186 QString modelerExpressionFormatString() const override;
2187};
2188
2190
2191#endif // QGSPROCESSINGWIDGETWRAPPERIMPL_H
ProcessingMode
Types of modes which Processing widgets can be created for.
Definition qgis.h:3671
@ Standard
Standard (single-run) algorithm mode.
Definition qgis.h:3672
QFlags< ProcessingParameterFlag > ProcessingParameterFlags
Flags which dictate the behavior of Processing parameters.
Definition qgis.h:3777
A widget wrapper for Processing parameter value widgets.
Selector widget for authentication configs.
QComboBox subclass which allows selecting multiple items.
A cross platform button subclass for selecting colors.
A widget for selecting the coordinate operation to use when transforming between a source and destina...
A combo box which displays the list of schemas for a specific database connection.
A combobox which displays the list of tables for a specific database connection.
A QDateEdit widget with the capability of setting/reading null dates.
A QDateTimeEdit with the capability of setting/reading null date/times.
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value.
A reusable widget that can be used to build an expression string.
A widget which includes a line edit for entering expressions together with a button to open the expre...
A widget for configuration of a map extent.
A combobox which displays the list of fields of a given layer.
A widget for selection of layer fields or expression creation.
A widget for selecting a file or a folder.
QLineEdit subclass with built in support for clearing the widget's value and handling custom null val...
A widget for storing and interacting with a QgsGeometry object.
A QgsFilterLineEdit subclass with the ability to "highlight" the edges of the widget.
A combobox which displays available layouts from a QgsLayoutManager.
A combo box which displays items of a matching type from a layout.
A combobox which displays a dynamic list of layers from a QGIS project.
A combobox which displays the list of attributes of a given point cloud layer.
Print layout, a QgsLayout subclass for static or atlas-based layouts.
Abstract base class for widgets which allow users to specify the properties of a Processing parameter...
virtual void setWidgetContext(const QgsProcessingParameterWidgetContext &context)
Sets the context in which the Processing definition widget is shown, e.g., the parent model algorithm...
virtual QgsProcessingParameterDefinition * createParameter(const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags) const =0
Returns a new instance of a parameter definition, using the current settings defined in the dialog.
Abstract base class for processing algorithms.
Contains information about the context in which a processing algorithm is executed.
Base class for the definition of processing parameters.
An enum based parameter for processing algorithms, allowing for selection from predefined values.
Contains settings which reflect the context in which a Processing parameter widget is shown.
An interface for Processing widget wrapper factories.
A widget for selecting a projection.
A combo box which displays the list of connections registered for a given provider.
A combobox widget which displays the bands present in a raster layer.
Responsible for drawing transient features (e.g.
A combobox which lets the user select map scale from predefined list and highlights nearest to curren...
Shows a snapping marker on map canvas for the current snapping match.
A spin box with a clear button that will set the value to the defined clear value.
Definition qgsspinbox.h:45
A QTimeEdit widget with the capability of setting/reading null date/times.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
#define SIP_FACTORY
Definition qgis_sip.h:84