18
18
#include " qgsalgorithmfilter.h"
19
19
#include " qgsapplication.h"
20
20
21
- #include < QLabel>
22
- #include < QGridLayout>
23
- #include < QTableWidget>
24
- #include < QHeaderView>
25
- #include < QToolButton>
26
-
27
21
// /@cond PRIVATE
28
22
29
23
QString QgsFilterAlgorithm::name () const
@@ -66,11 +60,6 @@ QgsFilterAlgorithm *QgsFilterAlgorithm::createInstance() const
66
60
return new QgsFilterAlgorithm ();
67
61
}
68
62
69
- QgsProcessingAlgorithmConfigurationWidget *QgsFilterAlgorithm::createModelerWidget () const
70
- {
71
- return new QgsFilterAlgorithmConfigurationWidget ();
72
- }
73
-
74
63
QgsFilterAlgorithm::~QgsFilterAlgorithm ()
75
64
{
76
65
qDeleteAll ( mOutputs );
@@ -93,60 +82,6 @@ void QgsFilterAlgorithm::initAlgorithm( const QVariantMap &configuration )
93
82
}
94
83
95
84
96
- QgsFilterAlgorithmConfigurationWidget::QgsFilterAlgorithmConfigurationWidget ( QWidget *parent )
97
- : QgsProcessingAlgorithmConfigurationWidget( parent )
98
- {
99
- setContentsMargins ( 0 , 0 , 0 , 0 );
100
-
101
- mOutputExpressionWidget = new QTableWidget ();
102
- mOutputExpressionWidget ->setColumnCount ( 2 );
103
- mOutputExpressionWidget ->setHorizontalHeaderItem ( 0 , new QTableWidgetItem ( tr ( " Output Name" ) ) );
104
- mOutputExpressionWidget ->setHorizontalHeaderItem ( 1 , new QTableWidgetItem ( tr ( " Filter Expression" ) ) );
105
- mOutputExpressionWidget ->horizontalHeader ()->setStretchLastSection ( true );
106
- QGridLayout *layout = new QGridLayout ();
107
- setLayout ( layout );
108
-
109
- layout->addWidget ( new QLabel ( tr ( " Outputs and filters" ) ), 0 , 0 , 1 , 2 );
110
- layout->addWidget ( mOutputExpressionWidget , 1 , 0 , 4 , 1 );
111
- QToolButton *addOutputButton = new QToolButton ();
112
- addOutputButton->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionAddLayer.svg" ) ) );
113
- addOutputButton->setText ( tr ( " Add Output" ) );
114
-
115
- QToolButton *removeOutputButton = new QToolButton ();
116
- removeOutputButton->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionRemoveLayer.svg" ) ) );
117
- removeOutputButton->setToolTip ( tr ( " Remove Selected Outputs" ) );
118
-
119
- layout->addWidget ( addOutputButton, 2 , 1 , 1 , 1 );
120
- layout->addWidget ( removeOutputButton, 3 , 1 , 1 , 1 );
121
-
122
- connect ( addOutputButton, &QToolButton::clicked, this , &QgsFilterAlgorithmConfigurationWidget::addOutput );
123
- connect ( removeOutputButton, &QToolButton::clicked, this , &QgsFilterAlgorithmConfigurationWidget::removeSelectedOutputs );
124
-
125
- connect ( mOutputExpressionWidget ->selectionModel (), &QItemSelectionModel::selectionChanged, [removeOutputButton, this ]
126
- {
127
- removeOutputButton->setEnabled ( !mOutputExpressionWidget ->selectionModel ()->selectedIndexes ().isEmpty () );
128
- } );
129
- }
130
-
131
- QVariantMap QgsFilterAlgorithmConfigurationWidget::configuration () const
132
- {
133
- QVariantList outputs;
134
-
135
- for ( int i = 0 ; i < mOutputExpressionWidget ->rowCount (); ++i )
136
- {
137
- QVariantMap output;
138
- output.insert ( QStringLiteral ( " name" ), mOutputExpressionWidget ->item ( i, 0 )->text () );
139
- output.insert ( QStringLiteral ( " expression" ), mOutputExpressionWidget ->item ( i, 1 )->text () );
140
- outputs.append ( output );
141
- }
142
-
143
- QVariantMap map;
144
- map.insert ( " outputs" , outputs );
145
-
146
- return map;
147
- }
148
-
149
-
150
85
QVariantMap QgsFilterAlgorithm::processAlgorithm ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
151
86
{
152
87
std::unique_ptr< QgsFeatureSource > source ( parameterAsSource ( parameters, QStringLiteral ( " INPUT" ), context ) );
@@ -195,53 +130,3 @@ QVariantMap QgsFilterAlgorithm::processAlgorithm( const QVariantMap ¶meters,
195
130
return outputs;
196
131
}
197
132
198
-
199
- void QgsFilterAlgorithmConfigurationWidget::setConfiguration ( const QVariantMap &configuration )
200
- {
201
- mOutputExpressionWidget ->setRowCount ( 0 );
202
- int currentRow = 0 ;
203
- const QVariantList outputs = configuration.value ( " outputs" ).toList ();
204
-
205
- for ( const QVariant &outputvar : outputs )
206
- {
207
- const QVariantMap output = outputvar.toMap ();
208
- mOutputExpressionWidget ->insertRow ( currentRow );
209
- mOutputExpressionWidget ->setItem ( currentRow, 0 , new QTableWidgetItem ( output.value ( " name" ).toString () ) );
210
- mOutputExpressionWidget ->setItem ( currentRow, 1 , new QTableWidgetItem ( output.value ( " expression" ).toString () ) );
211
-
212
- currentRow++;
213
- }
214
-
215
- if ( outputs.isEmpty () )
216
- addOutput ();
217
- }
218
-
219
- void QgsFilterAlgorithmConfigurationWidget::removeSelectedOutputs ()
220
- {
221
- QItemSelection selection ( mOutputExpressionWidget ->selectionModel ()->selection () );
222
-
223
- QList<int > rows;
224
- const QModelIndexList indexes = selection.indexes ();
225
- for ( const QModelIndex &index : indexes )
226
- {
227
- rows.append ( index .row () );
228
- }
229
-
230
- qSort ( rows );
231
-
232
- int prev = -1 ;
233
- for ( int i = rows.count () - 1 ; i >= 0 ; i -= 1 )
234
- {
235
- int current = rows[i];
236
- if ( current != prev )
237
- {
238
- mOutputExpressionWidget ->removeRow ( current );
239
- prev = current;
240
- }
241
- }
242
- }
243
-
244
- void QgsFilterAlgorithmConfigurationWidget::addOutput ()
245
- {
246
- mOutputExpressionWidget ->setRowCount ( mOutputExpressionWidget ->rowCount () + 1 );
247
- }
0 commit comments