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