1 /***************************************************************************
2 qgsprocessingparameterswidget.cpp
3 ------------------------------------
4 Date : March 2020
5 Copyright : (C) 2020 Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16 #include "qgsprocessingparameterswidget.h"
17 #include "qgsprocessingalgorithm.h"
18 #include "qgsprocessingparameters.h"
19
20 ///@cond NOT_STABLE
21
QgsProcessingParametersWidget(const QgsProcessingAlgorithm * algorithm,QWidget * parent)22 QgsProcessingParametersWidget::QgsProcessingParametersWidget( const QgsProcessingAlgorithm *algorithm, QWidget *parent )
23 : QgsPanelWidget( parent )
24 , mAlgorithm( algorithm )
25 {
26 Q_ASSERT( mAlgorithm );
27
28 setupUi( this );
29
30 grpAdvanced->hide();
31 scrollAreaWidgetContents->setContentsMargins( 4, 4, 4, 4 );
32 }
33
algorithm() const34 const QgsProcessingAlgorithm *QgsProcessingParametersWidget::algorithm() const
35 {
36 return mAlgorithm;
37 }
38
initWidgets()39 void QgsProcessingParametersWidget::initWidgets()
40 {
41 // if there are advanced parameters - show corresponding groupbox
42 const QgsProcessingParameterDefinitions defs = mAlgorithm->parameterDefinitions();
43 for ( const QgsProcessingParameterDefinition *param : defs )
44 {
45 if ( param->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
46 {
47 grpAdvanced->show();
48 break;
49 }
50 }
51 }
52
addParameterWidget(const QgsProcessingParameterDefinition * parameter,QWidget * widget,int stretch)53 void QgsProcessingParametersWidget::addParameterWidget( const QgsProcessingParameterDefinition *parameter, QWidget *widget, int stretch )
54 {
55 if ( parameter->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
56 mAdvancedGroupLayout->addWidget( widget, stretch );
57 else
58 mScrollAreaLayout->insertWidget( mScrollAreaLayout->count() - 2, widget, stretch );
59 }
60
addParameterLabel(const QgsProcessingParameterDefinition * parameter,QWidget * label)61 void QgsProcessingParametersWidget::addParameterLabel( const QgsProcessingParameterDefinition *parameter, QWidget *label )
62 {
63 if ( parameter->flags() & QgsProcessingParameterDefinition::FlagAdvanced )
64 mAdvancedGroupLayout->addWidget( label );
65 else
66 mScrollAreaLayout->insertWidget( mScrollAreaLayout->count() - 2, label );
67 }
68
addOutputLabel(QWidget * label)69 void QgsProcessingParametersWidget::addOutputLabel( QWidget *label )
70 {
71 mScrollAreaLayout->insertWidget( mScrollAreaLayout->count() - 1, label );
72 }
73
addOutputWidget(QWidget * widget,int stretch)74 void QgsProcessingParametersWidget::addOutputWidget( QWidget *widget, int stretch )
75 {
76 mScrollAreaLayout->insertWidget( mScrollAreaLayout->count() - 1, widget, stretch );
77 }
78
addExtraWidget(QWidget * widget)79 void QgsProcessingParametersWidget::addExtraWidget( QWidget *widget )
80 {
81 mScrollAreaLayout->addWidget( widget );
82 }
83
84 ///@endcond
85