Skip to content

Commit

Permalink
Add native c++ algorithm provider
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jun 5, 2017
1 parent b64a71d commit 8b4bf88
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 1 deletion.
37 changes: 37 additions & 0 deletions src/core/processing/qgsnativealgorithms.cpp
Expand Up @@ -26,6 +26,43 @@

///@cond PRIVATE

QgsNativeAlgorithms::QgsNativeAlgorithms( QObject *parent )
: QgsProcessingProvider( parent )
{}

QIcon QgsNativeAlgorithms::icon() const
{
return QgsApplication::getThemeIcon( QStringLiteral( "/providerQgis.svg" ) );
}

QString QgsNativeAlgorithms::svgIconPath() const
{
return QgsApplication::iconPath( QStringLiteral( "providerQgis.svg" ) );
}

QString QgsNativeAlgorithms::id() const
{
return QStringLiteral( "native" );
}

QString QgsNativeAlgorithms::name() const
{
return tr( "QGIS" );
}

bool QgsNativeAlgorithms::supportsNonFileBasedOutput() const
{
return true;
}

void QgsNativeAlgorithms::loadAlgorithms()
{
addAlgorithm( new QgsCentroidAlgorithm() );
addAlgorithm( new QgsBufferAlgorithm() );
}



QgsCentroidAlgorithm::QgsCentroidAlgorithm()
{
addParameter( new QgsProcessingParameterVector( QStringLiteral( "INPUT" ), QObject::tr( "Input layer" ) ) );
Expand Down
21 changes: 20 additions & 1 deletion src/core/processing/qgsnativealgorithms.h
Expand Up @@ -21,9 +21,28 @@
#include "qgis_core.h"
#include "qgis.h"
#include "qgsprocessingalgorithm.h"
#include "qgsprocessingprovider.h"

///@cond PRIVATE

class QgsNativeAlgorithms: public QgsProcessingProvider
{
public:

QgsNativeAlgorithms( QObject *parent = nullptr );

QIcon icon() const override;
QString svgIconPath() const override;
QString id() const override;
QString name() const override;
bool supportsNonFileBasedOutput() const override;

protected:

void loadAlgorithms() override;

};

/**
* Native centroid algorithm.
*/
Expand Down Expand Up @@ -54,7 +73,7 @@ class QgsBufferAlgorithm : public QgsProcessingAlgorithm

QgsBufferAlgorithm();

QString name() const override { return QStringLiteral( "fixeddistancebuffer" ); }
QString name() const override { return QStringLiteral( "buffer" ); }
QString displayName() const override { return QObject::tr( "Buffer" ); }
virtual QStringList tags() const override { return QObject::tr( "buffer,grow" ).split( ',' ); }
QString group() const override { return QObject::tr( "Vector geometry tools" ); }
Expand Down
2 changes: 2 additions & 0 deletions src/core/qgsapplication.cpp
Expand Up @@ -40,6 +40,7 @@

#include "gps/qgsgpsconnectionregistry.h"
#include "processing/qgsprocessingregistry.h"
#include "processing/qgsnativealgorithms.h"

#include <QDir>
#include <QFile>
Expand Down Expand Up @@ -1578,6 +1579,7 @@ QgsApplication::ApplicationMembers::ApplicationMembers()
mGpsConnectionRegistry = new QgsGPSConnectionRegistry();
mPluginLayerRegistry = new QgsPluginLayerRegistry();
mProcessingRegistry = new QgsProcessingRegistry();
mProcessingRegistry->addProvider( new QgsNativeAlgorithms( mProcessingRegistry ) );
mAnnotationRegistry = new QgsAnnotationRegistry();
}

Expand Down

0 comments on commit 8b4bf88

Please sign in to comment.