Skip to content

Commit

Permalink
Change QgsProcessingAlgorithm::supportInPlaceEdit to use QgsMapLayer,…
Browse files Browse the repository at this point in the history
… not QgsVectorLayer

Because at some stage in the future we may allow in-place edits to raster layers,
and we don't want to have to break API for this.
  • Loading branch information
nyalldawson committed Sep 21, 2018
1 parent e2068b8 commit 4b24552
Show file tree
Hide file tree
Showing 29 changed files with 91 additions and 42 deletions.
Expand Up @@ -812,7 +812,7 @@ should correspond to the invalid source parameter name.
.. versionadded:: 3.2
%End

virtual bool supportInPlaceEdit( const QgsVectorLayer *layer ) const;
virtual bool supportInPlaceEdit( const QgsMapLayer *layer ) const;
%Docstring
Checks whether this algorithm supports in-place editing on the given ``layer``
Default implementation returns false.
Expand Down Expand Up @@ -976,7 +976,8 @@ Returns the feature request used for fetching features to process from the
source layer. The default implementation requests all attributes and geometry.
%End

virtual bool supportInPlaceEdit( const QgsVectorLayer *layer ) const;
virtual bool supportInPlaceEdit( const QgsMapLayer *layer ) const;

%Docstring
Checks whether this algorithm supports in-place editing on the given ``layer``
Default implementation for feature based algorithms run some basic compatibility
Expand Down
Expand Up @@ -162,7 +162,7 @@ QgsFeatureList QgsAddIncrementalFieldAlgorithm::processFeature( const QgsFeature
return QgsFeatureList() << f;
}

bool QgsAddIncrementalFieldAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsAddIncrementalFieldAlgorithm::supportInPlaceEdit( const QgsMapLayer *layer ) const
{
Q_UNUSED( layer );
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmaddincrementalfield.h
Expand Up @@ -53,7 +53,7 @@ class QgsAddIncrementalFieldAlgorithm : public QgsProcessingFeatureBasedAlgorith
bool prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
QgsFeatureRequest request() const override;
QgsFeatureList processFeature( const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

private:

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmassignprojection.cpp
Expand Up @@ -62,7 +62,7 @@ QgsAssignProjectionAlgorithm *QgsAssignProjectionAlgorithm::createInstance() con
return new QgsAssignProjectionAlgorithm();
}

bool QgsAssignProjectionAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsAssignProjectionAlgorithm::supportInPlaceEdit( const QgsMapLayer *layer ) const
{
Q_UNUSED( layer );
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmassignprojection.h
Expand Up @@ -41,7 +41,7 @@ class QgsAssignProjectionAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsAssignProjectionAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:

Expand Down
10 changes: 7 additions & 3 deletions src/analysis/processing/qgsalgorithmclip.cpp
Expand Up @@ -18,6 +18,7 @@
#include "qgsalgorithmclip.h"
#include "qgsgeometryengine.h"
#include "qgsoverlayutils.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

Expand Down Expand Up @@ -76,10 +77,13 @@ QgsClipAlgorithm *QgsClipAlgorithm::createInstance() const
return new QgsClipAlgorithm();
}

bool QgsClipAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsClipAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
Q_UNUSED( layer );
return true;
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

return layer->isSpatial();
}

QVariantMap QgsClipAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmclip.h
Expand Up @@ -44,7 +44,7 @@ class QgsClipAlgorithm : public QgsProcessingAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsClipAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

QgsProcessingAlgorithm::Flags flags() const override;
protected:
Expand Down
12 changes: 10 additions & 2 deletions src/analysis/processing/qgsalgorithmdrape.cpp
Expand Up @@ -196,8 +196,12 @@ QgsDrapeToZAlgorithm *QgsDrapeToZAlgorithm::createInstance() const
return new QgsDrapeToZAlgorithm();
}

bool QgsDrapeToZAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsDrapeToZAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsDrapeAlgorithmBase::supportInPlaceEdit( layer ) )
return false;
return QgsWkbTypes::hasZ( layer->wkbType() );
Expand Down Expand Up @@ -255,8 +259,12 @@ QgsDrapeToMAlgorithm *QgsDrapeToMAlgorithm::createInstance() const
return new QgsDrapeToMAlgorithm();
}

bool QgsDrapeToMAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsDrapeToMAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsDrapeAlgorithmBase::supportInPlaceEdit( layer ) )
return false;
return QgsWkbTypes::hasM( layer->wkbType() );
Expand Down
4 changes: 2 additions & 2 deletions src/analysis/processing/qgsalgorithmdrape.h
Expand Up @@ -73,7 +73,7 @@ class QgsDrapeToZAlgorithm : public QgsDrapeAlgorithmBase
QString shortHelpString() const override;
QString shortDescription() const override;
QgsDrapeToZAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:

Expand All @@ -97,7 +97,7 @@ class QgsDrapeToMAlgorithm : public QgsDrapeAlgorithmBase
QString shortHelpString() const override;
QString shortDescription() const override;
QgsDrapeToMAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmdropmzvalues.cpp
Expand Up @@ -59,7 +59,7 @@ QgsDropMZValuesAlgorithm *QgsDropMZValuesAlgorithm::createInstance() const
return new QgsDropMZValuesAlgorithm();
}

bool QgsDropMZValuesAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsDropMZValuesAlgorithm::supportInPlaceEdit( const QgsMapLayer *layer ) const
{
Q_UNUSED( layer );
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmdropmzvalues.h
Expand Up @@ -41,7 +41,7 @@ class QgsDropMZValuesAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsDropMZValuesAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:

Expand Down
14 changes: 11 additions & 3 deletions src/analysis/processing/qgsalgorithmfiltervertices.cpp
Expand Up @@ -136,8 +136,12 @@ QgsFilterVerticesByM *QgsFilterVerticesByM::createInstance() const
return new QgsFilterVerticesByM();
}

bool QgsFilterVerticesByM::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsFilterVerticesByM::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
return false;
return QgsWkbTypes::hasM( layer->wkbType() );
Expand Down Expand Up @@ -182,10 +186,14 @@ QgsFilterVerticesByZ *QgsFilterVerticesByZ::createInstance() const
return new QgsFilterVerticesByZ();
}

bool QgsFilterVerticesByZ::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsFilterVerticesByZ::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
return false;
return false;
return QgsWkbTypes::hasZ( layer->wkbType() );
}

Expand Down
4 changes: 2 additions & 2 deletions src/analysis/processing/qgsalgorithmfiltervertices.h
Expand Up @@ -72,7 +72,7 @@ class QgsFilterVerticesByM : public QgsFilterVerticesAlgorithmBase
QString displayName() const override;
QStringList tags() const override;
QgsFilterVerticesByM *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

private:

Expand All @@ -95,7 +95,7 @@ class QgsFilterVerticesByZ : public QgsFilterVerticesAlgorithmBase
QString displayName() const override;
QStringList tags() const override;
QgsFilterVerticesByZ *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

private:

Expand Down
8 changes: 6 additions & 2 deletions src/analysis/processing/qgsalgorithmfixgeometries.cpp
Expand Up @@ -73,9 +73,13 @@ QgsFixGeometriesAlgorithm *QgsFixGeometriesAlgorithm::createInstance() const
return new QgsFixGeometriesAlgorithm();
}

bool QgsFixGeometriesAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsFixGeometriesAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( !layer->isSpatial() || ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;
// The algorithm would drop M, so disable it if the layer has M
return ! QgsWkbTypes::hasM( layer->wkbType() );
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmfixgeometries.h
Expand Up @@ -41,7 +41,7 @@ class QgsFixGeometriesAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsFixGeometriesAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QgsProcessingFeatureSource::Flag sourceFlags() const override;
Expand Down
Expand Up @@ -73,8 +73,12 @@ QgsMinimumEnclosingCircleAlgorithm *QgsMinimumEnclosingCircleAlgorithm::createIn
return new QgsMinimumEnclosingCircleAlgorithm();
}

bool QgsMinimumEnclosingCircleAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsMinimumEnclosingCircleAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;
// (no Z no M)
Expand Down
Expand Up @@ -42,7 +42,7 @@ class QgsMinimumEnclosingCircleAlgorithm : public QgsProcessingFeatureBasedAlgor
QString groupId() const override;
QString shortHelpString() const override;
QgsMinimumEnclosingCircleAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down
Expand Up @@ -78,8 +78,12 @@ void QgsMultiRingConstantBufferAlgorithm::initParameters( const QVariantMap & )
addParameter( distance.release() );
}

bool QgsMultiRingConstantBufferAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsMultiRingConstantBufferAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;
// Polygons only
Expand Down
Expand Up @@ -42,7 +42,7 @@ class QgsMultiRingConstantBufferAlgorithm : public QgsProcessingFeatureBasedAlgo
QString shortHelpString() const override;
QgsMultiRingConstantBufferAlgorithm *createInstance() const override SIP_FACTORY;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:

Expand Down
Expand Up @@ -67,8 +67,12 @@ QgsOrientedMinimumBoundingBoxAlgorithm *QgsOrientedMinimumBoundingBoxAlgorithm::
return new QgsOrientedMinimumBoundingBoxAlgorithm();
}

bool QgsOrientedMinimumBoundingBoxAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsOrientedMinimumBoundingBoxAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;
// Polygons only
Expand Down
Expand Up @@ -41,7 +41,7 @@ class QgsOrientedMinimumBoundingBoxAlgorithm : public QgsProcessingFeatureBasedA
QString groupId() const override;
QString shortHelpString() const override;
QgsOrientedMinimumBoundingBoxAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down
6 changes: 5 additions & 1 deletion src/analysis/processing/qgsalgorithmpromotetomultipart.cpp
Expand Up @@ -66,8 +66,12 @@ QgsPromoteToMultipartAlgorithm *QgsPromoteToMultipartAlgorithm::createInstance()
return new QgsPromoteToMultipartAlgorithm();
}

bool QgsPromoteToMultipartAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsPromoteToMultipartAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;
return QgsWkbTypes::isMultiType( layer->wkbType() );
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmpromotetomultipart.h
Expand Up @@ -44,7 +44,7 @@ class QgsPromoteToMultipartAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QgsPromoteToMultipartAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down
4 changes: 2 additions & 2 deletions src/analysis/processing/qgsalgorithmsegmentize.cpp
Expand Up @@ -78,7 +78,7 @@ void QgsSegmentizeByMaximumDistanceAlgorithm::initParameters( const QVariantMap
addParameter( tolerance.release() );
}

bool QgsSegmentizeByMaximumDistanceAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsSegmentizeByMaximumDistanceAlgorithm::supportInPlaceEdit( const QgsMapLayer *layer ) const
{
Q_UNUSED( layer );
return false;
Expand Down Expand Up @@ -173,7 +173,7 @@ void QgsSegmentizeByMaximumAngleAlgorithm::initParameters( const QVariantMap & )
addParameter( tolerance.release() );
}

bool QgsSegmentizeByMaximumAngleAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsSegmentizeByMaximumAngleAlgorithm::supportInPlaceEdit( const QgsMapLayer *layer ) const
{
Q_UNUSED( layer );
return false;
Expand Down
4 changes: 2 additions & 2 deletions src/analysis/processing/qgsalgorithmsegmentize.h
Expand Up @@ -44,7 +44,7 @@ class QgsSegmentizeByMaximumDistanceAlgorithm : public QgsProcessingFeatureBased
QgsSegmentizeByMaximumDistanceAlgorithm *createInstance() const override SIP_FACTORY;
QList<int> inputLayerTypes() const override;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down Expand Up @@ -78,7 +78,7 @@ class QgsSegmentizeByMaximumAngleAlgorithm : public QgsProcessingFeatureBasedAlg
QgsSegmentizeByMaximumAngleAlgorithm *createInstance() const override SIP_FACTORY;
QList<int> inputLayerTypes() const override;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down
6 changes: 5 additions & 1 deletion src/analysis/processing/qgsalgorithmtranslate.cpp
Expand Up @@ -164,8 +164,12 @@ QgsWkbTypes::Type QgsTranslateAlgorithm::outputWkbType( QgsWkbTypes::Type inputW
}


bool QgsTranslateAlgorithm::supportInPlaceEdit( const QgsVectorLayer *layer ) const
bool QgsTranslateAlgorithm::supportInPlaceEdit( const QgsMapLayer *l ) const
{
const QgsVectorLayer *layer = qobject_cast< const QgsVectorLayer * >( l );
if ( !layer )
return false;

if ( ! QgsProcessingFeatureBasedAlgorithm::supportInPlaceEdit( layer ) )
return false;

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmtranslate.h
Expand Up @@ -42,7 +42,7 @@ class QgsTranslateAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString shortHelpString() const override;
QgsTranslateAlgorithm *createInstance() const override SIP_FACTORY;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
bool supportInPlaceEdit( const QgsVectorLayer *layer ) const override;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;

protected:
QString outputName() const override;
Expand Down

0 comments on commit 4b24552

Please sign in to comment.