QGIS API Documentation 4.1.0-Master (d6fb7a379fb)
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 ~QgsProcessingPointPanel() override;
992 void setMapCanvas( QgsMapCanvas *canvas );
993 void setAllowNull( bool allowNull );
994 void setShowPointOnCanvas( bool show );
995 void setAllowSelectOnCanvas( bool allow );
996
997 QVariant value() const;
998 void clear();
999 void setValue( const QgsPointXY &point, const QgsCoordinateReferenceSystem &crs );
1000 void showEvent( QShowEvent *event ) override;
1001
1002 signals:
1003
1004 void toggleDialogVisibility( bool visible );
1005 void changed();
1006
1007 private slots:
1008
1009 void selectOnCanvas();
1010 void updatePoint( const QgsPointXY &point );
1011 void pointPicked();
1012 void textChanged( const QString &text );
1013
1014 private:
1015 void updateRubberBand();
1016
1017 QgsFilterLineEdit *mLineEdit = nullptr;
1018 bool mShowPointOnCanvas = false;
1019 bool mFirstShow = true;
1020 bool mAllowSelectOnCanvas = true;
1021 QToolButton *mButton = nullptr;
1022 QgsMapCanvas *mCanvas = nullptr;
1023 QgsCoordinateReferenceSystem mCrs;
1024 QPointer<QgsMapTool> mPrevTool;
1025 std::unique_ptr<QgsProcessingPointMapTool> mTool;
1026 QgsPointXY mPoint;
1027 QObjectUniquePtr<QgsRubberBand> mMapPointRubberBand;
1028 friend class TestProcessingGui;
1029};
1030
1031
1032class GUI_EXPORT QgsProcessingPointParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1033{
1034 Q_OBJECT
1035 public:
1036 QgsProcessingPointParameterDefinitionWidget(
1037 QgsProcessingContext &context,
1038 const QgsProcessingParameterWidgetContext &widgetContext,
1039 const QgsProcessingParameterDefinition *definition = nullptr,
1040 const QgsProcessingAlgorithm *algorithm = nullptr,
1041 QWidget *parent SIP_TRANSFERTHIS = nullptr
1042 );
1043 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1044
1045 private:
1046 QLineEdit *mDefaultLineEdit = nullptr;
1047};
1048
1049class GUI_EXPORT QgsProcessingPointWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1050{
1051 Q_OBJECT
1052
1053 public:
1054 QgsProcessingPointWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1055
1056 // QgsProcessingParameterWidgetFactoryInterface
1057 QString parameterType() const override;
1058 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1059 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1060 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1061 ) override;
1062
1063 // QgsProcessingParameterWidgetWrapper interface
1064 QWidget *createWidget() override SIP_FACTORY;
1065 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1066 void setDialog( QWidget *dialog ) override;
1067
1068 protected:
1069 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1070 QVariant widgetValue() const override;
1071
1072 QString modelerExpressionFormatString() const override;
1073
1074 private:
1075 QgsProcessingPointPanel *mPanel = nullptr;
1076 QLineEdit *mLineEdit = nullptr;
1077 QWidget *mDialog = nullptr;
1078
1079 friend class TestProcessingGui;
1080};
1081
1082class GUI_EXPORT QgsProcessingGeometryParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1083{
1084 Q_OBJECT
1085 public:
1086 QgsProcessingGeometryParameterDefinitionWidget(
1087 QgsProcessingContext &context,
1088 const QgsProcessingParameterWidgetContext &widgetContext,
1089 const QgsProcessingParameterDefinition *definition = nullptr,
1090 const QgsProcessingAlgorithm *algorithm = nullptr,
1091 QWidget *parent SIP_TRANSFERTHIS = nullptr
1092 );
1093 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1094
1095 private:
1096 QgsGeometryWidget *mGeometryWidget = nullptr;
1097};
1098
1099class GUI_EXPORT QgsProcessingGeometryWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1100{
1101 Q_OBJECT
1102
1103 public:
1104 QgsProcessingGeometryWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1105
1106 // QgsProcessingParameterWidgetFactoryInterface
1107 QString parameterType() const override;
1108 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1109 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1110 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1111 ) override;
1112
1113 // QgsProcessingParameterWidgetWrapper interface
1114 QWidget *createWidget() override SIP_FACTORY;
1115
1116 protected:
1117 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1118 QVariant widgetValue() const override;
1119
1120 QString modelerExpressionFormatString() const override;
1121
1122 private:
1123 QgsGeometryWidget *mGeometryWidget = nullptr;
1124
1125 friend class TestProcessingGui;
1126};
1127
1128class GUI_EXPORT QgsProcessingExtentParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1129{
1130 Q_OBJECT
1131 public:
1132 QgsProcessingExtentParameterDefinitionWidget(
1133 QgsProcessingContext &context,
1134 const QgsProcessingParameterWidgetContext &widgetContext,
1135 const QgsProcessingParameterDefinition *definition = nullptr,
1136 const QgsProcessingAlgorithm *algorithm = nullptr,
1137 QWidget *parent SIP_TRANSFERTHIS = nullptr
1138 );
1139 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1140
1141 private:
1142 QgsExtentWidget *mDefaultWidget = nullptr;
1143};
1144
1145class GUI_EXPORT QgsProcessingExtentWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1146{
1147 Q_OBJECT
1148
1149 public:
1150 QgsProcessingExtentWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1151
1152 // QgsProcessingParameterWidgetFactoryInterface
1153 QString parameterType() const override;
1154 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1155 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1156 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1157 ) override;
1158
1159 // QgsProcessingParameterWidgetWrapper interface
1160 QWidget *createWidget() override SIP_FACTORY;
1161 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1162 void setDialog( QWidget *dialog ) override;
1163
1164 protected:
1165 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1166 QVariant widgetValue() const override;
1167
1168 QString modelerExpressionFormatString() const override;
1169
1170 private:
1171 QgsExtentWidget *mExtentWidget = nullptr;
1172 QWidget *mDialog = nullptr;
1173
1174 friend class TestProcessingGui;
1175};
1176
1177class GUI_EXPORT QgsProcessingColorParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1178{
1179 Q_OBJECT
1180 public:
1181 QgsProcessingColorParameterDefinitionWidget(
1182 QgsProcessingContext &context,
1183 const QgsProcessingParameterWidgetContext &widgetContext,
1184 const QgsProcessingParameterDefinition *definition = nullptr,
1185 const QgsProcessingAlgorithm *algorithm = nullptr,
1186 QWidget *parent SIP_TRANSFERTHIS = nullptr
1187 );
1188 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1189
1190 private:
1191 QgsColorButton *mDefaultColorButton = nullptr;
1192 QCheckBox *mAllowOpacity = nullptr;
1193};
1194
1195class GUI_EXPORT QgsProcessingColorWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1196{
1197 Q_OBJECT
1198
1199 public:
1200 QgsProcessingColorWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1201
1202 // QgsProcessingParameterWidgetFactoryInterface
1203 QString parameterType() const override;
1204 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1205 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1206 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1207 ) override;
1208
1209 // QgsProcessingParameterWidgetWrapper interface
1210 QWidget *createWidget() override SIP_FACTORY;
1211
1212 protected:
1213 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1214 QVariant widgetValue() const override;
1215
1216 QString modelerExpressionFormatString() const override;
1217
1218 private:
1219 QgsColorButton *mColorButton = nullptr;
1220 friend class TestProcessingGui;
1221};
1222
1223
1224class GUI_EXPORT QgsProcessingCoordinateOperationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1225{
1226 Q_OBJECT
1227 public:
1228 QgsProcessingCoordinateOperationParameterDefinitionWidget(
1229 QgsProcessingContext &context,
1230 const QgsProcessingParameterWidgetContext &widgetContext,
1231 const QgsProcessingParameterDefinition *definition = nullptr,
1232 const QgsProcessingAlgorithm *algorithm = nullptr,
1233 QWidget *parent SIP_TRANSFERTHIS = nullptr
1234 );
1235 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1236
1237 private:
1238 QLineEdit *mDefaultLineEdit = nullptr;
1239
1240 QComboBox *mSourceParamComboBox = nullptr;
1241 QComboBox *mDestParamComboBox = nullptr;
1242
1243 QgsProjectionSelectionWidget *mStaticSourceWidget = nullptr;
1244 QgsProjectionSelectionWidget *mStaticDestWidget = nullptr;
1245};
1246
1247class GUI_EXPORT QgsProcessingCoordinateOperationWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1248{
1249 Q_OBJECT
1250
1251 public:
1252 QgsProcessingCoordinateOperationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1253
1254 // QgsProcessingParameterWidgetFactoryInterface
1255 QString parameterType() const override;
1256 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1257 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1258 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1259 ) override;
1260
1261 // QgsProcessingParameterWidgetWrapper interface
1262 QWidget *createWidget() override SIP_FACTORY;
1263 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1264 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1265
1266 protected:
1267 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1268 QVariant widgetValue() const override;
1269
1270 QString modelerExpressionFormatString() const override;
1271
1272 private:
1273 void setSourceCrsParameterValue( const QVariant &value );
1274 void setDestinationCrsParameterValue( const QVariant &value );
1275
1276 QgsCoordinateOperationWidget *mOperationWidget = nullptr;
1277 QgsMapCanvas *mCanvas = nullptr;
1278 QLineEdit *mLineEdit = nullptr;
1279 QgsCoordinateReferenceSystem mSourceCrs;
1280 QgsCoordinateReferenceSystem mDestCrs;
1281 friend class TestProcessingGui;
1282};
1283
1284class GUI_EXPORT QgsProcessingFieldPanelWidget : public QWidget
1285{
1286 Q_OBJECT
1287
1288 public:
1289 QgsProcessingFieldPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterField *param = nullptr );
1290
1291 void setFields( const QgsFields &fields );
1292
1293 QgsFields fields() const { return mFields; }
1294
1295 QVariant value() const { return mValue; }
1296 void setValue( const QVariant &value );
1297
1298 signals:
1299
1300 void changed();
1301
1302 private slots:
1303
1304 void showDialog();
1305
1306 private:
1307 void updateSummaryText();
1308
1309 QgsFields mFields;
1310
1311 const QgsProcessingParameterField *mParam = nullptr;
1312 QLineEdit *mLineEdit = nullptr;
1313 QToolButton *mToolButton = nullptr;
1314
1315 QVariantList mValue;
1316
1317 friend class TestProcessingGui;
1318};
1319
1320class GUI_EXPORT QgsProcessingFieldParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1321{
1322 Q_OBJECT
1323 public:
1324 QgsProcessingFieldParameterDefinitionWidget(
1325 QgsProcessingContext &context,
1326 const QgsProcessingParameterWidgetContext &widgetContext,
1327 const QgsProcessingParameterDefinition *definition = nullptr,
1328 const QgsProcessingAlgorithm *algorithm = nullptr,
1329 QWidget *parent SIP_TRANSFERTHIS = nullptr
1330 );
1331 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1332
1333 private:
1334 QComboBox *mParentLayerComboBox = nullptr;
1335 QComboBox *mDataTypeComboBox = nullptr;
1336 QLineEdit *mDefaultLineEdit = nullptr;
1337 QCheckBox *mAllowMultipleCheckBox = nullptr;
1338 QCheckBox *mDefaultToAllCheckBox = nullptr;
1339};
1340
1341class GUI_EXPORT QgsProcessingFieldWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1342{
1343 Q_OBJECT
1344
1345 public:
1346 QgsProcessingFieldWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1347
1348 // QgsProcessingParameterWidgetFactoryInterface
1349 QString parameterType() const override;
1350 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1351 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1352 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1353 ) override;
1354
1355 // QgsProcessingParameterWidgetWrapper interface
1356 QWidget *createWidget() override SIP_FACTORY;
1357 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1358
1359 public slots:
1360 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1361
1362 protected:
1363 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1364 QVariant widgetValue() const override;
1365
1366 QString modelerExpressionFormatString() const override;
1367 const QgsVectorLayer *linkedVectorLayer() const override;
1368
1369 private:
1370 QgsFieldComboBox *mComboBox = nullptr;
1371 QgsProcessingFieldPanelWidget *mPanel = nullptr;
1372 QLineEdit *mLineEdit = nullptr;
1373
1374 std::unique_ptr<QgsVectorLayer> mParentLayer;
1375
1376 QgsFields filterFields( const QgsFields &fields ) const;
1377
1378 friend class TestProcessingGui;
1379};
1380
1381
1382class GUI_EXPORT QgsProcessingMapThemeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1383{
1384 Q_OBJECT
1385 public:
1386 QgsProcessingMapThemeParameterDefinitionWidget(
1387 QgsProcessingContext &context,
1388 const QgsProcessingParameterWidgetContext &widgetContext,
1389 const QgsProcessingParameterDefinition *definition = nullptr,
1390 const QgsProcessingAlgorithm *algorithm = nullptr,
1391 QWidget *parent SIP_TRANSFERTHIS = nullptr
1392 );
1393 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1394
1395 private:
1396 QComboBox *mDefaultComboBox = nullptr;
1397};
1398
1399class GUI_EXPORT QgsProcessingMapThemeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1400{
1401 Q_OBJECT
1402
1403 public:
1404 QgsProcessingMapThemeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1405
1406 // QgsProcessingParameterWidgetFactoryInterface
1407 QString parameterType() const override;
1408 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1409 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1410 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1411 ) override;
1412
1413 // QgsProcessingParameterWidgetWrapper interface
1414 QWidget *createWidget() override SIP_FACTORY;
1415
1416 protected:
1417 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1418 QVariant widgetValue() const override;
1419
1420 QString modelerExpressionFormatString() const override;
1421
1422 private:
1423 QComboBox *mComboBox = nullptr;
1424
1425 friend class TestProcessingGui;
1426};
1427
1428
1429class GUI_EXPORT QgsProcessingDateTimeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1430{
1431 Q_OBJECT
1432 public:
1433 QgsProcessingDateTimeParameterDefinitionWidget(
1434 QgsProcessingContext &context,
1435 const QgsProcessingParameterWidgetContext &widgetContext,
1436 const QgsProcessingParameterDefinition *definition = nullptr,
1437 const QgsProcessingAlgorithm *algorithm = nullptr,
1438 QWidget *parent SIP_TRANSFERTHIS = nullptr
1439 );
1440 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1441
1442 private:
1443 QComboBox *mTypeComboBox = nullptr;
1444};
1445
1446class GUI_EXPORT QgsProcessingDateTimeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1447{
1448 Q_OBJECT
1449
1450 public:
1451 QgsProcessingDateTimeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1452
1453 // QgsProcessingParameterWidgetFactoryInterface
1454 QString parameterType() const override;
1455 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1456
1457 // QgsProcessingParameterWidgetWrapper interface
1458 QWidget *createWidget() override SIP_FACTORY;
1459 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1460 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1461 ) override;
1462
1463 protected:
1464 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1465 QVariant widgetValue() const override;
1466
1467 QString modelerExpressionFormatString() const override;
1468
1469 private:
1470 QgsDateTimeEdit *mDateTimeEdit = nullptr;
1471 QgsDateEdit *mDateEdit = nullptr;
1472 QgsTimeEdit *mTimeEdit = nullptr;
1473
1474 friend class TestProcessingGui;
1475};
1476
1477
1478//
1479// QgsProcessingProviderConnectionWidgetWrapper
1480//
1481
1482class GUI_EXPORT QgsProcessingProviderConnectionParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1483{
1484 Q_OBJECT
1485 public:
1486 QgsProcessingProviderConnectionParameterDefinitionWidget(
1487 QgsProcessingContext &context,
1488 const QgsProcessingParameterWidgetContext &widgetContext,
1489 const QgsProcessingParameterDefinition *definition = nullptr,
1490 const QgsProcessingAlgorithm *algorithm = nullptr,
1491 QWidget *parent SIP_TRANSFERTHIS = nullptr
1492 );
1493 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1494
1495 private:
1496 QComboBox *mProviderComboBox = nullptr;
1497 QLineEdit *mDefaultEdit = nullptr;
1498};
1499
1500class GUI_EXPORT QgsProcessingProviderConnectionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1501{
1502 Q_OBJECT
1503
1504 public:
1505 QgsProcessingProviderConnectionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1506
1507 // QgsProcessingParameterWidgetFactoryInterface
1508 QString parameterType() const override;
1509 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1510
1511
1512 // QgsProcessingParameterWidgetWrapper interface
1513 QWidget *createWidget() override SIP_FACTORY;
1514 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1515 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1516 ) override;
1517
1518 protected:
1519 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1520 QVariant widgetValue() const override;
1521
1522 QString modelerExpressionFormatString() const override;
1523
1524 private:
1525 QgsProviderConnectionComboBox *mProviderComboBox = nullptr;
1526 int mBlockSignals = 0;
1527
1528 friend class TestProcessingGui;
1529};
1530
1531
1532class GUI_EXPORT QgsProcessingDatabaseSchemaParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1533{
1534 Q_OBJECT
1535 public:
1536 QgsProcessingDatabaseSchemaParameterDefinitionWidget(
1537 QgsProcessingContext &context,
1538 const QgsProcessingParameterWidgetContext &widgetContext,
1539 const QgsProcessingParameterDefinition *definition = nullptr,
1540 const QgsProcessingAlgorithm *algorithm = nullptr,
1541 QWidget *parent SIP_TRANSFERTHIS = nullptr
1542 );
1543 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1544
1545 private:
1546 QComboBox *mConnectionParamComboBox = nullptr;
1547 QLineEdit *mDefaultEdit = nullptr;
1548};
1549
1550class GUI_EXPORT QgsProcessingDatabaseSchemaWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1551{
1552 Q_OBJECT
1553
1554 public:
1555 QgsProcessingDatabaseSchemaWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1556
1557 // QgsProcessingParameterWidgetFactoryInterface
1558 QString parameterType() const override;
1559 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1560 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1561
1562
1563 // QgsProcessingParameterWidgetWrapper interface
1564 QWidget *createWidget() override SIP_FACTORY;
1565 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1566 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1567 ) override;
1568
1569 public slots:
1570 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1571
1572 protected:
1573 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1574 QVariant widgetValue() const override;
1575
1576 QString modelerExpressionFormatString() const override;
1577
1578 private:
1579 QgsDatabaseSchemaComboBox *mSchemaComboBox = nullptr;
1580 int mBlockSignals = 0;
1581
1582 friend class TestProcessingGui;
1583};
1584
1585
1586class GUI_EXPORT QgsProcessingDatabaseTableParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1587{
1588 Q_OBJECT
1589 public:
1590 QgsProcessingDatabaseTableParameterDefinitionWidget(
1591 QgsProcessingContext &context,
1592 const QgsProcessingParameterWidgetContext &widgetContext,
1593 const QgsProcessingParameterDefinition *definition = nullptr,
1594 const QgsProcessingAlgorithm *algorithm = nullptr,
1595 QWidget *parent SIP_TRANSFERTHIS = nullptr
1596 );
1597 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1598
1599 private:
1600 QComboBox *mConnectionParamComboBox = nullptr;
1601 QComboBox *mSchemaParamComboBox = nullptr;
1602 QLineEdit *mDefaultEdit = nullptr;
1603};
1604
1605class GUI_EXPORT QgsProcessingDatabaseTableWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1606{
1607 Q_OBJECT
1608
1609 public:
1610 QgsProcessingDatabaseTableWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1611
1612 // QgsProcessingParameterWidgetFactoryInterface
1613 QString parameterType() const override;
1614 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1615 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1616
1617
1618 // QgsProcessingParameterWidgetWrapper interface
1619 QWidget *createWidget() override SIP_FACTORY;
1620 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1621 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1622 ) override;
1623
1624 public slots:
1625 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1626 void setParentSchemaWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1627
1628 protected:
1629 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1630 QVariant widgetValue() const override;
1631
1632 QString modelerExpressionFormatString() const override;
1633
1634 private:
1635 QgsDatabaseTableComboBox *mTableComboBox = nullptr;
1636 int mBlockSignals = 0;
1637 QString mConnection;
1638 QString mProvider;
1639 QString mSchema;
1640
1641 friend class TestProcessingGui;
1642};
1643
1644class GUI_EXPORT QgsProcessingMapLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1645{
1646 Q_OBJECT
1647 public:
1648 QgsProcessingMapLayerParameterDefinitionWidget(
1649 QgsProcessingContext &context,
1650 const QgsProcessingParameterWidgetContext &widgetContext,
1651 const QgsProcessingParameterDefinition *definition = nullptr,
1652 const QgsProcessingAlgorithm *algorithm = nullptr,
1653 QWidget *parent SIP_TRANSFERTHIS = nullptr
1654 );
1655 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1656
1657 private:
1658 QgsCheckableComboBox *mLayerTypeComboBox = nullptr;
1659};
1660
1661class GUI_EXPORT QgsProcessingMapLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1662{
1663 Q_OBJECT
1664
1665 public:
1666 QgsProcessingMapLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1667
1668 // QgsProcessingParameterWidgetFactoryInterface
1669 QString parameterType() const override;
1670 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1671 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1672 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1673 ) override;
1674
1675 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1676 // QgsProcessingParameterWidgetWrapper interface
1677 QWidget *createWidget() override SIP_FACTORY;
1678
1679 protected:
1680 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1681 QVariant widgetValue() const override;
1682
1683 QString modelerExpressionFormatString() const override;
1684 Qgis::ProcessingModelChildParameterSource defaultModelSource( const QgsProcessingParameterDefinition *parameter ) const override;
1685
1686 private:
1687 QPointer<QgsProcessingMapLayerComboBox> mComboBox;
1688 int mBlockSignals = 0;
1689
1690 friend class TestProcessingGui;
1691};
1692
1693
1694class GUI_EXPORT QgsProcessingRasterLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1695{
1696 Q_OBJECT
1697
1698 public:
1699 QgsProcessingRasterLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1700
1701 // QgsProcessingParameterWidgetFactoryInterface
1702 QString parameterType() const override;
1703 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1704 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1705 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1706 ) override;
1707
1708 protected:
1709 QString modelerExpressionFormatString() const override;
1710};
1711
1712
1713class GUI_EXPORT QgsProcessingVectorLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1714{
1715 Q_OBJECT
1716 public:
1717 QgsProcessingVectorLayerParameterDefinitionWidget(
1718 QgsProcessingContext &context,
1719 const QgsProcessingParameterWidgetContext &widgetContext,
1720 const QgsProcessingParameterDefinition *definition = nullptr,
1721 const QgsProcessingAlgorithm *algorithm = nullptr,
1722 QWidget *parent SIP_TRANSFERTHIS = nullptr
1723 );
1724 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1725
1726 private:
1727 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1728};
1729
1730class GUI_EXPORT QgsProcessingVectorLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1731{
1732 Q_OBJECT
1733
1734 public:
1735 QgsProcessingVectorLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1736
1737 // QgsProcessingParameterWidgetFactoryInterface
1738 QString parameterType() const override;
1739 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1740 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1741 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1742 ) override;
1743
1744 protected:
1745 QString modelerExpressionFormatString() const override;
1746};
1747
1748
1749class GUI_EXPORT QgsProcessingFeatureSourceParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1750{
1751 Q_OBJECT
1752 public:
1753 QgsProcessingFeatureSourceParameterDefinitionWidget(
1754 QgsProcessingContext &context,
1755 const QgsProcessingParameterWidgetContext &widgetContext,
1756 const QgsProcessingParameterDefinition *definition = nullptr,
1757 const QgsProcessingAlgorithm *algorithm = nullptr,
1758 QWidget *parent SIP_TRANSFERTHIS = nullptr
1759 );
1760 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1761
1762 private:
1763 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1764};
1765
1766class GUI_EXPORT QgsProcessingFeatureSourceWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1767{
1768 Q_OBJECT
1769
1770 public:
1771 QgsProcessingFeatureSourceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1772
1773 // QgsProcessingParameterWidgetFactoryInterface
1774 QString parameterType() const override;
1775 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1776 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1777 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1778 ) override;
1779
1780 protected:
1781 QString modelerExpressionFormatString() const override;
1782};
1783
1784
1785class GUI_EXPORT QgsProcessingMeshLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1786{
1787 Q_OBJECT
1788
1789 public:
1790 QgsProcessingMeshLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1791
1792 // QgsProcessingParameterWidgetFactoryInterface
1793 QString parameterType() const override;
1794 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1795 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1796 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1797 ) override;
1798
1799 protected:
1800 QString modelerExpressionFormatString() const override;
1801};
1802
1803
1804class GUI_EXPORT QgsProcessingRasterBandPanelWidget : public QWidget
1805{
1806 Q_OBJECT
1807
1808 public:
1809 QgsProcessingRasterBandPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterBand *param = nullptr );
1810
1811 void setBands( const QList<int> &bands );
1812 void setBandNames( const QHash<int, QString> &names );
1813 QList<int> bands() const { return mBands; }
1814
1815 QVariant value() const { return mValue; }
1816 void setValue( const QVariant &value );
1817
1818 signals:
1819
1820 void changed();
1821
1822 private slots:
1823
1824 void showDialog();
1825
1826 private:
1827 void updateSummaryText();
1828
1829 QList<int> mBands;
1830 QHash<int, QString> mBandNames;
1831
1832 const QgsProcessingParameterBand *mParam = nullptr;
1833 QLineEdit *mLineEdit = nullptr;
1834 QToolButton *mToolButton = nullptr;
1835
1836 QVariantList mValue;
1837
1838 friend class TestProcessingGui;
1839};
1840
1841class GUI_EXPORT QgsProcessingBandParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1842{
1843 Q_OBJECT
1844 public:
1845 QgsProcessingBandParameterDefinitionWidget(
1846 QgsProcessingContext &context,
1847 const QgsProcessingParameterWidgetContext &widgetContext,
1848 const QgsProcessingParameterDefinition *definition = nullptr,
1849 const QgsProcessingAlgorithm *algorithm = nullptr,
1850 QWidget *parent SIP_TRANSFERTHIS = nullptr
1851 );
1852 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1853
1854 private:
1855 QComboBox *mParentLayerComboBox = nullptr;
1856 QLineEdit *mDefaultLineEdit = nullptr;
1857 QCheckBox *mAllowMultipleCheckBox = nullptr;
1858};
1859
1860class GUI_EXPORT QgsProcessingBandWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1861{
1862 Q_OBJECT
1863
1864 public:
1865 QgsProcessingBandWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1866
1867 // QgsProcessingParameterWidgetFactoryInterface
1868 QString parameterType() const override;
1869 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1870 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1871 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1872 ) override;
1873
1874 // QgsProcessingParameterWidgetWrapper interface
1875 QWidget *createWidget() override SIP_FACTORY;
1876 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1877
1878 public slots:
1879 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1880
1881 protected:
1882 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1883 QVariant widgetValue() const override;
1884
1885 QString modelerExpressionFormatString() const override;
1886
1887 private:
1888 QgsRasterBandComboBox *mComboBox = nullptr;
1889 QgsProcessingRasterBandPanelWidget *mPanel = nullptr;
1890 QLineEdit *mLineEdit = nullptr;
1891
1892 std::unique_ptr<QgsRasterLayer> mParentLayer;
1893
1894 friend class TestProcessingGui;
1895};
1896
1897
1898class GUI_EXPORT QgsProcessingMultipleLayerLineEdit : public QgsHighlightableLineEdit
1899{
1900 Q_OBJECT
1901
1902 public:
1903 QgsProcessingMultipleLayerLineEdit( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1904 void dragEnterEvent( QDragEnterEvent *event ) override;
1905 void dragLeaveEvent( QDragLeaveEvent *event ) override;
1906 void dropEvent( QDropEvent *event ) override;
1907
1908 signals:
1909
1910 void layersDropped( const QVariantList &value );
1911
1912 private:
1913 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1914};
1915
1916class GUI_EXPORT QgsProcessingMultipleLayerPanelWidget : public QWidget
1917{
1918 Q_OBJECT
1919
1920 public:
1921 QgsProcessingMultipleLayerPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1922
1923 QVariant value() const { return mValue; }
1924 void setValue( const QVariant &value );
1925
1926 void setProject( QgsProject *project );
1927 void setModel( QgsProcessingModelAlgorithm *model, const QString &modelChildAlgorithmID );
1928
1929 signals:
1930
1931 void changed();
1932
1933 private slots:
1934
1935 void showDialog();
1936
1937 private:
1938 void updateSummaryText();
1939
1940 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1941 QgsProcessingMultipleLayerLineEdit *mLineEdit = nullptr;
1942 QToolButton *mToolButton = nullptr;
1943
1944 QVariantList mValue;
1945 QList<QgsProcessingModelChildParameterSource> mModelSources;
1946 QgsProcessingModelAlgorithm *mModel = nullptr;
1947
1948 QgsProject *mProject = nullptr;
1949
1950 friend class TestProcessingGui;
1951};
1952
1953class GUI_EXPORT QgsProcessingMultipleLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1954{
1955 Q_OBJECT
1956 public:
1957 QgsProcessingMultipleLayerParameterDefinitionWidget(
1958 QgsProcessingContext &context,
1959 const QgsProcessingParameterWidgetContext &widgetContext,
1960 const QgsProcessingParameterDefinition *definition = nullptr,
1961 const QgsProcessingAlgorithm *algorithm = nullptr,
1962 QWidget *parent SIP_TRANSFERTHIS = nullptr
1963 );
1964 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1965
1966 private:
1967 QComboBox *mLayerTypeComboBox = nullptr;
1968};
1969
1970class GUI_EXPORT QgsProcessingMultipleLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1971{
1972 Q_OBJECT
1973
1974 public:
1975 QgsProcessingMultipleLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1976
1977 // QgsProcessingParameterWidgetFactoryInterface
1978 QString parameterType() const override;
1979 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1980 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1981 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1982 ) override;
1983
1984 // QgsProcessingParameterWidgetWrapper interface
1985 QWidget *createWidget() override SIP_FACTORY;
1986 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1987
1988 protected:
1989 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1990 QVariant widgetValue() const override;
1991
1992 QString modelerExpressionFormatString() const override;
1993
1994 private:
1995 QgsProcessingMultipleLayerPanelWidget *mPanel = nullptr;
1996
1997 friend class TestProcessingGui;
1998};
1999
2000
2001class GUI_EXPORT QgsProcessingOutputWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2002{
2003 Q_OBJECT
2004
2005 public:
2006 QgsProcessingOutputWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2007
2008 // QgsProcessingParameterWidgetWrapper interface
2009 QWidget *createWidget() override SIP_FACTORY;
2010
2011 protected:
2012 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2013 QVariant widgetValue() const override;
2014 QVariantMap customProperties() const override;
2015
2016 private:
2017 QgsProcessingLayerOutputDestinationWidget *mOutputWidget = nullptr;
2018 int mBlockSignals = 0;
2019
2020 friend class TestProcessingGui;
2021};
2022
2023
2024class GUI_EXPORT QgsProcessingFeatureSinkWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2025{
2026 Q_OBJECT
2027
2028 public:
2029 QgsProcessingFeatureSinkWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2030
2031 // QgsProcessingParameterWidgetFactoryInterface
2032 QString parameterType() const override;
2033 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2034
2035 protected:
2036 QString modelerExpressionFormatString() const override;
2037
2038 private:
2039 QgsProcessingContext mContext;
2040};
2041
2042class GUI_EXPORT QgsProcessingVectorDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2043{
2044 Q_OBJECT
2045
2046 public:
2047 QgsProcessingVectorDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2048
2049 // QgsProcessingParameterWidgetFactoryInterface
2050 QString parameterType() const override;
2051 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2052
2053 protected:
2054 QString modelerExpressionFormatString() const override;
2055};
2056
2057class GUI_EXPORT QgsProcessingRasterDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2058{
2059 Q_OBJECT
2060
2061 public:
2062 QgsProcessingRasterDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2063
2064 // QgsProcessingParameterWidgetFactoryInterface
2065 QString parameterType() const override;
2066 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2067
2068 protected:
2069 QString modelerExpressionFormatString() const override;
2070};
2071
2072class GUI_EXPORT QgsProcessingPointCloudDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2073{
2074 Q_OBJECT
2075
2076 public:
2077 QgsProcessingPointCloudDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2078
2079 // QgsProcessingParameterWidgetFactoryInterface
2080 QString parameterType() const override;
2081 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2082
2083 protected:
2084 QString modelerExpressionFormatString() const override;
2085};
2086
2087class GUI_EXPORT QgsProcessingFileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2088{
2089 Q_OBJECT
2090
2091 public:
2092 QgsProcessingFileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2093
2094 // QgsProcessingParameterWidgetFactoryInterface
2095 QString parameterType() const override;
2096 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2097
2098 protected:
2099 QString modelerExpressionFormatString() const override;
2100};
2101
2102class GUI_EXPORT QgsProcessingFolderDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2103{
2104 Q_OBJECT
2105
2106 public:
2107 QgsProcessingFolderDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2108
2109 // QgsProcessingParameterWidgetFactoryInterface
2110 QString parameterType() const override;
2111 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2112
2113 protected:
2114 QString modelerExpressionFormatString() const override;
2115};
2116
2117class GUI_EXPORT QgsProcessingPointCloudLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
2118{
2119 Q_OBJECT
2120
2121 public:
2122 QgsProcessingPointCloudLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2123
2124 // QgsProcessingParameterWidgetFactoryInterface
2125 QString parameterType() const override;
2126 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2127 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2128 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2129 ) override;
2130
2131 protected:
2132 QString modelerExpressionFormatString() const override;
2133};
2134
2135
2136class GUI_EXPORT QgsProcessingAnnotationLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2137{
2138 Q_OBJECT
2139
2140 public:
2141 QgsProcessingAnnotationLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2142
2143 // QgsProcessingParameterWidgetFactoryInterface
2144 QString parameterType() const override;
2145 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2146 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2147 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2148 ) override;
2149 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2150
2151 QWidget *createWidget() override SIP_FACTORY;
2152
2153 protected:
2154 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2155 QVariant widgetValue() const override;
2156
2157 QString modelerExpressionFormatString() const override;
2158
2159 private:
2160 QPointer<QgsMapLayerComboBox> mComboBox;
2161 int mBlockSignals = 0;
2162
2163 friend class TestProcessingGui;
2164};
2165
2166
2167class GUI_EXPORT QgsProcessingPointCloudAttributePanelWidget : public QWidget
2168{
2169 Q_OBJECT
2170
2171 public:
2172 QgsProcessingPointCloudAttributePanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterPointCloudAttribute *param = nullptr );
2173
2174 void setAttributes( const QgsPointCloudAttributeCollection &attributes );
2175
2176 QgsPointCloudAttributeCollection attributes() const { return mAttributes; }
2177
2178 QVariant value() const { return mValue; }
2179 void setValue( const QVariant &value );
2180
2181 signals:
2182
2183 void changed();
2184
2185 private slots:
2186
2187 void showDialog();
2188
2189 private:
2190 void updateSummaryText();
2191
2192 QgsPointCloudAttributeCollection mAttributes;
2193
2194 const QgsProcessingParameterPointCloudAttribute *mParam = nullptr;
2195 QLineEdit *mLineEdit = nullptr;
2196 QToolButton *mToolButton = nullptr;
2197
2198 QVariantList mValue;
2199
2200 friend class TestProcessingGui;
2201};
2202
2203class GUI_EXPORT QgsProcessingPointCloudAttributeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2204{
2205 Q_OBJECT
2206 public:
2207 QgsProcessingPointCloudAttributeParameterDefinitionWidget(
2208 QgsProcessingContext &context,
2209 const QgsProcessingParameterWidgetContext &widgetContext,
2210 const QgsProcessingParameterDefinition *definition = nullptr,
2211 const QgsProcessingAlgorithm *algorithm = nullptr,
2212 QWidget *parent SIP_TRANSFERTHIS = nullptr
2213 );
2214 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2215
2216 private:
2217 QComboBox *mParentLayerComboBox = nullptr;
2218 QLineEdit *mDefaultLineEdit = nullptr;
2219 QCheckBox *mAllowMultipleCheckBox = nullptr;
2220 QCheckBox *mDefaultToAllCheckBox = nullptr;
2221};
2222
2223class GUI_EXPORT QgsProcessingPointCloudAttributeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2224{
2225 Q_OBJECT
2226
2227 public:
2228 QgsProcessingPointCloudAttributeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2229
2230 // QgsProcessingParameterWidgetFactoryInterface
2231 QString parameterType() const override;
2232 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2233 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2234 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2235 ) override;
2236
2237 // QgsProcessingParameterWidgetWrapper interface
2238 QWidget *createWidget() override SIP_FACTORY;
2239 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2240
2241 public slots:
2242 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2243
2244 protected:
2245 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2246 QVariant widgetValue() const override;
2247
2248 QString modelerExpressionFormatString() const override;
2249
2250 private:
2251 QgsPointCloudAttributeComboBox *mComboBox = nullptr;
2252 QgsProcessingPointCloudAttributePanelWidget *mPanel = nullptr;
2253 QLineEdit *mLineEdit = nullptr;
2254
2255 std::unique_ptr<QgsPointCloudLayer> mParentLayer;
2256
2257 friend class TestProcessingGui;
2258};
2259
2260class GUI_EXPORT QgsProcessingVectorTileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2261{
2262 Q_OBJECT
2263
2264 public:
2265 QgsProcessingVectorTileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2266
2267 // QgsProcessingParameterWidgetFactoryInterface
2268 QString parameterType() const override;
2269 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2270
2271 protected:
2272 QString modelerExpressionFormatString() const override;
2273};
2274
2276
2277#endif // QGSPROCESSINGWIDGETWRAPPERIMPL_H
ProcessingMode
Types of modes which Processing widgets can be created for.
Definition qgis.h:3853
@ Standard
Standard (single-run) algorithm mode.
Definition qgis.h:3854
QFlags< ProcessingParameterFlag > ProcessingParameterFlags
Flags which dictate the behavior of Processing parameters.
Definition qgis.h:3961
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