Skip to content

Commit

Permalink
Difference and split with lines can be used in in-place mode
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 21, 2018
1 parent b4883ee commit 8951e15
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 3 deletions.
17 changes: 17 additions & 0 deletions src/analysis/processing/qgsalgorithmdifference.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "qgsalgorithmdifference.h"

#include "qgsoverlayutils.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

Expand Down Expand Up @@ -51,6 +52,22 @@ QString QgsDifferenceAlgorithm::shortHelpString() const
"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
{
return new QgsDifferenceAlgorithm();
Expand Down
3 changes: 2 additions & 1 deletion src/analysis/processing/qgsalgorithmdifference.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class QgsDifferenceAlgorithm : public QgsProcessingAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;

bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
QgsProcessingAlgorithm::Flags flags() const override;
protected:
QgsProcessingAlgorithm *createInstance() const override;
void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override;
Expand Down
18 changes: 17 additions & 1 deletion src/analysis/processing/qgsalgorithmsplitwithlines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

#include "qgsalgorithmsplitwithlines.h"
#include "qgsgeometryengine.h"

#include "qgsvectorlayer.h"
///@cond PRIVATE

QString QgsSplitWithLinesAlgorithm::name() const
Expand Down Expand Up @@ -65,6 +65,22 @@ QgsSplitWithLinesAlgorithm *QgsSplitWithLinesAlgorithm::createInstance() const
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 )
{
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
Expand Down
3 changes: 2 additions & 1 deletion src/analysis/processing/qgsalgorithmsplitwithlines.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ class QgsSplitWithLinesAlgorithm : public QgsProcessingAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsSplitWithLinesAlgorithm *createInstance() const override SIP_FACTORY;

QgsProcessingAlgorithm::Flags flags() const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
protected:

QVariantMap processAlgorithm( const QVariantMap &parameters,
Expand Down

0 comments on commit 8951e15

Please sign in to comment.