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