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