QGIS API Documentation  3.12.1-BucureČ™ti (121cc00ff0)
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"
26 #include "qgsprocessingcontext.h"
27 
28 #include <QAbstractButton>
29 
30 class QCheckBox;
31 class QComboBox;
32 class QLineEdit;
33 class QPlainTextEdit;
34 class QToolButton;
35 class QButtonGroup;
37 class QgsSpinBox;
38 class QgsDoubleSpinBox;
40 class QgsProcessingMatrixParameterPanel;
41 class QgsFileWidget;
45 class QgsLayoutComboBox;
47 class QgsPrintLayout;
48 class QgsScaleWidget;
49 class QgsSnapIndicator;
50 class QgsFilterLineEdit;
51 class QgsColorButton;
53 class QgsFieldComboBox;
54 
56 
57 class GUI_EXPORT QgsProcessingBooleanParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
58 {
59  Q_OBJECT
60  public:
61 
62  QgsProcessingBooleanParameterDefinitionWidget( QgsProcessingContext &context,
63  const QgsProcessingParameterWidgetContext &widgetContext,
64  const QgsProcessingParameterDefinition *definition = nullptr,
65  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
66  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
67 
68  private:
69 
70  QCheckBox *mDefaultCheckBox = nullptr;
71 
72 };
73 
74 class GUI_EXPORT QgsProcessingBooleanWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
75 {
76  Q_OBJECT
77 
78  public:
79 
80  QgsProcessingBooleanWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
81  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
82 
83  // QgsProcessingParameterWidgetFactoryInterface
84  QString parameterType() const override;
87  QgsProcessingContext &context,
88  const QgsProcessingParameterWidgetContext &widgetContext,
89  const QgsProcessingParameterDefinition *definition = nullptr,
90  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
91 
92  // QgsProcessingParameterWidgetWrapper interface
93  QWidget *createWidget() override SIP_FACTORY;
94  QLabel *createLabel() override SIP_FACTORY;
95 
96  protected:
97 
98  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
99  QVariant widgetValue() const override;
100 
101  QStringList compatibleParameterTypes() const override;
102 
103  QStringList compatibleOutputTypes() const override;
104 
105  QList< int > compatibleDataTypes() const override;
106 
107  private:
108 
109  QCheckBox *mCheckBox = nullptr;
110  QComboBox *mComboBox = nullptr;
111 
112  friend class TestProcessingGui;
113 };
114 
115 class GUI_EXPORT QgsProcessingCrsWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
116 {
117  Q_OBJECT
118 
119  public:
120 
121  QgsProcessingCrsWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
122  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
123 
124  // QgsProcessingParameterWidgetFactoryInterface
125  QString parameterType() const override;
126  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
127 
128  // QgsProcessingParameterWidgetWrapper interface
129  QWidget *createWidget() override SIP_FACTORY;
130 
131  protected:
132 
133  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
134  QVariant widgetValue() const override;
135 
136  QStringList compatibleParameterTypes() const override;
137  QStringList compatibleOutputTypes() const override;
138  QList< int > compatibleDataTypes() const override;
139  QString modelerExpressionFormatString() const override;
140 
141  private:
142 
143  QgsProjectionSelectionWidget *mProjectionSelectionWidget = nullptr;
144  QCheckBox *mUseProjectCrsCheckBox = nullptr;
145 
146  friend class TestProcessingGui;
147 };
148 
149 
150 
151 class GUI_EXPORT QgsProcessingStringParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
152 {
153  Q_OBJECT
154  public:
155 
156  QgsProcessingStringParameterDefinitionWidget( QgsProcessingContext &context,
157  const QgsProcessingParameterWidgetContext &widgetContext,
158  const QgsProcessingParameterDefinition *definition = nullptr,
159  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
160  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
161 
162  private:
163 
164  QLineEdit *mDefaultLineEdit = nullptr;
165  QCheckBox *mMultiLineCheckBox = nullptr;
166 
167 };
168 
169 class GUI_EXPORT QgsProcessingStringWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
170 {
171  Q_OBJECT
172 
173  public:
174 
175  QgsProcessingStringWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
176  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
177 
178  // QgsProcessingParameterWidgetFactoryInterface
179  QString parameterType() const override;
180  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
182  QgsProcessingContext &context,
183  const QgsProcessingParameterWidgetContext &widgetContext,
184  const QgsProcessingParameterDefinition *definition = nullptr,
185  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
186 
187  // QgsProcessingParameterWidgetWrapper interface
188  QWidget *createWidget() override SIP_FACTORY;
189 
190  protected:
191 
192  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
193  QVariant widgetValue() const override;
194 
195  QStringList compatibleParameterTypes() const override;
196 
197  QStringList compatibleOutputTypes() const override;
198 
199  QList< int > compatibleDataTypes() const override;
200 
201  private:
202 
203  QLineEdit *mLineEdit = nullptr;
204  QPlainTextEdit *mPlainTextEdit = nullptr;
205 
206  friend class TestProcessingGui;
207 };
208 
209 
210 class GUI_EXPORT QgsProcessingAuthConfigWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
211 {
212  Q_OBJECT
213 
214  public:
215 
216  QgsProcessingAuthConfigWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
217  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
218 
219  // QgsProcessingParameterWidgetFactoryInterface
220  QString parameterType() const override;
221  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
222 
223  // QgsProcessingParameterWidgetWrapper interface
224  QWidget *createWidget() override SIP_FACTORY;
225 
226  protected:
227 
228  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
229  QVariant widgetValue() const override;
230 
231  QStringList compatibleParameterTypes() const override;
232 
233  QStringList compatibleOutputTypes() const override;
234 
235  QList< int > compatibleDataTypes() const override;
236 
237  private:
238 
239  QgsAuthConfigSelect *mAuthConfigSelect = nullptr;
240 
241  friend class TestProcessingGui;
242 };
243 
244 
245 class GUI_EXPORT QgsProcessingNumericWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
246 {
247  Q_OBJECT
248 
249  public:
250 
251  QgsProcessingNumericWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
252  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
253 
254  // QgsProcessingParameterWidgetFactoryInterface
255  QString parameterType() const override;
256  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
257 
258  // QgsProcessingParameterWidgetWrapper interface
259  QWidget *createWidget() override SIP_FACTORY;
260 
261  protected:
262 
263  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
264  QVariant widgetValue() const override;
265 
266  QStringList compatibleParameterTypes() const override;
267 
268  QStringList compatibleOutputTypes() const override;
269 
270  QList< int > compatibleDataTypes() const override;
271 
272  protected:
273 
274  QgsSpinBox *mSpinBox = nullptr;
275  QgsDoubleSpinBox *mDoubleSpinBox = nullptr;
276 
277  private:
278 
279  static double calculateStep( double minimum, double maximum );
280 
281  bool mAllowingNull = false;
282 
283  friend class TestProcessingGui;
284 };
285 
286 
287 class GUI_EXPORT QgsProcessingDistanceWidgetWrapper : public QgsProcessingNumericWidgetWrapper
288 {
289  Q_OBJECT
290 
291  public:
292 
293  QgsProcessingDistanceWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
294  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
295 
296  // QgsProcessingParameterWidgetFactoryInterface
297  QString parameterType() const override;
298  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
299 
300  // QgsProcessingParameterWidgetWrapper interface
301  QWidget *createWidget() override SIP_FACTORY;
302  void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
303 
304  public slots:
305  void setUnitParameterValue( const QVariant &value );
306  void setUnits( QgsUnitTypes::DistanceUnit unit );
307 
308  protected:
309 
310  QVariant widgetValue() const override;
311 
312  private:
313 
314  QgsUnitTypes::DistanceUnit mBaseUnit = QgsUnitTypes::DistanceUnknownUnit;
315  QLabel *mLabel = nullptr;
316  QWidget *mWarningLabel = nullptr;
317  QComboBox *mUnitsCombo = nullptr;
318 
319  friend class TestProcessingGui;
320 };
321 
322 
323 class GUI_EXPORT QgsProcessingScaleWidgetWrapper : public QgsProcessingNumericWidgetWrapper
324 {
325  Q_OBJECT
326 
327  public:
328 
329  QgsProcessingScaleWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
330  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
331 
332  // QgsProcessingParameterWidgetFactoryInterface
333  QString parameterType() const override;
334  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
335 
336  // QgsProcessingParameterWidgetWrapper interface
337  QWidget *createWidget() override SIP_FACTORY;
338  void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
339  protected:
340 
341  QVariant widgetValue() const override;
342  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
343 
344  private:
345 
346  QgsScaleWidget *mScaleWidget = nullptr;
347 
348  friend class TestProcessingGui;
349 };
350 
351 class GUI_EXPORT QgsProcessingRangeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
352 {
353  Q_OBJECT
354 
355  public:
356 
357  QgsProcessingRangeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
358  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
359 
360  // QgsProcessingParameterWidgetFactoryInterface
361  QString parameterType() const override;
362  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
363 
364  // QgsProcessingParameterWidgetWrapper interface
365  QWidget *createWidget() override SIP_FACTORY;
366 
367  protected:
368 
369  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
370  QVariant widgetValue() const override;
371  QStringList compatibleParameterTypes() const override;
372  QStringList compatibleOutputTypes() const override;
373  QList< int > compatibleDataTypes() const override;
374  QString modelerExpressionFormatString() const override;
375 
376  protected:
377 
378  QgsDoubleSpinBox *mMinSpinBox = nullptr;
379  QgsDoubleSpinBox *mMaxSpinBox = nullptr;
380 
381  private:
382 
383  int mBlockChangedSignal = 0;
384  bool mAllowingNull = false;
385 
386  friend class TestProcessingGui;
387 };
388 
389 
390 class GUI_EXPORT QgsProcessingMatrixWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
391 {
392  Q_OBJECT
393 
394  public:
395 
396  QgsProcessingMatrixWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
397  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
398 
399  // QgsProcessingParameterWidgetFactoryInterface
400  QString parameterType() const override;
401  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
402 
403  // QgsProcessingParameterWidgetWrapper interface
404  QWidget *createWidget() override SIP_FACTORY;
405 
406  protected:
407 
408  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
409  QVariant widgetValue() const override;
410 
411  QStringList compatibleParameterTypes() const override;
412  QStringList compatibleOutputTypes() const override;
413  QList< int > compatibleDataTypes() const override;
414  QString modelerExpressionFormatString() const override;
415 
416  private:
417 
418  QgsProcessingMatrixParameterPanel *mMatrixWidget = nullptr;
419 
420  friend class TestProcessingGui;
421 };
422 
423 class GUI_EXPORT QgsProcessingFileParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
424 {
425  Q_OBJECT
426  public:
427 
428  QgsProcessingFileParameterDefinitionWidget( QgsProcessingContext &context,
429  const QgsProcessingParameterWidgetContext &widgetContext,
430  const QgsProcessingParameterDefinition *definition = nullptr,
431  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
432  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
433 
434  private:
435 
436  QComboBox *mTypeComboBox = nullptr;
437  QComboBox *mFilterComboBox = nullptr;
438  QgsFileWidget *mDefaultFileWidget = nullptr;
439 
440 };
441 
442 class GUI_EXPORT QgsProcessingFileWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
443 {
444  Q_OBJECT
445 
446  public:
447 
448  QgsProcessingFileWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
449  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
450 
451  // QgsProcessingParameterWidgetFactoryInterface
452  QString parameterType() const override;
453  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
455  QgsProcessingContext &context,
456  const QgsProcessingParameterWidgetContext &widgetContext,
457  const QgsProcessingParameterDefinition *definition = nullptr,
458  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
459 
460  // QgsProcessingParameterWidgetWrapper interface
461  QWidget *createWidget() override SIP_FACTORY;
462 
463  protected:
464 
465  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
466  QVariant widgetValue() const override;
467 
468  QStringList compatibleParameterTypes() const override;
469 
470  QStringList compatibleOutputTypes() const override;
471 
472  QList< int > compatibleDataTypes() const override;
473  QString modelerExpressionFormatString() const override;
474 
475  private:
476 
477  QgsFileWidget *mFileWidget = nullptr;
478 
479  friend class TestProcessingGui;
480 };
481 
482 class GUI_EXPORT QgsProcessingExpressionWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
483 {
484  Q_OBJECT
485 
486  public:
487 
488  QgsProcessingExpressionWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
489  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
490 
491  // QgsProcessingParameterWidgetFactoryInterface
492  QString parameterType() const override;
493  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
494 
495  // QgsProcessingParameterWidgetWrapper interface
496  QWidget *createWidget() override SIP_FACTORY;
497  void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
498  public slots:
499  void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
500  protected:
501 
502  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
503  QVariant widgetValue() const override;
504 
505  QStringList compatibleParameterTypes() const override;
506 
507  QStringList compatibleOutputTypes() const override;
508 
509  QList< int > compatibleDataTypes() const override;
510  QString modelerExpressionFormatString() const override;
511  const QgsVectorLayer *linkedVectorLayer() const override;
512  private:
513 
514  QgsFieldExpressionWidget *mFieldExpWidget = nullptr;
515  QgsExpressionLineEdit *mExpLineEdit = nullptr;
516  std::unique_ptr< QgsVectorLayer > mParentLayer;
517 
518  friend class TestProcessingGui;
519 };
520 
521 
522 class GUI_EXPORT QgsProcessingEnumCheckboxPanelWidget : public QWidget
523 {
524  Q_OBJECT
525 
526  public:
527 
528  QgsProcessingEnumCheckboxPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr, int columns = 2 );
529  QVariant value() const;
530  void setValue( const QVariant &value );
531 
532  signals:
533 
534  void changed();
535 
536  private slots:
537 
538  void showPopupMenu();
539  void selectAll();
540  void deselectAll();
541 
542  private:
543 
544  const QgsProcessingParameterEnum *mParam = nullptr;
545  QMap< QVariant, QAbstractButton * > mButtons;
546  QButtonGroup *mButtonGroup = nullptr;
547  int mColumns = 2;
548  bool mBlockChangedSignal = false;
549 
550  friend class TestProcessingGui;
551 };
552 
553 class GUI_EXPORT QgsProcessingEnumPanelWidget : public QWidget
554 {
555  Q_OBJECT
556 
557  public:
558 
559  QgsProcessingEnumPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterEnum *param = nullptr );
560  QVariant value() const { return mValue; }
561  void setValue( const QVariant &value );
562 
563  signals:
564 
565  void changed();
566 
567  private slots:
568 
569  void showDialog();
570 
571  private:
572 
573  void updateSummaryText();
574 
575  const QgsProcessingParameterEnum *mParam = nullptr;
576  QLineEdit *mLineEdit = nullptr;
577  QToolButton *mToolButton = nullptr;
578 
579  QVariantList mValue;
580 
581  friend class TestProcessingGui;
582 };
583 
584 
585 class GUI_EXPORT QgsProcessingEnumWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
586 {
587  Q_OBJECT
588 
589  public:
590 
591  QgsProcessingEnumWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
592  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
593 
594  // QgsProcessingParameterWidgetFactoryInterface
595  QString parameterType() const override;
596  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
597 
598  // QgsProcessingParameterWidgetWrapper interface
599  QWidget *createWidget() override SIP_FACTORY;
600 
601  protected:
602 
603  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
604  QVariant widgetValue() const override;
605 
606  QStringList compatibleParameterTypes() const override;
607 
608  QStringList compatibleOutputTypes() const override;
609 
610  QList< int > compatibleDataTypes() const override;
611  QString modelerExpressionFormatString() const override;
612  private:
613 
614  QComboBox *mComboBox = nullptr;
615  QgsProcessingEnumPanelWidget *mPanel = nullptr;
616  QgsProcessingEnumCheckboxPanelWidget *mCheckboxPanel = nullptr;
617 
618  friend class TestProcessingGui;
619 };
620 
621 
622 
623 class GUI_EXPORT QgsProcessingLayoutWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
624 {
625  Q_OBJECT
626 
627  public:
628 
629  QgsProcessingLayoutWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
630  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
631 
632  // QgsProcessingParameterWidgetFactoryInterface
633  QString parameterType() const override;
634  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
635 
636  // QgsProcessingParameterWidgetWrapper interface
637  QWidget *createWidget() override SIP_FACTORY;
638 
639  protected:
640 
641  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
642  QVariant widgetValue() const override;
643 
644  QStringList compatibleParameterTypes() const override;
645 
646  QStringList compatibleOutputTypes() const override;
647 
648  QList< int > compatibleDataTypes() const override;
649  QString modelerExpressionFormatString() const override;
650  private:
651 
652  QgsLayoutComboBox *mComboBox = nullptr;
653  QLineEdit *mLineEdit = nullptr;
654 
655  friend class TestProcessingGui;
656 };
657 
658 
659 
660 class GUI_EXPORT QgsProcessingLayoutItemParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
661 {
662  Q_OBJECT
663  public:
664 
665  QgsProcessingLayoutItemParameterDefinitionWidget( QgsProcessingContext &context,
666  const QgsProcessingParameterWidgetContext &widgetContext,
667  const QgsProcessingParameterDefinition *definition = nullptr,
668  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
669  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
670 
671  private:
672 
673  QComboBox *mParentLayoutComboBox = nullptr;
674 
675 };
676 
677 class GUI_EXPORT QgsProcessingLayoutItemWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
678 {
679  Q_OBJECT
680 
681  public:
682 
683  QgsProcessingLayoutItemWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
684  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
685 
686  // QgsProcessingParameterWidgetFactoryInterface
687  QString parameterType() const override;
688  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
690  QgsProcessingContext &context,
691  const QgsProcessingParameterWidgetContext &widgetContext,
692  const QgsProcessingParameterDefinition *definition = nullptr,
693  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
694 
695  // QgsProcessingParameterWidgetWrapper interface
696  QWidget *createWidget() override SIP_FACTORY;
697  void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
698 
699 
700  public slots:
701  void setLayoutParameterValue( const QVariant &value );
702  void setLayout( QgsPrintLayout *layout );
703 
704  protected:
705 
706  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
707  QVariant widgetValue() const override;
708 
709  QStringList compatibleParameterTypes() const override;
710 
711  QStringList compatibleOutputTypes() const override;
712 
713  QList< int > compatibleDataTypes() const override;
714  QString modelerExpressionFormatString() const override;
715  private:
716 
717  QgsLayoutItemComboBox *mComboBox = nullptr;
718  QLineEdit *mLineEdit = nullptr;
719 
720  friend class TestProcessingGui;
721 };
722 
723 class GUI_EXPORT QgsProcessingPointMapTool : public QgsMapTool
724 {
725  Q_OBJECT
726  public:
727  QgsProcessingPointMapTool( QgsMapCanvas *canvas );
728  ~QgsProcessingPointMapTool() override;
729  void deactivate() override;
730  void canvasMoveEvent( QgsMapMouseEvent *e ) override;
731  void canvasPressEvent( QgsMapMouseEvent *e ) override;
732  void keyPressEvent( QKeyEvent *e ) override;
733 
734  signals:
735 
736  void clicked( const QgsPointXY &point );
737  void complete();
738 
739  private:
740 
741  std::unique_ptr<QgsSnapIndicator> mSnapIndicator;
742  friend class TestProcessingGui;
743 };
744 
745 class GUI_EXPORT QgsProcessingPointPanel : public QWidget
746 {
747  Q_OBJECT
748 
749  public:
750 
751  QgsProcessingPointPanel( QWidget *parent );
752  void setMapCanvas( QgsMapCanvas *canvas );
753  void setAllowNull( bool allowNull );
754 
755  QVariant value() const;
756  void clear();
757  void setValue( const QgsPointXY &point, const QgsCoordinateReferenceSystem &crs );
758 
759  signals:
760 
761  void toggleDialogVisibility( bool visible );
762  void changed();
763 
764  private slots:
765 
766  void selectOnCanvas();
767  void updatePoint( const QgsPointXY &point );
768  void pointPicked();
769 
770  private:
771 
772  QgsFilterLineEdit *mLineEdit = nullptr;
773  QToolButton *mButton = nullptr;
774  QgsMapCanvas *mCanvas = nullptr;
776  QPointer< QgsMapTool > mPrevTool;
777  std::unique_ptr< QgsProcessingPointMapTool > mTool;
778  friend class TestProcessingGui;
779 };
780 
781 
782 class GUI_EXPORT QgsProcessingPointWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
783 {
784  Q_OBJECT
785 
786  public:
787 
788  QgsProcessingPointWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
789  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
790 
791  // QgsProcessingParameterWidgetFactoryInterface
792  QString parameterType() const override;
793  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
794 
795  // QgsProcessingParameterWidgetWrapper interface
796  QWidget *createWidget() override SIP_FACTORY;
797  void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
798  void setDialog( QDialog *dialog ) override;
799 
800  protected:
801 
802  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
803  QVariant widgetValue() const override;
804 
805  QStringList compatibleParameterTypes() const override;
806 
807  QStringList compatibleOutputTypes() const override;
808 
809  QList< int > compatibleDataTypes() const override;
810  QString modelerExpressionFormatString() const override;
811  private:
812 
813  QgsProcessingPointPanel *mPanel = nullptr;
814  QLineEdit *mLineEdit = nullptr;
815  QDialog *mDialog = nullptr;
816 
817  friend class TestProcessingGui;
818 };
819 
820 
821 class GUI_EXPORT QgsProcessingColorParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
822 {
823  Q_OBJECT
824  public:
825 
826  QgsProcessingColorParameterDefinitionWidget( QgsProcessingContext &context,
827  const QgsProcessingParameterWidgetContext &widgetContext,
828  const QgsProcessingParameterDefinition *definition = nullptr,
829  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
830  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
831 
832  private:
833 
834  QgsColorButton *mDefaultColorButton = nullptr;
835  QCheckBox *mAllowOpacity = nullptr;
836 
837 };
838 
839 class GUI_EXPORT QgsProcessingColorWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
840 {
841  Q_OBJECT
842 
843  public:
844 
845  QgsProcessingColorWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
846  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
847 
848  // QgsProcessingParameterWidgetFactoryInterface
849  QString parameterType() const override;
850  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
852  QgsProcessingContext &context,
853  const QgsProcessingParameterWidgetContext &widgetContext,
854  const QgsProcessingParameterDefinition *definition = nullptr,
855  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
856 
857  // QgsProcessingParameterWidgetWrapper interface
858  QWidget *createWidget() override SIP_FACTORY;
859 
860  protected:
861 
862  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
863  QVariant widgetValue() const override;
864 
865  QStringList compatibleParameterTypes() const override;
866 
867  QStringList compatibleOutputTypes() const override;
868 
869  QList< int > compatibleDataTypes() const override;
870  QString modelerExpressionFormatString() const override;
871  private:
872 
873  QgsColorButton *mColorButton = nullptr;
874  friend class TestProcessingGui;
875 };
876 
877 
878 
879 class GUI_EXPORT QgsProcessingCoordinateOperationParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
880 {
881  Q_OBJECT
882  public:
883 
884  QgsProcessingCoordinateOperationParameterDefinitionWidget( QgsProcessingContext &context,
885  const QgsProcessingParameterWidgetContext &widgetContext,
886  const QgsProcessingParameterDefinition *definition = nullptr,
887  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
888  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
889 
890  private:
891 
892  QLineEdit *mDefaultLineEdit = nullptr;
893 
894  QComboBox *mSourceParamComboBox = nullptr;
895  QComboBox *mDestParamComboBox = nullptr;
896 
897  QgsProjectionSelectionWidget *mStaticSourceWidget = nullptr;
898  QgsProjectionSelectionWidget *mStaticDestWidget = nullptr;
899 
900 
901 };
902 
903 class GUI_EXPORT QgsProcessingCoordinateOperationWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
904 {
905  Q_OBJECT
906 
907  public:
908 
909  QgsProcessingCoordinateOperationWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
910  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
911 
912  // QgsProcessingParameterWidgetFactoryInterface
913  QString parameterType() const override;
914  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
916  QgsProcessingContext &context,
917  const QgsProcessingParameterWidgetContext &widgetContext,
918  const QgsProcessingParameterDefinition *definition = nullptr,
919  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
920 
921  // QgsProcessingParameterWidgetWrapper interface
922  QWidget *createWidget() override SIP_FACTORY;
923  void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
924  void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
925  protected:
926 
927  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
928  QVariant widgetValue() const override;
929 
930  QStringList compatibleParameterTypes() const override;
931 
932  QStringList compatibleOutputTypes() const override;
933 
934  QList< int > compatibleDataTypes() const override;
935  QString modelerExpressionFormatString() const override;
936  private:
937 
938  void setSourceCrsParameterValue( const QVariant &value );
939  void setDestinationCrsParameterValue( const QVariant &value );
940 
941  QgsCoordinateOperationWidget *mOperationWidget = nullptr;
942  QgsMapCanvas *mCanvas = nullptr;
943  QLineEdit *mLineEdit = nullptr;
944  QgsCoordinateReferenceSystem mSourceCrs;
946  friend class TestProcessingGui;
947 };
948 
949 class GUI_EXPORT QgsProcessingFieldPanelWidget : public QWidget
950 {
951  Q_OBJECT
952 
953  public:
954 
955  QgsProcessingFieldPanelWidget( QWidget *parent = nullptr, const QgsProcessingParameterField *param = nullptr );
956 
957  void setFields( const QgsFields &fields );
958 
959  QgsFields fields() const { return mFields; }
960 
961  QVariant value() const { return mValue; }
962  void setValue( const QVariant &value );
963 
964  signals:
965 
966  void changed();
967 
968  private slots:
969 
970  void showDialog();
971 
972  private:
973 
974  void updateSummaryText();
975 
976  QgsFields mFields;
977 
978  const QgsProcessingParameterField *mParam = nullptr;
979  QLineEdit *mLineEdit = nullptr;
980  QToolButton *mToolButton = nullptr;
981 
982  QVariantList mValue;
983 
984  friend class TestProcessingGui;
985 };
986 
987 
988 class GUI_EXPORT QgsProcessingFieldWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
989 {
990  Q_OBJECT
991 
992  public:
993 
994  QgsProcessingFieldWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
995  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
996 
997  // QgsProcessingParameterWidgetFactoryInterface
998  QString parameterType() const override;
999  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
1000 
1001  // QgsProcessingParameterWidgetWrapper interface
1002  QWidget *createWidget() override SIP_FACTORY;
1003  void postInitialize( const QList< QgsAbstractProcessingParameterWidgetWrapper * > &wrappers ) override;
1004 
1005  public slots:
1006  void setParentLayerWrapperValue( const QgsAbstractProcessingParameterWidgetWrapper *parentWrapper );
1007 
1008  protected:
1009 
1010  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1011  QVariant widgetValue() const override;
1012 
1013  QStringList compatibleParameterTypes() const override;
1014 
1015  QStringList compatibleOutputTypes() const override;
1016 
1017  QList< int > compatibleDataTypes() const override;
1018  QString modelerExpressionFormatString() const override;
1019  const QgsVectorLayer *linkedVectorLayer() const override;
1020 
1021  private:
1022 
1023  QgsFieldComboBox *mComboBox = nullptr;
1024  QgsProcessingFieldPanelWidget *mPanel = nullptr;
1025  QLineEdit *mLineEdit = nullptr;
1026 
1027  std::unique_ptr< QgsVectorLayer > mParentLayer;
1028 
1029  QgsFields filterFields( const QgsFields &fields ) const;
1030 
1031  friend class TestProcessingGui;
1032 };
1033 
1034 
1035 class GUI_EXPORT QgsProcessingMapThemeParameterDefinitionWidget : public QgsProcessingAbstractParameterDefinitionWidget
1036 {
1037  Q_OBJECT
1038  public:
1039 
1040  QgsProcessingMapThemeParameterDefinitionWidget( QgsProcessingContext &context,
1041  const QgsProcessingParameterWidgetContext &widgetContext,
1042  const QgsProcessingParameterDefinition *definition = nullptr,
1043  const QgsProcessingAlgorithm *algorithm = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
1044  QgsProcessingParameterDefinition *createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const override;
1045 
1046  private:
1047 
1048  QComboBox *mDefaultComboBox = nullptr;
1049 
1050 };
1051 
1052 class GUI_EXPORT QgsProcessingMapThemeWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
1053 {
1054  Q_OBJECT
1055 
1056  public:
1057 
1058  QgsProcessingMapThemeWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
1059  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
1060 
1061  // QgsProcessingParameterWidgetFactoryInterface
1062  QString parameterType() const override;
1063  QgsAbstractProcessingParameterWidgetWrapper *createWidgetWrapper( const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type ) override;
1065  QgsProcessingContext &context,
1066  const QgsProcessingParameterWidgetContext &widgetContext,
1067  const QgsProcessingParameterDefinition *definition = nullptr,
1068  const QgsProcessingAlgorithm *algorithm = nullptr ) override;
1069 
1070  // QgsProcessingParameterWidgetWrapper interface
1071  QWidget *createWidget() override SIP_FACTORY;
1072 
1073  protected:
1074 
1075  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
1076  QVariant widgetValue() const override;
1077 
1078  QStringList compatibleParameterTypes() const override;
1079 
1080  QStringList compatibleOutputTypes() const override;
1081 
1082  QList< int > compatibleDataTypes() const override;
1083  QString modelerExpressionFormatString() const override;
1084 
1085  private:
1086 
1087  QComboBox *mComboBox = nullptr;
1088 
1089  friend class TestProcessingGui;
1090 };
1091 
1093 
1094 #endif // QGSPROCESSINGWIDGETWRAPPERIMPL_H
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value...
The QgsFieldExpressionWidget class reates a widget to choose fields and edit expressions It contains ...
A widget wrapper for Processing parameter value widgets.
virtual QgsProcessingParameterDefinition * createParameter(const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags) const =0
Returns a new instance of a parameter definition, using the current settings defined in the dialog...
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
Abstract base class for widgets which allow users to specify the properties of a Processing parameter...
A vector layer or feature source field parameter for processing algorithms.
A combobox which lets the user select map scale from predefined list and highlights nearest to curren...
WidgetType
Types of dialogs which Processing widgets can be created for.
An interface for Processing widget wrapper factories.
A class to represent a 2D point.
Definition: qgspointxy.h:43
Helper functions for various unit types.
Definition: qgsunittypes.h:38
A cross platform button subclass for selecting colors.
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value...
Definition: qgsspinbox.h:42
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
Container of fields for a vector layer.
Definition: qgsfields.h:42
QgsAuthConfigSelect(QWidget *parent=nullptr, const QString &dataprovider=QString())
Create a dialog for setting an associated authentication config, either from existing configs...
const QgsCoordinateReferenceSystem & crs
Abstract base class for processing algorithms.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:75
The QgsFieldComboBox is a combo box which displays the list of fields of a given layer.
virtual QgsAbstractProcessingParameterWidgetWrapper * createWidgetWrapper(const QgsProcessingParameterDefinition *parameter, QgsProcessingGui::WidgetType type)=0
Creates a new widget wrapper for the specified parameter definition.
The QgsLayoutItemComboBox class is a combo box which displays items of a matching type from a layout...
The QgsFileWidget class creates a widget for selecting a file or a folder.
Definition: qgsfilewidget.h:35
An enum based parameter for processing algorithms, allowing for selection from predefined values...
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:79
QLineEdit subclass with built in support for clearing the widget&#39;s value and handling custom null val...
#define SIP_FACTORY
Definition: qgis_sip.h:76
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
A widget for selecting a projection.
virtual QString parameterType() const =0
Returns the type string for the parameter type the factory is associated with.
Abstract base class for all map tools.
Definition: qgsmaptool.h:62
virtual QgsProcessingAbstractParameterDefinitionWidget * createParameterDefinitionWidget(QgsProcessingContext &context, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingParameterDefinition *definition=nullptr, const QgsProcessingAlgorithm *algorithm=nullptr)
Creates a new parameter definition widget allowing for configuration of an instance of the parameter ...
Contains settings which reflect the context in which a Processing parameter widget is shown...
The QgsExpressionLineEdit widget includes a line edit for entering expressions together with a button...
This class represents a coordinate reference system (CRS).
Base class for the definition of processing parameters.
Class that shows snapping marker on map canvas for the current snapping match.
virtual QWidget * createWidget()=0
Creates a new widget which allows customization of the parameter&#39;s value.
Print layout, a QgsLayout subclass for static or atlas-based layouts.
Represents a vector layer which manages a vector based data sets.
Contains information about the context in which a processing algorithm is executed.
A widget for selecting the coordinate operation to use when transforming between a source and destina...
The QgsLayoutComboBox class is a combo box which displays available layouts from a QgsLayoutManager...
Standard algorithm dialog.