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