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