Difference and split with lines can be used in in-place mode

This commit is contained in:
Nyall Dawson 2018-09-21 14:17:31 +10:00
parent b4883eecba
commit 8951e153f0
4 changed files with 38 additions and 3 deletions

View File

@ -16,6 +16,7 @@
#include "qgsalgorithmdifference.h" #include "qgsalgorithmdifference.h"
#include "qgsoverlayutils.h" #include "qgsoverlayutils.h"
#include "qgsvectorlayer.h"
///@cond PRIVATE ///@cond PRIVATE
@ -51,6 +52,22 @@ QString QgsDifferenceAlgorithm::shortHelpString() const
"be manually updated." ); "be manually updated." );
} }
bool QgsDifferenceAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;
return layer->isSpatial();
}
QgsProcessingAlgorithm::Flags QgsDifferenceAlgorithm::flags() const
{
Flags f = QgsProcessingAlgorithm::flags();
f |= QgsProcessingAlgorithm::FlagSupportsInPlaceEdits;
return f;
}
QgsProcessingAlgorithm *QgsDifferenceAlgorithm::createInstance() const QgsProcessingAlgorithm *QgsDifferenceAlgorithm::createInstance() const
{ {
return new QgsDifferenceAlgorithm(); return new QgsDifferenceAlgorithm();

View File

@ -33,7 +33,8 @@ class QgsDifferenceAlgorithm : public QgsProcessingAlgorithm
QString group() const override; QString group() const override;
QString groupId() const override; QString groupId() const override;
QString shortHelpString() const override; QString shortHelpString() const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
QgsProcessingAlgorithm::Flags flags() const override;
protected: protected:
QgsProcessingAlgorithm *createInstance() const override; QgsProcessingAlgorithm *createInstance() const override;
void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override; void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;

View File

@ -17,7 +17,7 @@
#include "qgsalgorithmsplitwithlines.h" #include "qgsalgorithmsplitwithlines.h"
#include "qgsgeometryengine.h" #include "qgsgeometryengine.h"
#include "qgsvectorlayer.h"
///@cond PRIVATE ///@cond PRIVATE
QString QgsSplitWithLinesAlgorithm::name() const QString QgsSplitWithLinesAlgorithm::name() const
@ -65,6 +65,22 @@ QgsSplitWithLinesAlgorithm *QgsSplitWithLinesAlgorithm::createInstance() const
return new QgsSplitWithLinesAlgorithm(); return new QgsSplitWithLinesAlgorithm();
} }
QgsProcessingAlgorithm::Flags QgsSplitWithLinesAlgorithm::flags() const
{
Flags f = QgsProcessingAlgorithm::flags();
f |= QgsProcessingAlgorithm::FlagSupportsInPlaceEdits;
return f;
}
bool QgsSplitWithLinesAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;
return true;
}
QVariantMap QgsSplitWithLinesAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) QVariantMap QgsSplitWithLinesAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
{ {
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) ); std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );

View File

@ -43,7 +43,8 @@ class QgsSplitWithLinesAlgorithm : public QgsProcessingAlgorithm
QString groupId() const override; QString groupId() const override;
QString shortHelpString() const override; QString shortHelpString() const override;
QgsSplitWithLinesAlgorithm *createInstance() const override SIP_FACTORY; QgsSplitWithLinesAlgorithm *createInstance() const override SIP_FACTORY;
QgsProcessingAlgorithm::Flags flags() const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
protected: protected:
QVariantMap processAlgorithm( const QVariantMap &parameters, QVariantMap processAlgorithm( const QVariantMap &parameters,