QGIS API Documentation 4.3.0-Master (0cfde48c85b)
Loading...
Searching...
No Matches
qgsprocessingwidgetwrapperimpl.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsprocessingwidgetwrapperimpl.h
3 ---------------------
4 begin : August 2018
5 copyright : (C) 2018 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18
19#ifndef QGSPROCESSINGWIDGETWRAPPERIMPL_H
20#define QGSPROCESSINGWIDGETWRAPPERIMPL_H
21
22#include "ui_qgsinterpolationsourcewidgetbase.h"
23#include "ui_qgsprocessingpixelsizewidgetbase.h"
24#include "ui_qgsprocessingreliefcolorswidgetbase.h"
25#include "ui_qgsprocessingtileextentmaxzoomwidgetbase.h"
26
28#include "qgsmaptool.h"
30#include "qgspointcloudlayer.h"
36#include "qgsrasterlayerutils.h"
37#include "qobjectuniqueptr.h"
38
39#include <QAbstractButton>
40
41#define SIP_NO_FILE
42
43class QCheckBox;
44class QComboBox;
45class QLineEdit;
46class QPlainTextEdit;
47class QToolButton;
48class QButtonGroup;
50class QgsSpinBox;
53class QgsProcessingMatrixParameterPanel;
54class QgsFileWidget;
61class QgsPrintLayout;
62class QgsScaleWidget;
65class QgsColorButton;
68class QgsDateTimeEdit;
69class QgsDateEdit;
70class QgsTimeEdit;
74class QgsExtentWidget;
75class QgsProcessingEnumModelerWidget;
76class QgsProcessingMatrixModelerWidget;
77class QgsProcessingMapLayerComboBox;
80class QgsProcessingLayerOutputDestinationWidget;
83class QgsProcessingPointCloudExpressionLineEdit;
84class QgsProcessingRasterCalculatorExpressionLineEdit;
85class QgsRubberBand;
88class QTreeWidgetItem;
89class QTreeWidget;
91
93
94class GUI_EXPORT QgsProcessingBooleanParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
95{
96 Q_OBJECT
97 public:
98 QgsProcessingBooleanParameterDefinitionWidget(
99 QgsProcessingContext &context,
100 const QgsProcessingParameterWidgetContext &widgetContext,
101 const QgsProcessingParameterDefinition *definition = nullptr,
102 const QgsProcessingAlgorithm *algorithm = nullptr,
103 QWidget *parent SIP_TRANSFERTHIS = nullptr
104 );
105 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
106
107 private:
108 QCheckBox *mDefaultCheckBox = nullptr;
109};
110
111class GUI_EXPORT QgsProcessingBooleanWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
112{
113 Q_OBJECT
114
115 public:
116 QgsProcessingBooleanWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
117
118 // QgsProcessingParameterWidgetFactoryInterface
119 QString parameterType() const override;
120 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
121 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
122 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
123 ) override;
124
125 // QgsProcessingParameterWidgetWrapper interface
126 QWidget *createWidget() override SIP_FACTORY;
127 QLabel *createLabel() override SIP_FACTORY;
128
129 protected:
130 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
131 QVariant widgetValue() const override;
132
133 private:
134 QCheckBox *mCheckBox = nullptr;
135 QComboBox *mComboBox = nullptr;
136
137 friend class TestProcessingGui;
138};
139
140
141class GUI_EXPORT QgsProcessingCrsParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
142{
143 Q_OBJECT
144 public:
145 QgsProcessingCrsParameterDefinitionWidget(
146 QgsProcessingContext &context,
147 const QgsProcessingParameterWidgetContext &widgetContext,
148 const QgsProcessingParameterDefinition *definition = nullptr,
149 const QgsProcessingAlgorithm *algorithm = nullptr,
150 QWidget *parent SIP_TRANSFERTHIS = nullptr
151 );
152 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
153
154 private:
155 QgsProjectionSelectionWidget *mCrsSelector = nullptr;
156};
157
158class GUI_EXPORT QgsProcessingCrsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
159{
160 Q_OBJECT
161
162 public:
163 QgsProcessingCrsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
164
165 // QgsProcessingParameterWidgetFactoryInterface
166 QString parameterType() const override;
167 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
168 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
169 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
170 ) override;
171
172 // QgsProcessingParameterWidgetWrapper interface
173 QWidget *createWidget() override SIP_FACTORY;
174
175 protected:
176 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
177 QVariant widgetValue() const override;
178
179 QString modelerExpressionFormatString() const override;
180
181 private:
182 QgsProjectionSelectionWidget *mProjectionSelectionWidget = nullptr;
183 QCheckBox *mUseProjectCrsCheckBox = nullptr;
184
185 friend class TestProcessingGui;
186};
187
188
189class GUI_EXPORT QgsProcessingStringParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
190{
191 Q_OBJECT
192 public:
193 QgsProcessingStringParameterDefinitionWidget(
194 QgsProcessingContext &context,
195 const QgsProcessingParameterWidgetContext &widgetContext,
196 const QgsProcessingParameterDefinition *definition = nullptr,
197 const QgsProcessingAlgorithm *algorithm = nullptr,
198 QWidget *parent SIP_TRANSFERTHIS = nullptr
199 );
200 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
201
202 private:
203 QLineEdit *mDefaultLineEdit = nullptr;
204 QCheckBox *mMultiLineCheckBox = nullptr;
205};
206
207class GUI_EXPORT QgsProcessingStringWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
208{
209 Q_OBJECT
210
211 public:
212 QgsProcessingStringWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
213
214 // QgsProcessingParameterWidgetFactoryInterface
215 QString parameterType() const override;
216 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
217 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
218 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
219 ) override;
220
221 // QgsProcessingParameterWidgetWrapper interface
222 QWidget *createWidget() override SIP_FACTORY;
223
224 protected:
225 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
226 QVariant widgetValue() const override;
227
228 private:
229 QLineEdit *mLineEdit = nullptr;
230 QComboBox *mComboBox = nullptr;
231 QPlainTextEdit *mPlainTextEdit = nullptr;
232
233 friend class TestProcessingGui;
234};
235
236
237class GUI_EXPORT QgsProcessingAuthConfigWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
238{
239 Q_OBJECT
240
241 public:
242 QgsProcessingAuthConfigWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
243
244 // QgsProcessingParameterWidgetFactoryInterface
245 QString parameterType() const override;
246 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
247
248 // QgsProcessingParameterWidgetWrapper interface
249 QWidget *createWidget() override SIP_FACTORY;
250
251 protected:
252 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
253 QVariant widgetValue() const override;
254
255 private:
256 QgsAuthConfigSelect *mAuthConfigSelect = nullptr;
257
258 friend class TestProcessingGui;
259};
260
261
262class GUI_EXPORT QgsProcessingNumberParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
263{
264 Q_OBJECT
265 public:
266 QgsProcessingNumberParameterDefinitionWidget(
267 QgsProcessingContext &context,
268 const QgsProcessingParameterWidgetContext &widgetContext,
269 const QgsProcessingParameterDefinition *definition = nullptr,
270 const QgsProcessingAlgorithm *algorithm = nullptr,
271 QWidget *parent SIP_TRANSFERTHIS = nullptr
272 );
273 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
274
275 private:
276 QComboBox *mTypeComboBox = nullptr;
277 QLineEdit *mMinLineEdit = nullptr;
278 QLineEdit *mMaxLineEdit = nullptr;
279 QLineEdit *mDefaultLineEdit = nullptr;
280};
281
282
283class GUI_EXPORT QgsProcessingNumericWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
284{
285 Q_OBJECT
286
287 public:
288 QgsProcessingNumericWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
289
290 // QgsProcessingParameterWidgetFactoryInterface
291 QString parameterType() const override;
292 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
293 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
294 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
295 ) override;
296
297 // QgsProcessingParameterWidgetWrapper interface
298 QWidget *createWidget() override SIP_FACTORY;
299
300 protected:
301 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
302 QVariant widgetValue() const override;
303
304 protected:
305 QgsSpinBox *mSpinBox = nullptr;
306 QgsDoubleSpinBox *mDoubleSpinBox = nullptr;
307
308 private:
309 static double calculateStep( double minimum, double maximum );
310
311 bool mAllowingNull = false;
312
313 friend class TestProcessingGui;
314};
315
316
317class GUI_EXPORT QgsProcessingDistanceParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
318{
319 Q_OBJECT
320 public:
321 QgsProcessingDistanceParameterDefinitionWidget(
322 QgsProcessingContext &context,
323 const QgsProcessingParameterWidgetContext &widgetContext,
324 const QgsProcessingParameterDefinition *definition = nullptr,
325 const QgsProcessingAlgorithm *algorithm = nullptr,
326 QWidget *parent SIP_TRANSFERTHIS = nullptr
327 );
328 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
329
330 private:
331 QComboBox *mParentLayerComboBox = nullptr;
332 QLineEdit *mMinLineEdit = nullptr;
333 QLineEdit *mMaxLineEdit = nullptr;
334 QLineEdit *mDefaultLineEdit = nullptr;
335};
336
337class GUI_EXPORT QgsProcessingDistanceWidgetWrapper : public QgsProcessingNumericWidgetWrapper
338{
339 Q_OBJECT
340
341 public:
342 QgsProcessingDistanceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
343
344 // QgsProcessingParameterWidgetFactoryInterface
345 QString parameterType() const override;
346 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
347 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
348 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
349 ) override;
350
351 // QgsProcessingParameterWidgetWrapper interface
352 QWidget *createWidget() override SIP_FACTORY;
353 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
354
355 public slots:
356 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
357 void setUnits( Qgis::DistanceUnit unit );
358
359 protected:
360 QVariant widgetValue() const override;
361
362 private:
363 Qgis::DistanceUnit mBaseUnit = Qgis::DistanceUnit::Unknown;
364 QLabel *mLabel = nullptr;
365 QWidget *mWarningLabel = nullptr;
366 QComboBox *mUnitsCombo = nullptr;
367
368 friend class TestProcessingGui;
369};
370
371class GUI_EXPORT QgsProcessingAreaParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
372{
373 Q_OBJECT
374 public:
375 QgsProcessingAreaParameterDefinitionWidget(
376 QgsProcessingContext &context,
377 const QgsProcessingParameterWidgetContext &widgetContext,
378 const QgsProcessingParameterDefinition *definition = nullptr,
379 const QgsProcessingAlgorithm *algorithm = nullptr,
380 QWidget *parent SIP_TRANSFERTHIS = nullptr
381 );
382 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
383
384 private:
385 QComboBox *mParentLayerComboBox = nullptr;
386 QLineEdit *mMinLineEdit = nullptr;
387 QLineEdit *mMaxLineEdit = nullptr;
388 QLineEdit *mDefaultLineEdit = nullptr;
389};
390
391class GUI_EXPORT QgsProcessingAreaWidgetWrapper : public QgsProcessingNumericWidgetWrapper
392{
393 Q_OBJECT
394
395 public:
396 QgsProcessingAreaWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
397
398 // QgsProcessingParameterWidgetFactoryInterface
399 QString parameterType() const override;
400 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
401 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
402 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
403 ) override;
404
405 // QgsProcessingParameterWidgetWrapper interface
406 QWidget *createWidget() override SIP_FACTORY;
407 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
408
409 public slots:
410 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
411 void setUnits( Qgis::AreaUnit unit );
412
413 protected:
414 QVariant widgetValue() const override;
415
416 private:
417 Qgis::AreaUnit mBaseUnit = Qgis::AreaUnit::Unknown;
418 QLabel *mLabel = nullptr;
419 QWidget *mWarningLabel = nullptr;
420 QComboBox *mUnitsCombo = nullptr;
421
422 friend class TestProcessingGui;
423};
424
425
426class GUI_EXPORT QgsProcessingVolumeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
427{
428 Q_OBJECT
429 public:
430 QgsProcessingVolumeParameterDefinitionWidget(
431 QgsProcessingContext &context,
432 const QgsProcessingParameterWidgetContext &widgetContext,
433 const QgsProcessingParameterDefinition *definition = nullptr,
434 const QgsProcessingAlgorithm *algorithm = nullptr,
435 QWidget *parent SIP_TRANSFERTHIS = nullptr
436 );
437 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
438
439 private:
440 QComboBox *mParentLayerComboBox = nullptr;
441 QLineEdit *mMinLineEdit = nullptr;
442 QLineEdit *mMaxLineEdit = nullptr;
443 QLineEdit *mDefaultLineEdit = nullptr;
444};
445
446class GUI_EXPORT QgsProcessingVolumeWidgetWrapper : public QgsProcessingNumericWidgetWrapper
447{
448 Q_OBJECT
449
450 public:
451 QgsProcessingVolumeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
452
453 // QgsProcessingParameterWidgetFactoryInterface
454 QString parameterType() const override;
455 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
456 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
457 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
458 ) override;
459
460 // QgsProcessingParameterWidgetWrapper interface
461 QWidget *createWidget() override SIP_FACTORY;
462 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
463
464 public slots:
465 void setUnitParameterValue( const QVariant &value, const QgsAbstractProcessingParameterWidgetWrapper *unitParameterWrapper = nullptr );
466 void setUnits( Qgis::VolumeUnit unit );
467
468 protected:
469 QVariant widgetValue() const override;
470
471 private:
472 Qgis::VolumeUnit mBaseUnit = Qgis::VolumeUnit::Unknown;
473 QLabel *mLabel = nullptr;
474 QWidget *mWarningLabel = nullptr;
475 QComboBox *mUnitsCombo = nullptr;
476
477 friend class TestProcessingGui;
478};
479
480
481class GUI_EXPORT QgsProcessingDurationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
482{
483 Q_OBJECT
484 public:
485 QgsProcessingDurationParameterDefinitionWidget(
486 QgsProcessingContext &context,
487 const QgsProcessingParameterWidgetContext &widgetContext,
488 const QgsProcessingParameterDefinition *definition = nullptr,
489 const QgsProcessingAlgorithm *algorithm = nullptr,
490 QWidget *parent SIP_TRANSFERTHIS = nullptr
491 );
492 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
493
494 private:
495 QLineEdit *mMinLineEdit = nullptr;
496 QLineEdit *mMaxLineEdit = nullptr;
497 QLineEdit *mDefaultLineEdit = nullptr;
498 QComboBox *mUnitsCombo = nullptr;
499};
500
501class GUI_EXPORT QgsProcessingDurationWidgetWrapper : public QgsProcessingNumericWidgetWrapper
502{
503 Q_OBJECT
504
505 public:
506 QgsProcessingDurationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
507
508 // QgsProcessingParameterWidgetFactoryInterface
509 QString parameterType() const override;
510 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
511 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
512 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
513 ) override;
514
515 // QgsProcessingParameterWidgetWrapper interface
516 QWidget *createWidget() override SIP_FACTORY;
517 QLabel *createLabel() override SIP_FACTORY;
518
519 protected:
520 QVariant widgetValue() const override;
521 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
522
523 private:
524 Qgis::TemporalUnit mBaseUnit = Qgis::TemporalUnit::Milliseconds;
525 QComboBox *mUnitsCombo = nullptr;
526
527 friend class TestProcessingGui;
528};
529
530class GUI_EXPORT QgsProcessingScaleParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
531{
532 Q_OBJECT
533 public:
534 QgsProcessingScaleParameterDefinitionWidget(
535 QgsProcessingContext &context,
536 const QgsProcessingParameterWidgetContext &widgetContext,
537 const QgsProcessingParameterDefinition *definition = nullptr,
538 const QgsProcessingAlgorithm *algorithm = nullptr,
539 QWidget *parent SIP_TRANSFERTHIS = nullptr
540 );
541 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
542
543 private:
544 QLineEdit *mDefaultLineEdit = nullptr;
545};
546
547class GUI_EXPORT QgsProcessingScaleWidgetWrapper : public QgsProcessingNumericWidgetWrapper
548{
549 Q_OBJECT
550
551 public:
552 QgsProcessingScaleWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
553
554 // QgsProcessingParameterWidgetFactoryInterface
555 QString parameterType() const override;
556 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
557 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
558 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
559 ) override;
560
561 // QgsProcessingParameterWidgetWrapper interface
562 QWidget *createWidget() override SIP_FACTORY;
563 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
564
565 protected:
566 QVariant widgetValue() const override;
567 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
568
569 private:
570 QgsScaleWidget *mScaleWidget = nullptr;
571
572 friend class TestProcessingGui;
573};
574
575
576class GUI_EXPORT QgsProcessingRangeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
577{
578 Q_OBJECT
579 public:
580 QgsProcessingRangeParameterDefinitionWidget(
581 QgsProcessingContext &context,
582 const QgsProcessingParameterWidgetContext &widgetContext,
583 const QgsProcessingParameterDefinition *definition = nullptr,
584 const QgsProcessingAlgorithm *algorithm = nullptr,
585 QWidget *parent SIP_TRANSFERTHIS = nullptr
586 );
587 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
588
589 private:
590 QComboBox *mTypeComboBox = nullptr;
591 QLineEdit *mMinLineEdit = nullptr;
592 QLineEdit *mMaxLineEdit = nullptr;
593};
594
595class GUI_EXPORT QgsProcessingRangeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
596{
597 Q_OBJECT
598
599 public:
600 QgsProcessingRangeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
601
602 // QgsProcessingParameterWidgetFactoryInterface
603 QString parameterType() const override;
604 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
605 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
606 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
607 ) override;
608
609 // QgsProcessingParameterWidgetWrapper interface
610 QWidget *createWidget() override SIP_FACTORY;
611
612 protected:
613 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
614 QVariant widgetValue() const override;
615 QString modelerExpressionFormatString() const override;
616
617 protected:
618 QgsDoubleSpinBox *mMinSpinBox = nullptr;
619 QgsDoubleSpinBox *mMaxSpinBox = nullptr;
620
621 private:
622 int mBlockChangedSignal = 0;
623 bool mAllowingNull = false;
624
625 friend class TestProcessingGui;
626};
627
628class GUI_EXPORT QgsProcessingMatrixParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
629{
630 Q_OBJECT
631 public:
632 QgsProcessingMatrixParameterDefinitionWidget(
633 QgsProcessingContext &context,
634 const QgsProcessingParameterWidgetContext &widgetContext,
635 const QgsProcessingParameterDefinition *definition = nullptr,
636 const QgsProcessingAlgorithm *algorithm = nullptr,
637 QWidget *parent SIP_TRANSFERTHIS = nullptr
638 );
639 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
640
641 private:
642 QgsProcessingMatrixModelerWidget *mMatrixWidget = nullptr;
643};
644
645class GUI_EXPORT QgsProcessingMatrixWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
646{
647 Q_OBJECT
648
649 public:
650 QgsProcessingMatrixWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
651
652 // QgsProcessingParameterWidgetFactoryInterface
653 QString parameterType() const override;
654 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
655 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
656 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
657 ) override;
658
659 // QgsProcessingParameterWidgetWrapper interface
660 QWidget *createWidget() override SIP_FACTORY;
661
662 protected:
663 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
664 QVariant widgetValue() const override;
665
666 QString modelerExpressionFormatString() const override;
667
668 private:
669 QgsProcessingMatrixParameterPanel *mMatrixWidget = nullptr;
670
671 friend class TestProcessingGui;
672};
673
674class GUI_EXPORT QgsProcessingFileParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
675{
676 Q_OBJECT
677 public:
678 QgsProcessingFileParameterDefinitionWidget(
679 QgsProcessingContext &context,
680 const QgsProcessingParameterWidgetContext &widgetContext,
681 const QgsProcessingParameterDefinition *definition = nullptr,
682 const QgsProcessingAlgorithm *algorithm = nullptr,
683 QWidget *parent SIP_TRANSFERTHIS = nullptr
684 );
685 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
686
687 private:
688 QComboBox *mTypeComboBox = nullptr;
689 QComboBox *mFilterComboBox = nullptr;
690 QgsFileWidget *mDefaultFileWidget = nullptr;
691};
692
693class GUI_EXPORT QgsProcessingFileWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
694{
695 Q_OBJECT
696
697 public:
698 QgsProcessingFileWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
699
700 // QgsProcessingParameterWidgetFactoryInterface
701 QString parameterType() const override;
702 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
703 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
704 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
705 ) override;
706
707 // QgsProcessingParameterWidgetWrapper interface
708 QWidget *createWidget() override SIP_FACTORY;
709
710 protected:
711 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
712 QVariant widgetValue() const override;
713
714 QString modelerExpressionFormatString() const override;
715
716 private:
717 QgsFileWidget *mFileWidget = nullptr;
718
719 friend class TestProcessingGui;
720};
721
722
723class GUI_EXPORT QgsProcessingExpressionParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
724{
725 Q_OBJECT
726 public:
727 QgsProcessingExpressionParameterDefinitionWidget(
728 QgsProcessingContext &context,
729 const QgsProcessingParameterWidgetContext &widgetContext,
730 const QgsProcessingParameterDefinition *definition = nullptr,
731 const QgsProcessingAlgorithm *algorithm = nullptr,
732 QWidget *parent SIP_TRANSFERTHIS = nullptr
733 );
734 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
735
736 private:
737 QComboBox *mParentLayerComboBox = nullptr;
738 QgsExpressionLineEdit *mDefaultQgisLineEdit = nullptr;
739 QgsProcessingPointCloudExpressionLineEdit *mDefaultPointCloudLineEdit = nullptr;
740 QgsProcessingRasterCalculatorExpressionLineEdit *mDefaultRasterCalculatorLineEdit = nullptr;
741 QComboBox *mExpressionTypeComboBox = nullptr;
742};
743
744class GUI_EXPORT QgsProcessingExpressionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
745{
746 Q_OBJECT
747
748 public:
749 QgsProcessingExpressionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
750
751 // QgsProcessingParameterWidgetFactoryInterface
752 QString parameterType() const override;
753 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
754 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
755 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
756 ) override;
757
758 // QgsProcessingParameterWidgetWrapper interface
759 QWidget *createWidget() override SIP_FACTORY;
760 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
761 void registerProcessingContextGenerator( QgsProcessingContextGenerator *generator ) override;
762
763 public slots:
764 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
765
766 protected:
767 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
768 QVariant widgetValue() const override;
769
770 QString modelerExpressionFormatString() const override;
771 const QgsVectorLayer *linkedVectorLayer() const override;
772
773 private:
774 QgsFieldExpressionWidget *mFieldExpWidget = nullptr;
775 QgsExpressionBuilderWidget *mExpBuilderWidget = nullptr;
776 QgsExpressionLineEdit *mExpLineEdit = nullptr;
777 QgsProcessingPointCloudExpressionLineEdit *mPointCloudExpLineEdit = nullptr;
778 QgsProcessingRasterCalculatorExpressionLineEdit *mRasterCalculatorExpLineEdit = nullptr;
779 std::unique_ptr<QgsMapLayer> mParentLayer;
780
781 friend class TestProcessingGui;
782};
783
784
785class GUI_EXPORT QgsProcessingEnumCheckboxPanelWidget : public QWidget
786{
787 Q_OBJECT
788
789 public:
790 QgsProcessingEnumCheckboxPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr, int columns = 2 );
791 QVariant value() const;
792 void setValue( const QVariant &value );
793
794 signals:
795
796 void changed();
797
798 private slots:
799
800 void showPopupMenu();
801 void selectAll();
802 void deselectAll();
803
804 private:
805 const QgsProcessingParameterEnum *mParam = nullptr;
806 QMap<QVariant, QAbstractButton *> mButtons;
807 QButtonGroup *mButtonGroup = nullptr;
808 int mColumns = 2;
809 bool mBlockChangedSignal = false;
810
811 friend class TestProcessingGui;
812};
813
814class GUI_EXPORT QgsProcessingEnumPanelWidget : public QWidget
815{
816 Q_OBJECT
817
818 public:
819 QgsProcessingEnumPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr );
820 QVariant value() const { return mValue; }
821 void setValue( const QVariant &value );
822
823 signals:
824
825 void changed();
826
827 private slots:
828
829 void showDialog();
830
831 private:
832 void updateSummaryText();
833
834 const QgsProcessingParameterEnum *mParam = nullptr;
835 QLineEdit *mLineEdit = nullptr;
836 QToolButton *mToolButton = nullptr;
837
838 QVariantList mValue;
839
840 friend class TestProcessingGui;
841};
842
843class GUI_EXPORT QgsProcessingEnumParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
844{
845 Q_OBJECT
846 public:
847 QgsProcessingEnumParameterDefinitionWidget(
848 QgsProcessingContext &context,
849 const QgsProcessingParameterWidgetContext &widgetContext,
850 const QgsProcessingParameterDefinition *definition = nullptr,
851 const QgsProcessingAlgorithm *algorithm = nullptr,
852 QWidget *parent SIP_TRANSFERTHIS = nullptr
853 );
854 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
855
856 private:
857 QgsProcessingEnumModelerWidget *mEnumWidget = nullptr;
858};
859
860class GUI_EXPORT QgsProcessingEnumWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
861{
862 Q_OBJECT
863
864 public:
865 QgsProcessingEnumWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
866
867 // QgsProcessingParameterWidgetFactoryInterface
868 QString parameterType() const override;
869 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
870 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
871 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
872 ) override;
873
874 // QgsProcessingParameterWidgetWrapper interface
875 QWidget *createWidget() override SIP_FACTORY;
876
877 protected:
878 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
879 QVariant widgetValue() const override;
880
881 QString modelerExpressionFormatString() const override;
882
883 private:
884 QComboBox *mComboBox = nullptr;
885 QgsProcessingEnumPanelWidget *mPanel = nullptr;
886 QgsProcessingEnumCheckboxPanelWidget *mCheckboxPanel = nullptr;
887
888 friend class TestProcessingGui;
889};
890
891
892class GUI_EXPORT QgsProcessingLayoutWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
893{
894 Q_OBJECT
895
896 public:
897 QgsProcessingLayoutWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
898
899 // QgsProcessingParameterWidgetFactoryInterface
900 QString parameterType() const override;
901 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
902
903 // QgsProcessingParameterWidgetWrapper interface
904 QWidget *createWidget() override SIP_FACTORY;
905
906 protected:
907 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
908 QVariant widgetValue() const override;
909 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
910
911 QString modelerExpressionFormatString() const override;
912
913 private:
914 QgsLayoutComboBox *mComboBox = nullptr;
915 QComboBox *mPlainComboBox = nullptr;
916
917 friend class TestProcessingGui;
918};
919
920
921class GUI_EXPORT QgsProcessingLayoutItemParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
922{
923 Q_OBJECT
924 public:
925 QgsProcessingLayoutItemParameterDefinitionWidget(
926 QgsProcessingContext &context,
927 const QgsProcessingParameterWidgetContext &widgetContext,
928 const QgsProcessingParameterDefinition *definition = nullptr,
929 const QgsProcessingAlgorithm *algorithm = nullptr,
930 QWidget *parent SIP_TRANSFERTHIS = nullptr
931 );
932 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
933
934 private:
935 QComboBox *mParentLayoutComboBox = nullptr;
936};
937
938class GUI_EXPORT QgsProcessingLayoutItemWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
939{
940 Q_OBJECT
941
942 public:
943 QgsProcessingLayoutItemWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
944
945 // QgsProcessingParameterWidgetFactoryInterface
946 QString parameterType() const override;
947 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
948 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
949 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
950 ) override;
951
952 // QgsProcessingParameterWidgetWrapper interface
953 QWidget *createWidget() override SIP_FACTORY;
954 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
955
956
957 public slots:
958 void setLayoutParameterValue( const QVariant &value );
959 void setLayout( QgsPrintLayout *layout );
960
961 protected:
962 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
963 QVariant widgetValue() const override;
964
965 QString modelerExpressionFormatString() const override;
966
967 private:
968 QgsLayoutItemComboBox *mComboBox = nullptr;
969 QLineEdit *mLineEdit = nullptr;
970
971 friend class TestProcessingGui;
972};
973
974class GUI_EXPORT QgsProcessingPointMapTool : public QgsMapTool
975{
976 Q_OBJECT
977 public:
978 QgsProcessingPointMapTool( QgsMapCanvas *canvas );
979 ~QgsProcessingPointMapTool() override;
980 void deactivate() override;
981 void canvasMoveEvent( QgsMapMouseEvent *e ) override;
982 void canvasPressEvent( QgsMapMouseEvent *e ) override;
983 void keyPressEvent( QKeyEvent *e ) override;
984
985 signals:
986
987 void clicked( const QgsPointXY &point );
988 void complete();
989
990 private:
991 std::unique_ptr<QgsSnapIndicator> mSnapIndicator;
992 friend class TestProcessingGui;
993};
994
995class GUI_EXPORT QgsProcessingPointPanel : public QWidget
996{
997 Q_OBJECT
998
999 public:
1000 QgsProcessingPointPanel( QWidget *parent );
1001 ~QgsProcessingPointPanel() override;
1002 void setMapCanvas( QgsMapCanvas *canvas );
1003 void setAllowNull( bool allowNull );
1004 void setShowPointOnCanvas( bool show );
1005 void setAllowSelectOnCanvas( bool allow );
1006
1007 QVariant value() const;
1008 void clear();
1009 void setValue( const QgsPointXY &point, const QgsCoordinateReferenceSystem &crs );
1010 void showEvent( QShowEvent *event ) override;
1011
1012 signals:
1013
1014 void toggleDialogVisibility( bool visible );
1015 void changed();
1016
1017 private slots:
1018
1019 void selectOnCanvas();
1020 void updatePoint( const QgsPointXY &point );
1021 void pointPicked();
1022 void textChanged( const QString &text );
1023
1024 private:
1025 void updateRubberBand();
1026
1027 QgsFilterLineEdit *mLineEdit = nullptr;
1028 bool mShowPointOnCanvas = false;
1029 bool mFirstShow = true;
1030 bool mAllowSelectOnCanvas = true;
1031 QToolButton *mButton = nullptr;
1032 QgsMapCanvas *mCanvas = nullptr;
1033 QgsCoordinateReferenceSystem mCrs;
1034 QPointer<QgsMapTool> mPrevTool;
1035 std::unique_ptr<QgsProcessingPointMapTool> mTool;
1036 QgsPointXY mPoint;
1037 QObjectUniquePtr<QgsRubberBand> mMapPointRubberBand;
1038 friend class TestProcessingGui;
1039};
1040
1041
1042class GUI_EXPORT QgsProcessingPointParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1043{
1044 Q_OBJECT
1045 public:
1046 QgsProcessingPointParameterDefinitionWidget(
1047 QgsProcessingContext &context,
1048 const QgsProcessingParameterWidgetContext &widgetContext,
1049 const QgsProcessingParameterDefinition *definition = nullptr,
1050 const QgsProcessingAlgorithm *algorithm = nullptr,
1051 QWidget *parent SIP_TRANSFERTHIS = nullptr
1052 );
1053 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1054
1055 private:
1056 QLineEdit *mDefaultLineEdit = nullptr;
1057};
1058
1059class GUI_EXPORT QgsProcessingPointWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1060{
1061 Q_OBJECT
1062
1063 public:
1064 QgsProcessingPointWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1065
1066 // QgsProcessingParameterWidgetFactoryInterface
1067 QString parameterType() const override;
1068 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1069 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1070 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1071 ) override;
1072
1073 // QgsProcessingParameterWidgetWrapper interface
1074 QWidget *createWidget() override SIP_FACTORY;
1075 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1076 void setDialog( QWidget *dialog ) override;
1077
1078 protected:
1079 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1080 QVariant widgetValue() const override;
1081
1082 QString modelerExpressionFormatString() const override;
1083
1084 private:
1085 QgsProcessingPointPanel *mPanel = nullptr;
1086 QLineEdit *mLineEdit = nullptr;
1087 QWidget *mDialog = nullptr;
1088
1089 friend class TestProcessingGui;
1090};
1091
1092class GUI_EXPORT QgsProcessingGeometryParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1093{
1094 Q_OBJECT
1095 public:
1096 QgsProcessingGeometryParameterDefinitionWidget(
1097 QgsProcessingContext &context,
1098 const QgsProcessingParameterWidgetContext &widgetContext,
1099 const QgsProcessingParameterDefinition *definition = nullptr,
1100 const QgsProcessingAlgorithm *algorithm = nullptr,
1101 QWidget *parent SIP_TRANSFERTHIS = nullptr
1102 );
1103 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1104
1105 private:
1106 QgsGeometryWidget *mGeometryWidget = nullptr;
1107};
1108
1109class GUI_EXPORT QgsProcessingGeometryWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1110{
1111 Q_OBJECT
1112
1113 public:
1114 QgsProcessingGeometryWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1115
1116 // QgsProcessingParameterWidgetFactoryInterface
1117 QString parameterType() const override;
1118 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1119 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1120 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1121 ) override;
1122
1123 // QgsProcessingParameterWidgetWrapper interface
1124 QWidget *createWidget() override SIP_FACTORY;
1125
1126 protected:
1127 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1128 QVariant widgetValue() const override;
1129
1130 QString modelerExpressionFormatString() const override;
1131
1132 private:
1133 QgsGeometryWidget *mGeometryWidget = nullptr;
1134
1135 friend class TestProcessingGui;
1136};
1137
1138class GUI_EXPORT QgsProcessingExtentParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1139{
1140 Q_OBJECT
1141 public:
1142 QgsProcessingExtentParameterDefinitionWidget(
1143 QgsProcessingContext &context,
1144 const QgsProcessingParameterWidgetContext &widgetContext,
1145 const QgsProcessingParameterDefinition *definition = nullptr,
1146 const QgsProcessingAlgorithm *algorithm = nullptr,
1147 QWidget *parent SIP_TRANSFERTHIS = nullptr
1148 );
1149 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1150
1151 private:
1152 QgsExtentWidget *mDefaultWidget = nullptr;
1153};
1154
1155class GUI_EXPORT QgsProcessingExtentWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1156{
1157 Q_OBJECT
1158
1159 public:
1160 QgsProcessingExtentWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1161
1162 // QgsProcessingParameterWidgetFactoryInterface
1163 QString parameterType() const override;
1164 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1165 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1166 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1167 ) override;
1168
1169 // QgsProcessingParameterWidgetWrapper interface
1170 QWidget *createWidget() override SIP_FACTORY;
1171 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1172 void setDialog( QWidget *dialog ) override;
1173
1174 protected:
1175 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1176 QVariant widgetValue() const override;
1177
1178 QString modelerExpressionFormatString() const override;
1179
1180 private:
1181 QgsExtentWidget *mExtentWidget = nullptr;
1182 QWidget *mDialog = nullptr;
1183
1184 friend class TestProcessingGui;
1185};
1186
1187class GUI_EXPORT QgsProcessingColorParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1188{
1189 Q_OBJECT
1190 public:
1191 QgsProcessingColorParameterDefinitionWidget(
1192 QgsProcessingContext &context,
1193 const QgsProcessingParameterWidgetContext &widgetContext,
1194 const QgsProcessingParameterDefinition *definition = nullptr,
1195 const QgsProcessingAlgorithm *algorithm = nullptr,
1196 QWidget *parent SIP_TRANSFERTHIS = nullptr
1197 );
1198 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1199
1200 private:
1201 QgsColorButton *mDefaultColorButton = nullptr;
1202 QCheckBox *mAllowOpacity = nullptr;
1203};
1204
1205class GUI_EXPORT QgsProcessingColorWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1206{
1207 Q_OBJECT
1208
1209 public:
1210 QgsProcessingColorWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1211
1212 // QgsProcessingParameterWidgetFactoryInterface
1213 QString parameterType() const override;
1214 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1215 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1216 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1217 ) override;
1218
1219 // QgsProcessingParameterWidgetWrapper interface
1220 QWidget *createWidget() override SIP_FACTORY;
1221
1222 protected:
1223 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1224 QVariant widgetValue() const override;
1225
1226 QString modelerExpressionFormatString() const override;
1227
1228 private:
1229 QgsColorButton *mColorButton = nullptr;
1230 friend class TestProcessingGui;
1231};
1232
1233
1234class GUI_EXPORT QgsProcessingCoordinateOperationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1235{
1236 Q_OBJECT
1237 public:
1238 QgsProcessingCoordinateOperationParameterDefinitionWidget(
1239 QgsProcessingContext &context,
1240 const QgsProcessingParameterWidgetContext &widgetContext,
1241 const QgsProcessingParameterDefinition *definition = nullptr,
1242 const QgsProcessingAlgorithm *algorithm = nullptr,
1243 QWidget *parent SIP_TRANSFERTHIS = nullptr
1244 );
1245 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1246
1247 private:
1248 QLineEdit *mDefaultLineEdit = nullptr;
1249
1250 QComboBox *mSourceParamComboBox = nullptr;
1251 QComboBox *mDestParamComboBox = nullptr;
1252
1253 QgsProjectionSelectionWidget *mStaticSourceWidget = nullptr;
1254 QgsProjectionSelectionWidget *mStaticDestWidget = nullptr;
1255};
1256
1257class GUI_EXPORT QgsProcessingCoordinateOperationWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1258{
1259 Q_OBJECT
1260
1261 public:
1262 QgsProcessingCoordinateOperationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1263
1264 // QgsProcessingParameterWidgetFactoryInterface
1265 QString parameterType() const override;
1266 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1267 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1268 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1269 ) override;
1270
1271 // QgsProcessingParameterWidgetWrapper interface
1272 QWidget *createWidget() override SIP_FACTORY;
1273 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1274 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1275
1276 protected:
1277 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1278 QVariant widgetValue() const override;
1279
1280 QString modelerExpressionFormatString() const override;
1281
1282 private:
1283 void setSourceCrsParameterValue( const QVariant &value );
1284 void setDestinationCrsParameterValue( const QVariant &value );
1285
1286 QgsCoordinateOperationWidget *mOperationWidget = nullptr;
1287 QgsMapCanvas *mCanvas = nullptr;
1288 QLineEdit *mLineEdit = nullptr;
1289 QgsCoordinateReferenceSystem mSourceCrs;
1290 QgsCoordinateReferenceSystem mDestCrs;
1291 friend class TestProcessingGui;
1292};
1293
1294class GUI_EXPORT QgsProcessingFieldPanelWidget : public QWidget
1295{
1296 Q_OBJECT
1297
1298 public:
1299 QgsProcessingFieldPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterField *param = nullptr );
1300
1301 void setFields( const QgsFields &fields );
1302
1303 QgsFields fields() const { return mFields; }
1304
1305 QVariant value() const { return mValue; }
1306 void setValue( const QVariant &value );
1307
1308 signals:
1309
1310 void changed();
1311
1312 private slots:
1313
1314 void showDialog();
1315
1316 private:
1317 void updateSummaryText();
1318
1319 QgsFields mFields;
1320
1321 const QgsProcessingParameterField *mParam = nullptr;
1322 QLineEdit *mLineEdit = nullptr;
1323 QToolButton *mToolButton = nullptr;
1324
1325 QVariantList mValue;
1326
1327 friend class TestProcessingGui;
1328};
1329
1330class GUI_EXPORT QgsProcessingFieldParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1331{
1332 Q_OBJECT
1333 public:
1334 QgsProcessingFieldParameterDefinitionWidget(
1335 QgsProcessingContext &context,
1336 const QgsProcessingParameterWidgetContext &widgetContext,
1337 const QgsProcessingParameterDefinition *definition = nullptr,
1338 const QgsProcessingAlgorithm *algorithm = nullptr,
1339 QWidget *parent SIP_TRANSFERTHIS = nullptr
1340 );
1341 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1342
1343 private:
1344 QComboBox *mParentLayerComboBox = nullptr;
1345 QComboBox *mDataTypeComboBox = nullptr;
1346 QLineEdit *mDefaultLineEdit = nullptr;
1347 QCheckBox *mAllowMultipleCheckBox = nullptr;
1348 QCheckBox *mDefaultToAllCheckBox = nullptr;
1349};
1350
1351class GUI_EXPORT QgsProcessingFieldWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1352{
1353 Q_OBJECT
1354
1355 public:
1356 QgsProcessingFieldWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1357
1358 // QgsProcessingParameterWidgetFactoryInterface
1359 QString parameterType() const override;
1360 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1361 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1362 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1363 ) override;
1364
1365 // QgsProcessingParameterWidgetWrapper interface
1366 QWidget *createWidget() override SIP_FACTORY;
1367 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1368
1369 public slots:
1370 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1371
1372 protected:
1373 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1374 QVariant widgetValue() const override;
1375
1376 QString modelerExpressionFormatString() const override;
1377 const QgsVectorLayer *linkedVectorLayer() const override;
1378
1379 private:
1380 QgsFieldComboBox *mComboBox = nullptr;
1381 QgsProcessingFieldPanelWidget *mPanel = nullptr;
1382 QLineEdit *mLineEdit = nullptr;
1383
1384 std::unique_ptr<QgsVectorLayer> mParentLayer;
1385
1386 QgsFields filterFields( const QgsFields &fields ) const;
1387
1388 friend class TestProcessingGui;
1389};
1390
1391
1392class GUI_EXPORT QgsProcessingMapThemeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1393{
1394 Q_OBJECT
1395 public:
1396 QgsProcessingMapThemeParameterDefinitionWidget(
1397 QgsProcessingContext &context,
1398 const QgsProcessingParameterWidgetContext &widgetContext,
1399 const QgsProcessingParameterDefinition *definition = nullptr,
1400 const QgsProcessingAlgorithm *algorithm = nullptr,
1401 QWidget *parent SIP_TRANSFERTHIS = nullptr
1402 );
1403 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1404
1405 private:
1406 QComboBox *mDefaultComboBox = nullptr;
1407};
1408
1409class GUI_EXPORT QgsProcessingMapThemeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1410{
1411 Q_OBJECT
1412
1413 public:
1414 QgsProcessingMapThemeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1415
1416 // QgsProcessingParameterWidgetFactoryInterface
1417 QString parameterType() const override;
1418 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1419 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1420 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1421 ) override;
1422
1423 // QgsProcessingParameterWidgetWrapper interface
1424 QWidget *createWidget() override SIP_FACTORY;
1425
1426 protected:
1427 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1428 QVariant widgetValue() const override;
1429
1430 QString modelerExpressionFormatString() const override;
1431
1432 private:
1433 QComboBox *mComboBox = nullptr;
1434
1435 friend class TestProcessingGui;
1436};
1437
1438
1439class GUI_EXPORT QgsProcessingDateTimeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1440{
1441 Q_OBJECT
1442 public:
1443 QgsProcessingDateTimeParameterDefinitionWidget(
1444 QgsProcessingContext &context,
1445 const QgsProcessingParameterWidgetContext &widgetContext,
1446 const QgsProcessingParameterDefinition *definition = nullptr,
1447 const QgsProcessingAlgorithm *algorithm = nullptr,
1448 QWidget *parent SIP_TRANSFERTHIS = nullptr
1449 );
1450 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1451
1452 private:
1453 QComboBox *mTypeComboBox = nullptr;
1454};
1455
1456class GUI_EXPORT QgsProcessingDateTimeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1457{
1458 Q_OBJECT
1459
1460 public:
1461 QgsProcessingDateTimeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1462
1463 // QgsProcessingParameterWidgetFactoryInterface
1464 QString parameterType() const override;
1465 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1466
1467 // QgsProcessingParameterWidgetWrapper interface
1468 QWidget *createWidget() override SIP_FACTORY;
1469 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1470 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1471 ) override;
1472
1473 protected:
1474 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1475 QVariant widgetValue() const override;
1476
1477 QString modelerExpressionFormatString() const override;
1478
1479 private:
1480 QgsDateTimeEdit *mDateTimeEdit = nullptr;
1481 QgsDateEdit *mDateEdit = nullptr;
1482 QgsTimeEdit *mTimeEdit = nullptr;
1483
1484 friend class TestProcessingGui;
1485};
1486
1487
1488//
1489// QgsProcessingProviderConnectionWidgetWrapper
1490//
1491
1492class GUI_EXPORT QgsProcessingProviderConnectionParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1493{
1494 Q_OBJECT
1495 public:
1496 QgsProcessingProviderConnectionParameterDefinitionWidget(
1497 QgsProcessingContext &context,
1498 const QgsProcessingParameterWidgetContext &widgetContext,
1499 const QgsProcessingParameterDefinition *definition = nullptr,
1500 const QgsProcessingAlgorithm *algorithm = nullptr,
1501 QWidget *parent SIP_TRANSFERTHIS = nullptr
1502 );
1503 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1504
1505 private:
1506 QComboBox *mProviderComboBox = nullptr;
1507 QLineEdit *mDefaultEdit = nullptr;
1508};
1509
1510class GUI_EXPORT QgsProcessingProviderConnectionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1511{
1512 Q_OBJECT
1513
1514 public:
1515 QgsProcessingProviderConnectionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1516
1517 // QgsProcessingParameterWidgetFactoryInterface
1518 QString parameterType() const override;
1519 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1520
1521
1522 // QgsProcessingParameterWidgetWrapper interface
1523 QWidget *createWidget() override SIP_FACTORY;
1524 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1525 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1526 ) override;
1527
1528 protected:
1529 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1530 QVariant widgetValue() const override;
1531
1532 QString modelerExpressionFormatString() const override;
1533
1534 private:
1535 QgsProviderConnectionComboBox *mProviderComboBox = nullptr;
1536 int mBlockSignals = 0;
1537
1538 friend class TestProcessingGui;
1539};
1540
1541
1542class GUI_EXPORT QgsProcessingDatabaseSchemaParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1543{
1544 Q_OBJECT
1545 public:
1546 QgsProcessingDatabaseSchemaParameterDefinitionWidget(
1547 QgsProcessingContext &context,
1548 const QgsProcessingParameterWidgetContext &widgetContext,
1549 const QgsProcessingParameterDefinition *definition = nullptr,
1550 const QgsProcessingAlgorithm *algorithm = nullptr,
1551 QWidget *parent SIP_TRANSFERTHIS = nullptr
1552 );
1553 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1554
1555 private:
1556 QComboBox *mConnectionParamComboBox = nullptr;
1557 QLineEdit *mDefaultEdit = nullptr;
1558};
1559
1560class GUI_EXPORT QgsProcessingDatabaseSchemaWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1561{
1562 Q_OBJECT
1563
1564 public:
1565 QgsProcessingDatabaseSchemaWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1566
1567 // QgsProcessingParameterWidgetFactoryInterface
1568 QString parameterType() const override;
1569 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1570 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1571
1572
1573 // QgsProcessingParameterWidgetWrapper interface
1574 QWidget *createWidget() override SIP_FACTORY;
1575 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1576 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1577 ) override;
1578
1579 public slots:
1580 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1581
1582 protected:
1583 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1584 QVariant widgetValue() const override;
1585
1586 QString modelerExpressionFormatString() const override;
1587
1588 private:
1589 QgsDatabaseSchemaComboBox *mSchemaComboBox = nullptr;
1590 int mBlockSignals = 0;
1591
1592 friend class TestProcessingGui;
1593};
1594
1595
1596class GUI_EXPORT QgsProcessingDatabaseTableParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1597{
1598 Q_OBJECT
1599 public:
1600 QgsProcessingDatabaseTableParameterDefinitionWidget(
1601 QgsProcessingContext &context,
1602 const QgsProcessingParameterWidgetContext &widgetContext,
1603 const QgsProcessingParameterDefinition *definition = nullptr,
1604 const QgsProcessingAlgorithm *algorithm = nullptr,
1605 QWidget *parent SIP_TRANSFERTHIS = nullptr
1606 );
1607 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1608
1609 private:
1610 QComboBox *mConnectionParamComboBox = nullptr;
1611 QComboBox *mSchemaParamComboBox = nullptr;
1612 QLineEdit *mDefaultEdit = nullptr;
1613};
1614
1615class GUI_EXPORT QgsProcessingDatabaseTableWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1616{
1617 Q_OBJECT
1618
1619 public:
1620 QgsProcessingDatabaseTableWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1621
1622 // QgsProcessingParameterWidgetFactoryInterface
1623 QString parameterType() const override;
1624 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1625 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1626
1627
1628 // QgsProcessingParameterWidgetWrapper interface
1629 QWidget *createWidget() override SIP_FACTORY;
1630 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1631 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1632 ) override;
1633
1634 public slots:
1635 void setParentConnectionWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1636 void setParentSchemaWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1637
1638 protected:
1639 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1640 QVariant widgetValue() const override;
1641
1642 QString modelerExpressionFormatString() const override;
1643
1644 private:
1645 QgsDatabaseTableComboBox *mTableComboBox = nullptr;
1646 int mBlockSignals = 0;
1647 QString mConnection;
1648 QString mProvider;
1649 QString mSchema;
1650
1651 friend class TestProcessingGui;
1652};
1653
1654class GUI_EXPORT QgsProcessingMapLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1655{
1656 Q_OBJECT
1657 public:
1658 QgsProcessingMapLayerParameterDefinitionWidget(
1659 QgsProcessingContext &context,
1660 const QgsProcessingParameterWidgetContext &widgetContext,
1661 const QgsProcessingParameterDefinition *definition = nullptr,
1662 const QgsProcessingAlgorithm *algorithm = nullptr,
1663 QWidget *parent SIP_TRANSFERTHIS = nullptr
1664 );
1665 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1666
1667 private:
1668 QgsCheckableComboBox *mLayerTypeComboBox = nullptr;
1669};
1670
1671class GUI_EXPORT QgsProcessingMapLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1672{
1673 Q_OBJECT
1674
1675 public:
1676 QgsProcessingMapLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1677
1678 // QgsProcessingParameterWidgetFactoryInterface
1679 QString parameterType() const override;
1680 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1681 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1682 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1683 ) override;
1684
1685 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1686 // QgsProcessingParameterWidgetWrapper interface
1687 QWidget *createWidget() override SIP_FACTORY;
1688
1689 protected:
1690 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1691 QVariant widgetValue() const override;
1692
1693 QString modelerExpressionFormatString() const override;
1694 Qgis::ProcessingModelChildParameterSource defaultModelSource( const QgsProcessingParameterDefinition *parameter ) const override;
1695
1696 private:
1697 QPointer<QgsProcessingMapLayerComboBox> mComboBox;
1698 int mBlockSignals = 0;
1699
1700 friend class TestProcessingGui;
1701};
1702
1703
1704class GUI_EXPORT QgsProcessingRasterLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1705{
1706 Q_OBJECT
1707
1708 public:
1709 QgsProcessingRasterLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1710
1711 // QgsProcessingParameterWidgetFactoryInterface
1712 QString parameterType() const override;
1713 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1714 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1715 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1716 ) override;
1717
1718 protected:
1719 QString modelerExpressionFormatString() const override;
1720};
1721
1722
1723class GUI_EXPORT QgsProcessingVectorLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1724{
1725 Q_OBJECT
1726 public:
1727 QgsProcessingVectorLayerParameterDefinitionWidget(
1728 QgsProcessingContext &context,
1729 const QgsProcessingParameterWidgetContext &widgetContext,
1730 const QgsProcessingParameterDefinition *definition = nullptr,
1731 const QgsProcessingAlgorithm *algorithm = nullptr,
1732 QWidget *parent SIP_TRANSFERTHIS = nullptr
1733 );
1734 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1735
1736 private:
1737 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1738};
1739
1740class GUI_EXPORT QgsProcessingVectorLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1741{
1742 Q_OBJECT
1743
1744 public:
1745 QgsProcessingVectorLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1746
1747 // QgsProcessingParameterWidgetFactoryInterface
1748 QString parameterType() const override;
1749 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1750 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1751 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1752 ) override;
1753
1754 protected:
1755 QString modelerExpressionFormatString() const override;
1756};
1757
1758
1759class GUI_EXPORT QgsProcessingFeatureSourceParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1760{
1761 Q_OBJECT
1762 public:
1763 QgsProcessingFeatureSourceParameterDefinitionWidget(
1764 QgsProcessingContext &context,
1765 const QgsProcessingParameterWidgetContext &widgetContext,
1766 const QgsProcessingParameterDefinition *definition = nullptr,
1767 const QgsProcessingAlgorithm *algorithm = nullptr,
1768 QWidget *parent SIP_TRANSFERTHIS = nullptr
1769 );
1770 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1771
1772 private:
1773 QgsCheckableComboBox *mGeometryTypeComboBox = nullptr;
1774};
1775
1776class GUI_EXPORT QgsProcessingFeatureSourceWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1777{
1778 Q_OBJECT
1779
1780 public:
1781 QgsProcessingFeatureSourceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1782
1783 // QgsProcessingParameterWidgetFactoryInterface
1784 QString parameterType() const override;
1785 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1786 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1787 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1788 ) override;
1789
1790 protected:
1791 QString modelerExpressionFormatString() const override;
1792};
1793
1794
1795class GUI_EXPORT QgsProcessingMeshLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
1796{
1797 Q_OBJECT
1798
1799 public:
1800 QgsProcessingMeshLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1801
1802 // QgsProcessingParameterWidgetFactoryInterface
1803 QString parameterType() const override;
1804 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1805 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1806 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1807 ) override;
1808
1809 protected:
1810 QString modelerExpressionFormatString() const override;
1811};
1812
1813
1814class GUI_EXPORT QgsProcessingRasterBandPanelWidget : public QWidget
1815{
1816 Q_OBJECT
1817
1818 public:
1819 QgsProcessingRasterBandPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterBand *param = nullptr );
1820
1821 void setBands( const QList<int> &bands );
1822 void setBandNames( const QHash<int, QString> &names );
1823 QList<int> bands() const { return mBands; }
1824
1825 QVariant value() const { return mValue; }
1826 void setValue( const QVariant &value );
1827
1828 signals:
1829
1830 void changed();
1831
1832 private slots:
1833
1834 void showDialog();
1835
1836 private:
1837 void updateSummaryText();
1838
1839 QList<int> mBands;
1840 QHash<int, QString> mBandNames;
1841
1842 const QgsProcessingParameterBand *mParam = nullptr;
1843 QLineEdit *mLineEdit = nullptr;
1844 QToolButton *mToolButton = nullptr;
1845
1846 QVariantList mValue;
1847
1848 friend class TestProcessingGui;
1849};
1850
1851class GUI_EXPORT QgsProcessingBandParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1852{
1853 Q_OBJECT
1854 public:
1855 QgsProcessingBandParameterDefinitionWidget(
1856 QgsProcessingContext &context,
1857 const QgsProcessingParameterWidgetContext &widgetContext,
1858 const QgsProcessingParameterDefinition *definition = nullptr,
1859 const QgsProcessingAlgorithm *algorithm = nullptr,
1860 QWidget *parent SIP_TRANSFERTHIS = nullptr
1861 );
1862 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1863
1864 private:
1865 QComboBox *mParentLayerComboBox = nullptr;
1866 QLineEdit *mDefaultLineEdit = nullptr;
1867 QCheckBox *mAllowMultipleCheckBox = nullptr;
1868};
1869
1870class GUI_EXPORT QgsProcessingBandWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1871{
1872 Q_OBJECT
1873
1874 public:
1875 QgsProcessingBandWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1876
1877 // QgsProcessingParameterWidgetFactoryInterface
1878 QString parameterType() const override;
1879 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1880 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1881 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1882 ) override;
1883
1884 // QgsProcessingParameterWidgetWrapper interface
1885 QWidget *createWidget() override SIP_FACTORY;
1886 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
1887
1888 public slots:
1889 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1890
1891 protected:
1892 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1893 QVariant widgetValue() const override;
1894
1895 QString modelerExpressionFormatString() const override;
1896
1897 private:
1898 QgsRasterBandComboBox *mComboBox = nullptr;
1899 QgsProcessingRasterBandPanelWidget *mPanel = nullptr;
1900 QLineEdit *mLineEdit = nullptr;
1901
1902 std::unique_ptr<QgsRasterLayer> mParentLayer;
1903
1904 friend class TestProcessingGui;
1905};
1906
1907
1908class GUI_EXPORT QgsProcessingMultipleLayerLineEdit : public QgsHighlightableLineEdit
1909{
1910 Q_OBJECT
1911
1912 public:
1913 QgsProcessingMultipleLayerLineEdit( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1914 void dragEnterEvent( QDragEnterEvent *event ) override;
1915 void dragLeaveEvent( QDragLeaveEvent *event ) override;
1916 void dropEvent( QDropEvent *event ) override;
1917
1918 signals:
1919
1920 void layersDropped( const QVariantList &value );
1921
1922 private:
1923 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1924};
1925
1926class GUI_EXPORT QgsProcessingMultipleLayerPanelWidget : public QWidget
1927{
1928 Q_OBJECT
1929
1930 public:
1931 QgsProcessingMultipleLayerPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterMultipleLayers *param = nullptr );
1932
1933 QVariant value() const { return mValue; }
1934 void setValue( const QVariant &value );
1935
1936 void setProject( QgsProject *project );
1937 void setModel( QgsProcessingModelAlgorithm *model, const QString &modelChildAlgorithmID );
1938
1939 signals:
1940
1941 void changed();
1942
1943 private slots:
1944
1945 void showDialog();
1946
1947 private:
1948 void updateSummaryText();
1949
1950 const QgsProcessingParameterMultipleLayers *mParam = nullptr;
1951 QgsProcessingMultipleLayerLineEdit *mLineEdit = nullptr;
1952 QToolButton *mToolButton = nullptr;
1953
1954 QVariantList mValue;
1955 QList<QgsProcessingModelChildParameterSource> mModelSources;
1956 QgsProcessingModelAlgorithm *mModel = nullptr;
1957
1958 QgsProject *mProject = nullptr;
1959
1960 friend class TestProcessingGui;
1961};
1962
1963class GUI_EXPORT QgsProcessingMultipleLayerParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1964{
1965 Q_OBJECT
1966 public:
1967 QgsProcessingMultipleLayerParameterDefinitionWidget(
1968 QgsProcessingContext &context,
1969 const QgsProcessingParameterWidgetContext &widgetContext,
1970 const QgsProcessingParameterDefinition *definition = nullptr,
1971 const QgsProcessingAlgorithm *algorithm = nullptr,
1972 QWidget *parent SIP_TRANSFERTHIS = nullptr
1973 );
1974 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
1975
1976 private:
1977 QComboBox *mLayerTypeComboBox = nullptr;
1978};
1979
1980class GUI_EXPORT QgsProcessingMultipleLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1981{
1982 Q_OBJECT
1983
1984 public:
1985 QgsProcessingMultipleLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
1986
1987 // QgsProcessingParameterWidgetFactoryInterface
1988 QString parameterType() const override;
1989 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
1990 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
1991 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
1992 ) override;
1993
1994 // QgsProcessingParameterWidgetWrapper interface
1995 QWidget *createWidget() override SIP_FACTORY;
1996 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
1997
1998 protected:
1999 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2000 QVariant widgetValue() const override;
2001
2002 QString modelerExpressionFormatString() const override;
2003
2004 private:
2005 QgsProcessingMultipleLayerPanelWidget *mPanel = nullptr;
2006
2007 friend class TestProcessingGui;
2008};
2009
2015class GUI_EXPORT QgsProcessingDestinationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2016{
2017 Q_OBJECT
2018
2019 public:
2020 QgsProcessingDestinationParameterDefinitionWidget(
2021 const QString &type,
2022 QgsProcessingContext &context,
2023 const QgsProcessingParameterWidgetContext &widgetContext,
2024 const QgsProcessingDestinationParameter *definition = nullptr,
2025 const QgsProcessingAlgorithm *algorithm = nullptr,
2026 QWidget *parent SIP_TRANSFERTHIS = nullptr
2027 );
2028
2029 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2030
2031 private:
2032 QString mType;
2033 QgsProcessingLayerOutputDestinationWidget *mDestinationWidget = nullptr;
2034 std::unique_ptr< QgsProcessingDestinationParameter > mExistingDestinationParameter;
2035};
2036
2037class GUI_EXPORT QgsProcessingOutputWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2038{
2039 Q_OBJECT
2040
2041 public:
2042 QgsProcessingOutputWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2043
2044 // QgsProcessingParameterWidgetWrapper interface
2045 QWidget *createWidget() override SIP_FACTORY;
2046 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2047 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2048 ) override;
2049
2050 protected:
2051 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2052 QVariant widgetValue() const override;
2053 QVariantMap customProperties() const override;
2054
2055 private:
2056 QgsProcessingLayerOutputDestinationWidget *mOutputWidget = nullptr;
2057 int mBlockSignals = 0;
2058
2059 friend class TestProcessingGui;
2060};
2061
2062
2063class GUI_EXPORT QgsProcessingFeatureSinkWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2064{
2065 Q_OBJECT
2066
2067 public:
2068 QgsProcessingFeatureSinkWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2069
2070 // QgsProcessingParameterWidgetFactoryInterface
2071 QString parameterType() const override;
2072 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2073
2074 protected:
2075 QString modelerExpressionFormatString() const override;
2076
2077 private:
2078 QgsProcessingContext mContext;
2079};
2080
2081class GUI_EXPORT QgsProcessingVectorDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2082{
2083 Q_OBJECT
2084
2085 public:
2086 QgsProcessingVectorDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2087
2088 // QgsProcessingParameterWidgetFactoryInterface
2089 QString parameterType() const override;
2090 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2091
2092 protected:
2093 QString modelerExpressionFormatString() const override;
2094};
2095
2096class GUI_EXPORT QgsProcessingRasterDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2097{
2098 Q_OBJECT
2099
2100 public:
2101 QgsProcessingRasterDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2102
2103 // QgsProcessingParameterWidgetFactoryInterface
2104 QString parameterType() const override;
2105 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2106
2107 protected:
2108 QString modelerExpressionFormatString() const override;
2109};
2110
2111class GUI_EXPORT QgsProcessingPointCloudDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2112{
2113 Q_OBJECT
2114
2115 public:
2116 QgsProcessingPointCloudDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2117
2118 // QgsProcessingParameterWidgetFactoryInterface
2119 QString parameterType() const override;
2120 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2121
2122 protected:
2123 QString modelerExpressionFormatString() const override;
2124};
2125
2126class GUI_EXPORT QgsProcessingFileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2127{
2128 Q_OBJECT
2129
2130 public:
2131 QgsProcessingFileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2132
2133 // QgsProcessingParameterWidgetFactoryInterface
2134 QString parameterType() const override;
2135 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2136
2137 protected:
2138 QString modelerExpressionFormatString() const override;
2139};
2140
2141class GUI_EXPORT QgsProcessingFolderDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2142{
2143 Q_OBJECT
2144
2145 public:
2146 QgsProcessingFolderDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2147
2148 // QgsProcessingParameterWidgetFactoryInterface
2149 QString parameterType() const override;
2150 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2151
2152 protected:
2153 QString modelerExpressionFormatString() const override;
2154};
2155
2156class GUI_EXPORT QgsProcessingPointCloudLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
2157{
2158 Q_OBJECT
2159
2160 public:
2161 QgsProcessingPointCloudLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2162
2163 // QgsProcessingParameterWidgetFactoryInterface
2164 QString parameterType() const override;
2165 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2166 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2167 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2168 ) override;
2169
2170 protected:
2171 QString modelerExpressionFormatString() const override;
2172};
2173
2174
2175class GUI_EXPORT QgsProcessingAnnotationLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2176{
2177 Q_OBJECT
2178
2179 public:
2180 QgsProcessingAnnotationLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2181
2182 // QgsProcessingParameterWidgetFactoryInterface
2183 QString parameterType() const override;
2184 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2185 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2186 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2187 ) override;
2188 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2189
2190 QWidget *createWidget() override SIP_FACTORY;
2191
2192 protected:
2193 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2194 QVariant widgetValue() const override;
2195
2196 QString modelerExpressionFormatString() const override;
2197
2198 private:
2199 QPointer<QgsMapLayerComboBox> mComboBox;
2200 int mBlockSignals = 0;
2201
2202 friend class TestProcessingGui;
2203};
2204
2205
2206class GUI_EXPORT QgsProcessingPointCloudAttributePanelWidget : public QWidget
2207{
2208 Q_OBJECT
2209
2210 public:
2211 QgsProcessingPointCloudAttributePanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterPointCloudAttribute *param = nullptr );
2212
2213 void setAttributes( const QgsPointCloudAttributeCollection &attributes );
2214
2215 QgsPointCloudAttributeCollection attributes() const { return mAttributes; }
2216
2217 QVariant value() const { return mValue; }
2218 void setValue( const QVariant &value );
2219
2220 signals:
2221
2222 void changed();
2223
2224 private slots:
2225
2226 void showDialog();
2227
2228 private:
2229 void updateSummaryText();
2230
2231 QgsPointCloudAttributeCollection mAttributes;
2232
2233 const QgsProcessingParameterPointCloudAttribute *mParam = nullptr;
2234 QLineEdit *mLineEdit = nullptr;
2235 QToolButton *mToolButton = nullptr;
2236
2237 QVariantList mValue;
2238
2239 friend class TestProcessingGui;
2240};
2241
2242class GUI_EXPORT QgsProcessingPointCloudAttributeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2243{
2244 Q_OBJECT
2245 public:
2246 QgsProcessingPointCloudAttributeParameterDefinitionWidget(
2247 QgsProcessingContext &context,
2248 const QgsProcessingParameterWidgetContext &widgetContext,
2249 const QgsProcessingParameterDefinition *definition = nullptr,
2250 const QgsProcessingAlgorithm *algorithm = nullptr,
2251 QWidget *parent SIP_TRANSFERTHIS = nullptr
2252 );
2253 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2254
2255 private:
2256 QComboBox *mParentLayerComboBox = nullptr;
2257 QLineEdit *mDefaultLineEdit = nullptr;
2258 QCheckBox *mAllowMultipleCheckBox = nullptr;
2259 QCheckBox *mDefaultToAllCheckBox = nullptr;
2260};
2261
2262class GUI_EXPORT QgsProcessingPointCloudAttributeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2263{
2264 Q_OBJECT
2265
2266 public:
2267 QgsProcessingPointCloudAttributeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2268
2269 // QgsProcessingParameterWidgetFactoryInterface
2270 QString parameterType() const override;
2271 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2272 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2273 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2274 ) override;
2275
2276 // QgsProcessingParameterWidgetWrapper interface
2277 QWidget *createWidget() override SIP_FACTORY;
2278 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2279
2280 public slots:
2281 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2282
2283 protected:
2284 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2285 QVariant widgetValue() const override;
2286
2287 QString modelerExpressionFormatString() const override;
2288
2289 private:
2290 QgsPointCloudAttributeComboBox *mComboBox = nullptr;
2291 QgsProcessingPointCloudAttributePanelWidget *mPanel = nullptr;
2292 QLineEdit *mLineEdit = nullptr;
2293
2294 std::unique_ptr<QgsPointCloudLayer> mParentLayer;
2295
2296 friend class TestProcessingGui;
2297};
2298
2299class GUI_EXPORT QgsProcessingVectorTileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2300{
2301 Q_OBJECT
2302
2303 public:
2304 QgsProcessingVectorTileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2305
2306 // QgsProcessingParameterWidgetFactoryInterface
2307 QString parameterType() const override;
2308 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2309
2310 protected:
2311 QString modelerExpressionFormatString() const override;
2312};
2313
2314
2315class GUI_EXPORT QgsHeatmapPixelSizeWidget : public QgsPanelWidget, private Ui::QgsProcessingPixelSizeWidgetBase
2316{
2317 Q_OBJECT
2318 public:
2319 QgsHeatmapPixelSizeWidget( QWidget *parent = nullptr );
2320
2321 void setLayer( QgsVectorLayer *layer );
2322 QgsVectorLayer *layer();
2323 void setRadius( double radius );
2324 void setRadiusField( const QString &radiusField );
2325
2326 double value() const;
2327 void setValue( double value );
2328
2329 signals:
2330 void valueChanged();
2331
2332 private slots:
2333 void pixelSizeChanged();
2334 void rowsChanged();
2335 void columnsChanged();
2336
2337 private:
2338 void recalculateBounds();
2339
2340 QPointer<QgsVectorLayer> mLayer;
2341 QgsRectangle mLayerBounds;
2342 QgsRectangle mRasterBounds;
2343 double mRadius = 100.0;
2344 QString mRadiusField;
2345
2346 friend class TestProcessingGui;
2347};
2348
2349class GUI_EXPORT QgsProcessingHeatmapPixelSizeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2350{
2351 Q_OBJECT
2352 public:
2353 QgsProcessingHeatmapPixelSizeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2354
2355 // QgsProcessingParameterWidgetFactoryInterface
2356 QString parameterType() const override;
2357 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2358 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2359 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2360 ) override;
2361
2362 // QgsProcessingParameterWidgetWrapper interface
2363 QWidget *createWidget() override;
2364 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2365
2366 public slots:
2367 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2368
2369 protected:
2370 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2371 QVariant widgetValue() const override;
2372 const QgsVectorLayer *linkedVectorLayer() const override;
2373
2374 private slots:
2375 void radiusChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2376 void radiusFieldChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2377
2378 private:
2379 QgsHeatmapPixelSizeWidget *mWidget = nullptr;
2380 QgsDoubleSpinBox *mFallbackSpinBox = nullptr;
2381
2382 std::unique_ptr<QgsMapLayer> mParentLayer;
2383
2384 friend class TestProcessingGui;
2385};
2386
2387
2388class GUI_EXPORT QgsReliefColorsWidget : public QgsPanelWidget, private Ui::QgsProcessingReliefColorsWidgetBase
2389{
2390 Q_OBJECT
2391 public:
2392 QgsReliefColorsWidget( QWidget *parent = nullptr );
2393
2394 void setLayer( QgsRasterLayer *layer );
2395 QgsRasterLayer *layer();
2396
2397 QList< QgsRasterReliefColor > colors() const;
2398
2399 void setColors( const QList< QgsRasterReliefColor > &colors );
2400
2401 public slots:
2402
2403 void autoCalculate();
2404
2405 signals:
2406 void valueChanged();
2407
2408 private slots:
2409 void addClicked();
2410 void removeClicked();
2411 void upClicked();
2412 void downClicked();
2413 void loadClicked();
2414 void saveClicked();
2415 void itemDoubleClicked( QTreeWidgetItem *item, int column );
2416
2417 private:
2418 QPointer<QgsRasterLayer> mLayer;
2419};
2420
2421
2422class GUI_EXPORT QgsProcessingReliefColorsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2423{
2424 Q_OBJECT
2425 public:
2426 QgsProcessingReliefColorsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2427
2428 // QgsProcessingParameterWidgetFactoryInterface
2429 QString parameterType() const override;
2430 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2431 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2432 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2433 ) override;
2434
2435 // QgsProcessingParameterWidgetWrapper interface
2436 QWidget *createWidget() override;
2437 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2438
2439 public slots:
2440 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2441
2442 protected:
2443 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2444 QVariant widgetValue() const override;
2445 QString modelerExpressionFormatString() const override;
2446
2447 private:
2448 QgsReliefColorsWidget *mWidget = nullptr;
2449 QLineEdit *mFallbackLineEdit = nullptr;
2450
2451 std::unique_ptr<QgsRasterLayer> mParentLayer;
2452
2453 friend class TestProcessingGui;
2454};
2455
2456class GUI_EXPORT QgsExecuteSqlWidget : public QWidget
2457{
2458 Q_OBJECT
2459
2460 public:
2461 explicit QgsExecuteSqlWidget( QWidget *parent = nullptr );
2462 void setValue( const QString &text );
2463 QString value() const;
2464 QgsFieldExpressionWidget *expressionWidget() const { return mExpressionWidget; }
2465 QPlainTextEdit *textEdit() const { return mTextEdit; }
2466
2467 signals:
2468
2469 void changed();
2470
2471 private slots:
2472
2473 void insertExpression();
2474
2475 private:
2476 QPlainTextEdit *mTextEdit = nullptr;
2477 QgsFieldExpressionWidget *mExpressionWidget = nullptr;
2478 QPushButton *mInsertButton = nullptr;
2479};
2480
2481class GUI_EXPORT QgsProcessingExecuteSqlWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2482{
2483 Q_OBJECT
2484
2485 public:
2486 QgsProcessingExecuteSqlWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QObject *parent = nullptr );
2487
2488 // QgsProcessingParameterWidgetFactoryInterface
2489 QString parameterType() const override;
2490 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override SIP_FACTORY;
2491 // QgsProcessingParameterWidgetWrapper interface
2492 QWidget *createWidget() override SIP_FACTORY;
2493
2494 protected:
2495 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2496 QVariant widgetValue() const override;
2497
2498 private:
2499 QgsExecuteSqlWidget *mExecuteSqlWidget = nullptr;
2500
2501 friend class TestProcessingGui;
2502};
2503
2504class GUI_EXPORT QgsInterpolationSourceWidget : public QWidget, private Ui::QgsInterpolationSourceWidgetBase
2505{
2506 Q_OBJECT
2507
2508 public:
2509 explicit QgsInterpolationSourceWidget( QWidget *parent = nullptr );
2510
2511 void setValue( const QVariant &value, QgsProcessingContext &context );
2512 QVariant value() const;
2513
2514 signals:
2515
2516 void changed();
2517
2518 private slots:
2519 void addLayer();
2520 void removeLayer();
2521 void layerChanged( QgsVectorLayer *layer );
2522
2523 private:
2524 void addLayerData( QgsVectorLayer *layer, const QString &attribute );
2525
2526 friend class TestProcessingGui;
2527};
2528
2529class GUI_EXPORT QgsProcessingInterpolationSourceWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2530{
2531 Q_OBJECT
2532
2533 public:
2534 QgsProcessingInterpolationSourceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QObject *parent = nullptr );
2535
2536 QString parameterType() const override;
2537 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2538 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2539 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2540 ) override;
2541
2542 QWidget *createWidget() override SIP_FACTORY;
2543
2544 protected:
2545 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2546 QVariant widgetValue() const override;
2547
2548 private:
2549 QgsInterpolationSourceWidget *mWidget = nullptr;
2550
2551 friend class TestProcessingGui;
2552};
2553
2554
2555class GUI_EXPORT QgsInterpolationPixelSizeWidget : public QgsPanelWidget, private Ui::QgsProcessingPixelSizeWidgetBase
2556{
2557 Q_OBJECT
2558 public:
2559 QgsInterpolationPixelSizeWidget( QWidget *parent = nullptr );
2560
2561 void setSourceData( const QString &sourceData, QgsProcessingContext &context );
2562 void setExtent( const QgsRectangle &extent );
2563
2564 double value() const;
2565 void setValue( double value );
2566
2567 signals:
2568 void valueChanged();
2569
2570 private slots:
2571 void pixelSizeChanged();
2572 void rowsChanged();
2573 void columnsChanged();
2574
2575 private:
2576 QgsRectangle mExtent;
2577
2578 friend class TestProcessingGui;
2579};
2580
2581
2582class GUI_EXPORT QgsProcessingInterpolationPixelSizeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2583{
2584 Q_OBJECT
2585 public:
2586 QgsProcessingInterpolationPixelSizeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2587
2588 // QgsProcessingParameterWidgetFactoryInterface
2589 QString parameterType() const override;
2590 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2591 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2592 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2593 ) override;
2594
2595 // QgsProcessingParameterWidgetWrapper interface
2596 QWidget *createWidget() override;
2597 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2598
2599 protected:
2600 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2601 QVariant widgetValue() const override;
2602
2603 private slots:
2604 void sourceChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2605 void extentChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2606
2607 private:
2608 QgsInterpolationPixelSizeWidget *mWidget = nullptr;
2609 QgsDoubleSpinBox *mFallbackSpinBox = nullptr;
2610
2611 friend class TestProcessingGui;
2612};
2613
2614
2615class GUI_EXPORT QgsTileExtentMaxZoomWidget : public QgsPanelWidget, private Ui::QgsProcessingTileExtentMaxZoomWidgetBase
2616{
2617 Q_OBJECT
2618 public:
2619 QgsTileExtentMaxZoomWidget( const QgsProcessingParameterTileExtentMaxZoomList *param );
2620 ~QgsTileExtentMaxZoomWidget() override;
2621
2622 QList< QgsTileExtentMaxZoomRegion > regions() const;
2623
2624 void setRegions( const QList< QgsTileExtentMaxZoomRegion > &regions );
2625
2626 void setMapCanvas( QgsMapCanvas *canvas );
2627
2628 signals:
2629 void valueChanged();
2630 void toggleDialogVisibility( bool visible );
2631
2632 private slots:
2633 void addClicked();
2634 void removeClicked();
2635 void itemDoubleClicked( QTreeWidgetItem *item, int column );
2636 void extentDrawn( const QgsRectangle &extent );
2637 void mapToolDeactivated();
2638
2639 private:
2640 const QgsProcessingParameterTileExtentMaxZoomList *mParam = nullptr;
2641
2642 QPointer<QgsMapCanvas> mMapCanvas;
2643
2644 static QString regionToString( const QgsReferencedRectangle &region );
2645
2646 std::unique_ptr<QgsMapToolExtent> mMapToolExtent;
2647 QPointer<QgsMapTool> mMapToolPrevious = nullptr;
2648};
2649
2650class GUI_EXPORT QgsProcessingTileExtentMaxZoomParameterPanel : public QWidget
2651{
2652 Q_OBJECT
2653
2654 public:
2655 QgsProcessingTileExtentMaxZoomParameterPanel( const QgsProcessingParameterTileExtentMaxZoomList *param );
2656
2657 QVariant value() const;
2658
2659 void setValue( const QVariant &value, QgsProcessingContext &context );
2660 void setRegions( const QList< QgsTileExtentMaxZoomRegion > &regions );
2661
2662 void setMapCanvas( QgsMapCanvas *canvas );
2663
2664 signals:
2665
2666 void changed();
2667 void toggleDialogVisibility( bool visible );
2668
2669 private slots:
2670
2671 void showDialog();
2672
2673 private:
2674 void updateSummaryText();
2675 const QgsProcessingParameterTileExtentMaxZoomList *mParam = nullptr;
2676 QLineEdit *mLineEdit = nullptr;
2677 QToolButton *mToolButton = nullptr;
2678
2679 QList<QgsTileExtentMaxZoomRegion> mRegions;
2680 QPointer< QgsTileExtentMaxZoomWidget > mPanelWidget;
2681 QPointer<QgsMapCanvas> mMapCanvas;
2682
2683
2684 friend class TestProcessingGui;
2685};
2686
2687
2688class GUI_EXPORT QgsProcessingTileExtentMaxZoomWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2689{
2690 Q_OBJECT
2691 public:
2692 QgsProcessingTileExtentMaxZoomWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2693
2694 // QgsProcessingParameterWidgetFactoryInterface
2695 QString parameterType() const override;
2696 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2697 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2698 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2699 ) override;
2700
2701 // QgsProcessingParameterWidgetWrapper interface
2702 QWidget *createWidget() override;
2703 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2704 void setDialog( QWidget *dialog ) override;
2705
2706 protected:
2707 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2708 QVariant widgetValue() const override;
2709 QString modelerExpressionFormatString() const override;
2710
2711 private:
2712 QgsProcessingTileExtentMaxZoomParameterPanel *mWidget = nullptr;
2713 QLineEdit *mFallbackLineEdit = nullptr;
2714 QWidget *mDialog = nullptr;
2715
2716 friend class TestProcessingGui;
2717};
2718
2719
2721
2722#endif // QGSPROCESSINGWIDGETWRAPPERIMPL_H
ProcessingMode
Types of modes which Processing widgets can be created for.
Definition qgis.h:3910
@ Standard
Standard (single-run) algorithm mode.
Definition qgis.h:3911
QFlags< ProcessingParameterFlag > ProcessingParameterFlags
Flags which dictate the behavior of Processing parameters.
Definition qgis.h:4040
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 map tool that emits an extent from a rectangle drawn onto the map canvas.
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