Skip to content

Commit b64a71d

Browse files
committedJun 5, 2017
Port algorithm countVisibleParameters to c++
1 parent 2da85f8 commit b64a71d

File tree

9 files changed

+37
-13
lines changed

9 files changed

+37
-13
lines changed
 

‎python/core/processing/qgsprocessingalgorithm.sip

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@ class QgsProcessingAlgorithm
128128
:rtype: QgsProcessingParameterDefinition
129129
%End
130130

131+
int countVisibleParameters() const;
132+
%Docstring
133+
Returns the number of visible (non-hidden) parameters defined by this
134+
algorithm.
135+
:rtype: int
136+
%End
137+
131138
virtual QVariantMap run( const QVariantMap &parameters,
132139
QgsProcessingContext &context, QgsProcessingFeedback *feedback ) const;
133140
%Docstring

‎python/plugins/processing/core/GeoAlgorithm.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -430,15 +430,6 @@ def getVisibleOutputsCount(self):
430430
i += 1
431431
return i
432432

433-
def getVisibleParametersCount(self):
434-
"""Returns the number of non-hidden parameters.
435-
"""
436-
i = 0
437-
for param in self.parameters:
438-
if not param.hidden:
439-
i += 1
440-
return i
441-
442433
def getHTMLOutputsCount(self):
443434
"""Returns the number of HTML outputs.
444435
"""

‎python/plugins/processing/core/Processing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def runAlgorithm(algOrName, onFinish, *args, **kwargs):
170170
Processing.tr("Processing"))
171171
return
172172
else:
173-
if len(args) != alg.getVisibleParametersCount() + alg.getVisibleOutputsCount():
173+
if len(args) != alg.countVisibleParameters() + alg.getVisibleOutputsCount():
174174
# fix_print_with_import
175175
print('Error: Wrong number of parameters')
176176
QgsMessageLog.logMessage(Processing.tr('Error: Wrong number of parameters'),

‎python/plugins/processing/gui/BatchPanel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def initWidgets(self):
102102
nOutputs = 0
103103

104104
self.tblParameters.setColumnCount(
105-
self.alg.getVisibleParametersCount() + nOutputs)
105+
self.alg.countVisibleParameters() + nOutputs)
106106

107107
# Table headers
108108
column = 0

‎python/plugins/processing/gui/ProcessingToolbox.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ def executeAlgorithm(self):
275275
alg = alg.getCopy()
276276
alg.setProvider(provider)
277277

278-
if (alg.getVisibleParametersCount() + alg.getVisibleOutputsCount()) > 0:
278+
if (alg.countVisibleParameters() + alg.getVisibleOutputsCount()) > 0:
279279
dlg = alg.getCustomParametersDialog()
280280
if not dlg:
281281
dlg = AlgorithmDialog(alg)

‎python/plugins/processing/gui/menus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def _executeAlgorithm(alg):
210210
alg.setProvider(provider)
211211

212212
context = dataobjects.createContext()
213-
if (alg.getVisibleParametersCount() + alg.getVisibleOutputsCount()) > 0:
213+
if (alg.countVisibleParameters() + alg.getVisibleOutputsCount()) > 0:
214214
dlg = alg.getCustomParametersDialog()
215215
if not dlg:
216216
dlg = AlgorithmDialog(alg)

‎src/core/processing/qgsprocessingalgorithm.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,17 @@ const QgsProcessingParameterDefinition *QgsProcessingAlgorithm::parameterDefinit
8787
return nullptr;
8888
}
8989

90+
int QgsProcessingAlgorithm::countVisibleParameters() const
91+
{
92+
int count = 0;
93+
Q_FOREACH ( const QgsProcessingParameterDefinition *def, mParameters )
94+
{
95+
if ( !( def->flags() & QgsProcessingParameterDefinition::FlagHidden ) )
96+
count++;
97+
}
98+
return count;
99+
}
100+
90101
QString QgsProcessingAlgorithm::parameterAsString( const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context ) const
91102
{
92103
return QgsProcessingParameters::parameterAsString( parameterDefinition( name ), parameters, name, context );

‎src/core/processing/qgsprocessingalgorithm.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ class CORE_EXPORT QgsProcessingAlgorithm
142142
*/
143143
const QgsProcessingParameterDefinition *parameterDefinition( const QString &name ) const;
144144

145+
/**
146+
* Returns the number of visible (non-hidden) parameters defined by this
147+
* algorithm.
148+
*/
149+
int countVisibleParameters() const;
150+
145151
/**
146152
* Runs the algorithm using the specified \a parameters. Algorithms should implement
147153
* their custom processing logic here.

‎tests/src/core/testqgsprocessing.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ class DummyAlgorithm : public QgsProcessingAlgorithm
6262
// parameterDefinition should be case insensitive
6363
QCOMPARE( parameterDefinition( "P1" ), parameterDefinitions().at( 0 ) );
6464
QVERIFY( !parameterDefinition( "invalid" ) );
65+
66+
QCOMPARE( countVisibleParameters(), 1 );
67+
QgsProcessingParameterBoolean *p3 = new QgsProcessingParameterBoolean( "p3" );
68+
QVERIFY( addParameter( p3 ) );
69+
QCOMPARE( countVisibleParameters(), 2 );
70+
QgsProcessingParameterBoolean *p4 = new QgsProcessingParameterBoolean( "p4" );
71+
p4->setFlags( QgsProcessingParameterDefinition::FlagHidden );
72+
QVERIFY( addParameter( p4 ) );
73+
QCOMPARE( countVisibleParameters(), 2 );
6574
}
6675

6776
};

0 commit comments

Comments
 (0)