QGIS API Documentation 4.3.0-Master (1c7cf7431bd)
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 using QgsProcessingParameterWidgetFactoryInterface::compatibleParameterTypes;
1999 QStringList compatibleParameterTypes( const QgsProcessingParameterDefinition *definition ) const override;
2000 using QgsProcessingParameterWidgetFactoryInterface::compatibleOutputTypes;
2001 QStringList compatibleOutputTypes( const QgsProcessingParameterDefinition *definition ) const override;
2002
2003 protected:
2004 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2005 QVariant widgetValue() const override;
2006
2007 QString modelerExpressionFormatString() const override;
2008
2009 private:
2010 QgsProcessingMultipleLayerPanelWidget *mPanel = nullptr;
2011
2012 friend class TestProcessingGui;
2013};
2014
2020class GUI_EXPORT QgsProcessingDestinationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2021{
2022 Q_OBJECT
2023
2024 public:
2025 QgsProcessingDestinationParameterDefinitionWidget(
2026 const QString &type,
2027 QgsProcessingContext &context,
2028 const QgsProcessingParameterWidgetContext &widgetContext,
2029 const QgsProcessingDestinationParameter *definition = nullptr,
2030 const QgsProcessingAlgorithm *algorithm = nullptr,
2031 QWidget *parent SIP_TRANSFERTHIS = nullptr
2032 );
2033
2034 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2035
2036 private:
2037 QString mType;
2038 QgsProcessingLayerOutputDestinationWidget *mDestinationWidget = nullptr;
2039 std::unique_ptr< QgsProcessingDestinationParameter > mExistingDestinationParameter;
2040};
2041
2042class GUI_EXPORT QgsProcessingOutputWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2043{
2044 Q_OBJECT
2045
2046 public:
2047 QgsProcessingOutputWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2048
2049 // QgsProcessingParameterWidgetWrapper interface
2050 QWidget *createWidget() override SIP_FACTORY;
2051 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2052 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2053 ) override;
2054
2055 protected:
2056 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2057 QVariant widgetValue() const override;
2058 QVariantMap customProperties() const override;
2059
2060 private:
2061 QgsProcessingLayerOutputDestinationWidget *mOutputWidget = nullptr;
2062 int mBlockSignals = 0;
2063
2064 friend class TestProcessingGui;
2065};
2066
2067
2068class GUI_EXPORT QgsProcessingFeatureSinkWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2069{
2070 Q_OBJECT
2071
2072 public:
2073 QgsProcessingFeatureSinkWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2074
2075 // QgsProcessingParameterWidgetFactoryInterface
2076 QString parameterType() const override;
2077 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2078
2079 protected:
2080 QString modelerExpressionFormatString() const override;
2081
2082 private:
2083 QgsProcessingContext mContext;
2084};
2085
2086class GUI_EXPORT QgsProcessingVectorDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2087{
2088 Q_OBJECT
2089
2090 public:
2091 QgsProcessingVectorDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2092
2093 // QgsProcessingParameterWidgetFactoryInterface
2094 QString parameterType() const override;
2095 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2096
2097 protected:
2098 QString modelerExpressionFormatString() const override;
2099};
2100
2101class GUI_EXPORT QgsProcessingRasterDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2102{
2103 Q_OBJECT
2104
2105 public:
2106 QgsProcessingRasterDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2107
2108 // QgsProcessingParameterWidgetFactoryInterface
2109 QString parameterType() const override;
2110 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2111
2112 protected:
2113 QString modelerExpressionFormatString() const override;
2114};
2115
2116class GUI_EXPORT QgsProcessingPointCloudDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2117{
2118 Q_OBJECT
2119
2120 public:
2121 QgsProcessingPointCloudDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2122
2123 // QgsProcessingParameterWidgetFactoryInterface
2124 QString parameterType() const override;
2125 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2126
2127 protected:
2128 QString modelerExpressionFormatString() const override;
2129};
2130
2131class GUI_EXPORT QgsProcessingFileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2132{
2133 Q_OBJECT
2134
2135 public:
2136 QgsProcessingFileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2137
2138 // QgsProcessingParameterWidgetFactoryInterface
2139 QString parameterType() const override;
2140 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2141
2142 protected:
2143 QString modelerExpressionFormatString() const override;
2144};
2145
2146class GUI_EXPORT QgsProcessingFolderDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2147{
2148 Q_OBJECT
2149
2150 public:
2151 QgsProcessingFolderDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2152
2153 // QgsProcessingParameterWidgetFactoryInterface
2154 QString parameterType() const override;
2155 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2156
2157 protected:
2158 QString modelerExpressionFormatString() const override;
2159};
2160
2161class GUI_EXPORT QgsProcessingPointCloudLayerWidgetWrapper : public QgsProcessingMapLayerWidgetWrapper
2162{
2163 Q_OBJECT
2164
2165 public:
2166 QgsProcessingPointCloudLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2167
2168 // QgsProcessingParameterWidgetFactoryInterface
2169 QString parameterType() const override;
2170 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2171 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2172 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2173 ) override;
2174
2175 protected:
2176 QString modelerExpressionFormatString() const override;
2177};
2178
2179
2180class GUI_EXPORT QgsProcessingAnnotationLayerWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2181{
2182 Q_OBJECT
2183
2184 public:
2185 QgsProcessingAnnotationLayerWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2186
2187 // QgsProcessingParameterWidgetFactoryInterface
2188 QString parameterType() const override;
2189 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2190 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2191 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2192 ) override;
2193 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2194
2195 QWidget *createWidget() override SIP_FACTORY;
2196
2197 protected:
2198 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2199 QVariant widgetValue() const override;
2200
2201 QString modelerExpressionFormatString() const override;
2202
2203 private:
2204 QPointer<QgsMapLayerComboBox> mComboBox;
2205 int mBlockSignals = 0;
2206
2207 friend class TestProcessingGui;
2208};
2209
2210
2211class GUI_EXPORT QgsProcessingPointCloudAttributePanelWidget : public QWidget
2212{
2213 Q_OBJECT
2214
2215 public:
2216 QgsProcessingPointCloudAttributePanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterPointCloudAttribute *param = nullptr );
2217
2218 void setAttributes( const QgsPointCloudAttributeCollection &attributes );
2219
2220 QgsPointCloudAttributeCollection attributes() const { return mAttributes; }
2221
2222 QVariant value() const { return mValue; }
2223 void setValue( const QVariant &value );
2224
2225 signals:
2226
2227 void changed();
2228
2229 private slots:
2230
2231 void showDialog();
2232
2233 private:
2234 void updateSummaryText();
2235
2236 QgsPointCloudAttributeCollection mAttributes;
2237
2238 const QgsProcessingParameterPointCloudAttribute *mParam = nullptr;
2239 QLineEdit *mLineEdit = nullptr;
2240 QToolButton *mToolButton = nullptr;
2241
2242 QVariantList mValue;
2243
2244 friend class TestProcessingGui;
2245};
2246
2247class GUI_EXPORT QgsProcessingPointCloudAttributeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
2248{
2249 Q_OBJECT
2250 public:
2251 QgsProcessingPointCloudAttributeParameterDefinitionWidget(
2252 QgsProcessingContext &context,
2253 const QgsProcessingParameterWidgetContext &widgetContext,
2254 const QgsProcessingParameterDefinition *definition = nullptr,
2255 const QgsProcessingAlgorithm *algorithm = nullptr,
2256 QWidget *parent SIP_TRANSFERTHIS = nullptr
2257 );
2258 QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, Qgis::ProcessingParameterFlags flags ) const override;
2259
2260 private:
2261 QComboBox *mParentLayerComboBox = nullptr;
2262 QLineEdit *mDefaultLineEdit = nullptr;
2263 QCheckBox *mAllowMultipleCheckBox = nullptr;
2264 QCheckBox *mDefaultToAllCheckBox = nullptr;
2265};
2266
2267class GUI_EXPORT QgsProcessingPointCloudAttributeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2268{
2269 Q_OBJECT
2270
2271 public:
2272 QgsProcessingPointCloudAttributeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2273
2274 // QgsProcessingParameterWidgetFactoryInterface
2275 QString parameterType() const override;
2276 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2277 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2278 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2279 ) override;
2280
2281 // QgsProcessingParameterWidgetWrapper interface
2282 QWidget *createWidget() override SIP_FACTORY;
2283 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2284
2285 public slots:
2286 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2287
2288 protected:
2289 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2290 QVariant widgetValue() const override;
2291
2292 QString modelerExpressionFormatString() const override;
2293
2294 private:
2295 QgsPointCloudAttributeComboBox *mComboBox = nullptr;
2296 QgsProcessingPointCloudAttributePanelWidget *mPanel = nullptr;
2297 QLineEdit *mLineEdit = nullptr;
2298
2299 std::unique_ptr<QgsPointCloudLayer> mParentLayer;
2300
2301 friend class TestProcessingGui;
2302};
2303
2304class GUI_EXPORT QgsProcessingVectorTileDestinationWidgetWrapper : public QgsProcessingOutputWidgetWrapper
2305{
2306 Q_OBJECT
2307
2308 public:
2309 QgsProcessingVectorTileDestinationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2310
2311 // QgsProcessingParameterWidgetFactoryInterface
2312 QString parameterType() const override;
2313 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2314
2315 protected:
2316 QString modelerExpressionFormatString() const override;
2317};
2318
2319
2320class GUI_EXPORT QgsHeatmapPixelSizeWidget : public QgsPanelWidget, private Ui::QgsProcessingPixelSizeWidgetBase
2321{
2322 Q_OBJECT
2323 public:
2324 QgsHeatmapPixelSizeWidget( QWidget *parent = nullptr );
2325
2326 void setLayer( QgsVectorLayer *layer );
2327 QgsVectorLayer *layer();
2328 void setRadius( double radius );
2329 void setRadiusField( const QString &radiusField );
2330
2331 double value() const;
2332 void setValue( double value );
2333
2334 signals:
2335 void valueChanged();
2336
2337 private slots:
2338 void pixelSizeChanged();
2339 void rowsChanged();
2340 void columnsChanged();
2341
2342 private:
2343 void recalculateBounds();
2344
2345 QPointer<QgsVectorLayer> mLayer;
2346 QgsRectangle mLayerBounds;
2347 QgsRectangle mRasterBounds;
2348 double mRadius = 100.0;
2349 QString mRadiusField;
2350
2351 friend class TestProcessingGui;
2352};
2353
2354class GUI_EXPORT QgsProcessingHeatmapPixelSizeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2355{
2356 Q_OBJECT
2357 public:
2358 QgsProcessingHeatmapPixelSizeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2359
2360 // QgsProcessingParameterWidgetFactoryInterface
2361 QString parameterType() const override;
2362 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2363 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2364 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2365 ) override;
2366
2367 // QgsProcessingParameterWidgetWrapper interface
2368 QWidget *createWidget() override;
2369 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2370
2371 public slots:
2372 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2373
2374 protected:
2375 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2376 QVariant widgetValue() const override;
2377 const QgsVectorLayer *linkedVectorLayer() const override;
2378
2379 private slots:
2380 void radiusChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2381 void radiusFieldChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2382
2383 private:
2384 QgsHeatmapPixelSizeWidget *mWidget = nullptr;
2385 QgsDoubleSpinBox *mFallbackSpinBox = nullptr;
2386
2387 std::unique_ptr<QgsMapLayer> mParentLayer;
2388
2389 friend class TestProcessingGui;
2390};
2391
2392
2393class GUI_EXPORT QgsReliefColorsWidget : public QgsPanelWidget, private Ui::QgsProcessingReliefColorsWidgetBase
2394{
2395 Q_OBJECT
2396 public:
2397 QgsReliefColorsWidget( QWidget *parent = nullptr );
2398
2399 void setLayer( QgsRasterLayer *layer );
2400 QgsRasterLayer *layer();
2401
2402 QList< QgsRasterReliefColor > colors() const;
2403
2404 void setColors( const QList< QgsRasterReliefColor > &colors );
2405
2406 public slots:
2407
2408 void autoCalculate();
2409
2410 signals:
2411 void valueChanged();
2412
2413 private slots:
2414 void addClicked();
2415 void removeClicked();
2416 void upClicked();
2417 void downClicked();
2418 void loadClicked();
2419 void saveClicked();
2420 void itemDoubleClicked( QTreeWidgetItem *item, int column );
2421
2422 private:
2423 QPointer<QgsRasterLayer> mLayer;
2424};
2425
2426
2427class GUI_EXPORT QgsProcessingReliefColorsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2428{
2429 Q_OBJECT
2430 public:
2431 QgsProcessingReliefColorsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2432
2433 // QgsProcessingParameterWidgetFactoryInterface
2434 QString parameterType() const override;
2435 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2436 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2437 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2438 ) override;
2439
2440 // QgsProcessingParameterWidgetWrapper interface
2441 QWidget *createWidget() override;
2442 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2443
2444 public slots:
2445 void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
2446
2447 protected:
2448 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2449 QVariant widgetValue() const override;
2450 QString modelerExpressionFormatString() const override;
2451
2452 private:
2453 QgsReliefColorsWidget *mWidget = nullptr;
2454 QLineEdit *mFallbackLineEdit = nullptr;
2455
2456 std::unique_ptr<QgsRasterLayer> mParentLayer;
2457
2458 friend class TestProcessingGui;
2459};
2460
2461class GUI_EXPORT QgsExecuteSqlWidget : public QWidget
2462{
2463 Q_OBJECT
2464
2465 public:
2466 explicit QgsExecuteSqlWidget( QWidget *parent = nullptr );
2467 void setValue( const QString &text );
2468 QString value() const;
2469 QgsFieldExpressionWidget *expressionWidget() const { return mExpressionWidget; }
2470 QPlainTextEdit *textEdit() const { return mTextEdit; }
2471
2472 signals:
2473
2474 void changed();
2475
2476 private slots:
2477
2478 void insertExpression();
2479
2480 private:
2481 QPlainTextEdit *mTextEdit = nullptr;
2482 QgsFieldExpressionWidget *mExpressionWidget = nullptr;
2483 QPushButton *mInsertButton = nullptr;
2484};
2485
2486class GUI_EXPORT QgsProcessingExecuteSqlWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2487{
2488 Q_OBJECT
2489
2490 public:
2491 QgsProcessingExecuteSqlWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QObject *parent = nullptr );
2492
2493 // QgsProcessingParameterWidgetFactoryInterface
2494 QString parameterType() const override;
2495 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override SIP_FACTORY;
2496 // QgsProcessingParameterWidgetWrapper interface
2497 QWidget *createWidget() override SIP_FACTORY;
2498
2499 protected:
2500 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2501 QVariant widgetValue() const override;
2502
2503 private:
2504 QgsExecuteSqlWidget *mExecuteSqlWidget = nullptr;
2505
2506 friend class TestProcessingGui;
2507};
2508
2509class GUI_EXPORT QgsInterpolationSourceWidget : public QWidget, private Ui::QgsInterpolationSourceWidgetBase
2510{
2511 Q_OBJECT
2512
2513 public:
2514 explicit QgsInterpolationSourceWidget( QWidget *parent = nullptr );
2515
2516 void setValue( const QVariant &value, QgsProcessingContext &context );
2517 QVariant value() const;
2518
2519 signals:
2520
2521 void changed();
2522
2523 private slots:
2524 void addLayer();
2525 void removeLayer();
2526 void layerChanged( QgsVectorLayer *layer );
2527 void updateAddButtonState();
2528
2529 private:
2530 void addLayerData( QgsVectorLayer *layer, const QString &attribute );
2531 bool canAddLayer() const;
2532
2533 friend class TestProcessingGui;
2534};
2535
2536class GUI_EXPORT QgsProcessingInterpolationSourceWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2537{
2538 Q_OBJECT
2539
2540 public:
2541 QgsProcessingInterpolationSourceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QObject *parent = nullptr );
2542
2543 QString parameterType() const override;
2544 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2545 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2546 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2547 ) override;
2548
2549 QWidget *createWidget() override SIP_FACTORY;
2550
2551 protected:
2552 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2553 QVariant widgetValue() const override;
2554
2555 private:
2556 QgsInterpolationSourceWidget *mWidget = nullptr;
2557
2558 friend class TestProcessingGui;
2559};
2560
2561
2562class GUI_EXPORT QgsInterpolationPixelSizeWidget : public QgsPanelWidget, private Ui::QgsProcessingPixelSizeWidgetBase
2563{
2564 Q_OBJECT
2565 public:
2566 QgsInterpolationPixelSizeWidget( QWidget *parent = nullptr );
2567
2568 void setSourceData( const QString &sourceData, QgsProcessingContext &context );
2569 void setExtent( const QgsRectangle &extent );
2570
2571 double value() const;
2572 void setValue( double value );
2573
2574 signals:
2575 void valueChanged();
2576
2577 private slots:
2578 void pixelSizeChanged();
2579 void rowsChanged();
2580 void columnsChanged();
2581
2582 private:
2583 QgsRectangle mExtent;
2584
2585 friend class TestProcessingGui;
2586};
2587
2588
2589class GUI_EXPORT QgsProcessingInterpolationPixelSizeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2590{
2591 Q_OBJECT
2592 public:
2593 QgsProcessingInterpolationPixelSizeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2594
2595 // QgsProcessingParameterWidgetFactoryInterface
2596 QString parameterType() const override;
2597 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2598 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2599 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2600 ) override;
2601
2602 // QgsProcessingParameterWidgetWrapper interface
2603 QWidget *createWidget() override;
2604 void postInitialize( const QList<QgsAbstractProcessingParameterWidgetWrapper *> &wrappers ) override;
2605
2606 protected:
2607 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2608 QVariant widgetValue() const override;
2609
2610 private slots:
2611 void sourceChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2612 void extentChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper );
2613
2614 private:
2615 QgsInterpolationPixelSizeWidget *mWidget = nullptr;
2616 QgsDoubleSpinBox *mFallbackSpinBox = nullptr;
2617
2618 friend class TestProcessingGui;
2619};
2620
2621
2622class GUI_EXPORT QgsTileExtentMaxZoomWidget : public QgsPanelWidget, private Ui::QgsProcessingTileExtentMaxZoomWidgetBase
2623{
2624 Q_OBJECT
2625 public:
2626 QgsTileExtentMaxZoomWidget( const QgsProcessingParameterTileExtentMaxZoomList *param );
2627 ~QgsTileExtentMaxZoomWidget() override;
2628
2629 QList< QgsTileExtentMaxZoomRegion > regions() const;
2630
2631 void setRegions( const QList< QgsTileExtentMaxZoomRegion > &regions );
2632
2633 void setMapCanvas( QgsMapCanvas *canvas );
2634
2635 signals:
2636 void valueChanged();
2637 void toggleDialogVisibility( bool visible );
2638
2639 private slots:
2640 void addClicked();
2641 void removeClicked();
2642 void itemDoubleClicked( QTreeWidgetItem *item, int column );
2643 void extentDrawn( const QgsRectangle &extent );
2644 void mapToolDeactivated();
2645
2646 private:
2647 const QgsProcessingParameterTileExtentMaxZoomList *mParam = nullptr;
2648
2649 QPointer<QgsMapCanvas> mMapCanvas;
2650
2651 static QString regionToString( const QgsReferencedRectangle &region );
2652
2653 std::unique_ptr<QgsMapToolExtent> mMapToolExtent;
2654 QPointer<QgsMapTool> mMapToolPrevious = nullptr;
2655};
2656
2657class GUI_EXPORT QgsProcessingTileExtentMaxZoomParameterPanel : public QWidget
2658{
2659 Q_OBJECT
2660
2661 public:
2662 QgsProcessingTileExtentMaxZoomParameterPanel( const QgsProcessingParameterTileExtentMaxZoomList *param );
2663
2664 QVariant value() const;
2665
2666 void setValue( const QVariant &value, QgsProcessingContext &context );
2667 void setRegions( const QList< QgsTileExtentMaxZoomRegion > &regions );
2668
2669 void setMapCanvas( QgsMapCanvas *canvas );
2670
2671 signals:
2672
2673 void changed();
2674 void toggleDialogVisibility( bool visible );
2675
2676 private slots:
2677
2678 void showDialog();
2679
2680 private:
2681 void updateSummaryText();
2682 const QgsProcessingParameterTileExtentMaxZoomList *mParam = nullptr;
2683 QLineEdit *mLineEdit = nullptr;
2684 QToolButton *mToolButton = nullptr;
2685
2686 QList<QgsTileExtentMaxZoomRegion> mRegions;
2687 QPointer< QgsTileExtentMaxZoomWidget > mPanelWidget;
2688 QPointer<QgsMapCanvas> mMapCanvas;
2689
2690
2691 friend class TestProcessingGui;
2692};
2693
2694
2695class GUI_EXPORT QgsProcessingTileExtentMaxZoomWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
2696{
2697 Q_OBJECT
2698 public:
2699 QgsProcessingTileExtentMaxZoomWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr, Qgis::ProcessingMode type = Qgis::ProcessingMode::Standard, QWidget *parent = nullptr );
2700
2701 // QgsProcessingParameterWidgetFactoryInterface
2702 QString parameterType() const override;
2703 QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, Qgis::ProcessingMode type ) override;
2704 QgsProcessingAbstractParameterDefinitionWidget *createParameterDefinitionWidget(
2705 QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition = nullptr, const QgsProcessingAlgorithm *algorithm = nullptr
2706 ) override;
2707
2708 // QgsProcessingParameterWidgetWrapper interface
2709 QWidget *createWidget() override;
2710 void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
2711 void setDialog( QWidget *dialog ) override;
2712
2713 protected:
2714 void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
2715 QVariant widgetValue() const override;
2716 QString modelerExpressionFormatString() const override;
2717
2718 private:
2719 QgsProcessingTileExtentMaxZoomParameterPanel *mWidget = nullptr;
2720 QLineEdit *mFallbackLineEdit = nullptr;
2721 QWidget *mDialog = nullptr;
2722
2723 friend class TestProcessingGui;
2724};
2725
2726
2728
2729#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