Skip to content

Commit 5ee3239

Browse files
committedSep 15, 2017
Use checkboxes for Extract/Select by Location algs
1 parent dd441f6 commit 5ee3239

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed
 

‎src/core/processing/qgsnativealgorithms.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,12 +1356,7 @@ void QgsSelectByLocationAlgorithm::initAlgorithm( const QVariantMap & )
13561356

13571357
addParameter( new QgsProcessingParameterVectorLayer( QStringLiteral( "INPUT" ), QObject::tr( "Select features from" ),
13581358
QList< int >() << QgsProcessing::TypeVectorAnyGeometry ) );
1359-
1360-
1361-
addParameter( new QgsProcessingParameterEnum( QStringLiteral( "PREDICATE" ),
1362-
QObject::tr( "Where the features are (geometric predicate)" ),
1363-
predicateOptionsList(), true, QVariant::fromValue( QList< int >() << 0 ) ) );
1364-
1359+
addPredicateParameter();
13651360
addParameter( new QgsProcessingParameterFeatureSource( QStringLiteral( "INTERSECT" ),
13661361
QObject::tr( "By comparing to the features from" ),
13671362
QList< int >() << QgsProcessing::TypeVectorAnyGeometry ) );
@@ -1529,6 +1524,23 @@ void QgsLocationBasedAlgorithm::process( QgsFeatureSource *targetSource,
15291524
}
15301525
}
15311526

1527+
void QgsLocationBasedAlgorithm::addPredicateParameter()
1528+
{
1529+
std::unique_ptr< QgsProcessingParameterEnum > predicateParam( new QgsProcessingParameterEnum( QStringLiteral( "PREDICATE" ),
1530+
QObject::tr( "Where the features are (geometric predicate)" ),
1531+
predicateOptionsList(), true, QVariant::fromValue( QList< int >() << 0 ) ) );
1532+
1533+
QVariantMap predicateMetadata;
1534+
QVariantMap widgetMetadata;
1535+
widgetMetadata.insert( QStringLiteral( "class" ), QStringLiteral( "processing.gui.wrappers.EnumWidgetWrapper" ) );
1536+
widgetMetadata.insert( QStringLiteral( "useCheckBoxes" ), true );
1537+
widgetMetadata.insert( QStringLiteral( "columns" ), 2 );
1538+
predicateMetadata.insert( QStringLiteral( "widget_wrapper" ), widgetMetadata );
1539+
predicateParam->setMetadata( predicateMetadata );
1540+
1541+
addParameter( predicateParam.release() );
1542+
}
1543+
15321544
QgsLocationBasedAlgorithm::Predicate QgsLocationBasedAlgorithm::reversePredicate( QgsLocationBasedAlgorithm::Predicate predicate ) const
15331545
{
15341546
switch ( predicate )
@@ -1572,11 +1584,7 @@ void QgsExtractByLocationAlgorithm::initAlgorithm( const QVariantMap & )
15721584
{
15731585
addParameter( new QgsProcessingParameterVectorLayer( QStringLiteral( "INPUT" ), QObject::tr( "Extract features from" ),
15741586
QList< int >() << QgsProcessing::TypeVectorAnyGeometry ) );
1575-
1576-
addParameter( new QgsProcessingParameterEnum( QStringLiteral( "PREDICATE" ),
1577-
QObject::tr( "Where the features are (geometric predicate)" ),
1578-
predicateOptionsList(), true, QVariant::fromValue( QList< int >() << 0 ) ) );
1579-
1587+
addPredicateParameter();
15801588
addParameter( new QgsProcessingParameterFeatureSource( QStringLiteral( "INTERSECT" ),
15811589
QObject::tr( "By comparing to the features from" ),
15821590
QList< int >() << QgsProcessing::TypeVectorAnyGeometry ) );

‎src/core/processing/qgsnativealgorithms.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,7 @@ class QgsLocationBasedAlgorithm : public QgsProcessingAlgorithm
504504
Crosses,
505505
};
506506

507+
void addPredicateParameter();
507508
Predicate reversePredicate( Predicate predicate ) const;
508509
QStringList predicateOptionsList() const;
509510
void process( QgsFeatureSource *targetSource, QgsFeatureSource *intersectSource, const QList<int> &selectedPredicates, const std::function< void( const QgsFeature & )> &handleFeatureFunction, bool onlyRequireTargetIds, QgsFeedback *feedback );

0 commit comments

Comments
 (0)