Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
[processing] New class QgsProcessingToolboxModel which is
a QAbstractItemModel which represents the providers, groups and algorithms from the processing registry
- Loading branch information
Showing
with
1,677 additions
and 0 deletions.
- +319 −0 python/gui/auto_generated/processing/qgsprocessingtoolboxmodel.sip.in
- +1 −0 python/gui/gui_auto.sip
- +319 −0 python/gui/processing/qgsprocessingtoolboxmodel.sip.in
- +2 −0 src/gui/CMakeLists.txt
- +427 −0 src/gui/processing/qgsprocessingtoolboxmodel.cpp
- +342 −0 src/gui/processing/qgsprocessingtoolboxmodel.h
- +1 −0 tests/src/gui/CMakeLists.txt
- +266 −0 tests/src/gui/testqgsprocessingmodel.cpp
@@ -0,0 +1,319 @@ | ||
/************************************************************************ | ||
* This file has been generated automatically from * | ||
* * | ||
* src/gui/processing/qgsprocessingtoolboxmodel.h * | ||
* * | ||
* Do not edit manually ! Edit header and run scripts/sipify.pl again * | ||
************************************************************************/ | ||
|
||
|
||
|
||
|
||
|
||
class QgsProcessingToolboxModelNode : QObject | ||
{ | ||
%Docstring | ||
Abstract base class for nodes contained within a QgsProcessingToolboxModel. | ||
|
||
.. warning:: | ||
|
||
Not part of stable API and may change in future QGIS releases. | ||
|
||
.. versionadded:: 3.2 | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
%ConvertToSubClassCode | ||
if ( sipCpp->inherits( "QgsProcessingToolboxModelNode" ) ) | ||
{ | ||
sipType = sipType_QgsProcessingToolboxModelNode; | ||
QgsProcessingToolboxModelNode *node = qobject_cast<QgsProcessingToolboxModelNode *>( sipCpp ); | ||
if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeProvider ) | ||
sipType = sipType_QgsProcessingToolboxModelProviderNode; | ||
else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeGroup ) | ||
sipType = sipType_QgsProcessingToolboxModelGroupNode; | ||
else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeAlgorithm ) | ||
sipType = sipType_QgsProcessingToolboxModelAlgorithmNode; | ||
} | ||
else | ||
sipType = 0; | ||
%End | ||
public: | ||
|
||
enum NodeType | ||
{ | ||
NodeProvider, | ||
NodeGroup, | ||
NodeAlgorithm, | ||
}; | ||
|
||
~QgsProcessingToolboxModelNode(); | ||
|
||
virtual NodeType nodeType() const = 0; | ||
%Docstring | ||
Returns the node's type. | ||
%End | ||
|
||
QgsProcessingToolboxModelNode *parent(); | ||
%Docstring | ||
Returns the node's parent. If the node's parent is a null pointer, then the node is a root node. | ||
%End | ||
|
||
QList<QgsProcessingToolboxModelNode *> children(); | ||
%Docstring | ||
Returns a list of children belonging to the node. | ||
%End | ||
|
||
|
||
QgsProcessingToolboxModelGroupNode *getChildGroupNode( const QString &id ); | ||
%Docstring | ||
Tries to find a child node belonging to this node, which corresponds to | ||
a group node with the given group ``id``. Returns None if no matching | ||
child group node was found. | ||
%End | ||
|
||
void addChildNode( QgsProcessingToolboxModelNode *node /Transfer/ ); | ||
%Docstring | ||
Adds a child ``node`` to this node, transferring ownership of the node | ||
to this node. | ||
%End | ||
|
||
void deleteChildren(); | ||
%Docstring | ||
Deletes all child nodes from this node. | ||
%End | ||
|
||
}; | ||
|
||
class QgsProcessingToolboxModelProviderNode : QgsProcessingToolboxModelNode | ||
{ | ||
%Docstring | ||
Processing toolbox model node corresponding to a Processing provider. | ||
|
||
.. versionadded:: 3.2 | ||
|
||
.. warning:: | ||
|
||
Not part of stable API and may change in future QGIS releases. | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
public: | ||
|
||
QgsProcessingToolboxModelProviderNode( QgsProcessingProvider *provider ); | ||
%Docstring | ||
Constructor for QgsProcessingToolboxModelProviderNode, linked to the | ||
specified ``provider``. | ||
%End | ||
|
||
virtual NodeType nodeType() const; | ||
|
||
QgsProcessingProvider *provider(); | ||
%Docstring | ||
Returns the provider associated with this node. | ||
%End | ||
|
||
}; | ||
|
||
class QgsProcessingToolboxModelGroupNode : QgsProcessingToolboxModelNode | ||
{ | ||
%Docstring | ||
Processing toolbox model node corresponding to a group of algorithms. | ||
|
||
.. versionadded:: 3.2 | ||
|
||
.. warning:: | ||
|
||
Not part of stable API and may change in future QGIS releases. | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
public: | ||
|
||
QgsProcessingToolboxModelGroupNode( const QString &id, const QString &name ); | ||
%Docstring | ||
Constructor for QgsProcessingToolboxModelGroupNode. | ||
|
||
The ``id`` argument specifies the group ID (unique and untranslated), | ||
and the ``name`` argument gives the translated, user-visible name | ||
of the group. | ||
%End | ||
|
||
virtual NodeType nodeType() const; | ||
|
||
QString id() const; | ||
%Docstring | ||
Returns the group's ID, which is unique and untranslated. | ||
%End | ||
|
||
QString name() const; | ||
%Docstring | ||
Returns the group's name, which is translated and user-visible. | ||
%End | ||
|
||
}; | ||
|
||
class QgsProcessingToolboxModelAlgorithmNode : QgsProcessingToolboxModelNode | ||
{ | ||
%Docstring | ||
Processing toolbox model node corresponding to an algorithm. | ||
|
||
.. versionadded:: 3.2 | ||
|
||
.. warning:: | ||
|
||
Not part of stable API and may change in future QGIS releases. | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
public: | ||
|
||
QgsProcessingToolboxModelAlgorithmNode( const QgsProcessingAlgorithm *algorithm ); | ||
%Docstring | ||
Constructor for QgsProcessingToolboxModelAlgorithmNode, associated | ||
with the specified ``algorithm``. | ||
%End | ||
|
||
virtual NodeType nodeType() const; | ||
|
||
const QgsProcessingAlgorithm *algorithm() const; | ||
%Docstring | ||
Returns the algorithm associated with this node. | ||
%End | ||
|
||
}; | ||
|
||
|
||
class QgsProcessingToolboxModel : QAbstractItemModel | ||
{ | ||
%Docstring | ||
A model for providers and algorithms shown within the Processing toolbox. | ||
|
||
.. versionadded:: 3.2 | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
public: | ||
|
||
enum Roles | ||
{ | ||
RoleNodeType, | ||
RoleAlgorithmFlags, | ||
}; | ||
|
||
QgsProcessingToolboxModel( QObject *parent /TransferThis/ = 0, QgsProcessingRegistry *registry = 0 ); | ||
%Docstring | ||
Constructor for QgsProcessingToolboxModel, with the given ``parent`` object. | ||
|
||
If ``registry`` is specified then the model will show providers and algorithms | ||
from the given registry. If no registry is specified, then the processing | ||
registry attached to QgsApplication.processingRegistry() will be used | ||
by the model. | ||
%End | ||
|
||
virtual Qt::ItemFlags flags( const QModelIndex &index ) const; | ||
|
||
virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; | ||
|
||
virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const; | ||
|
||
virtual int columnCount( const QModelIndex & = QModelIndex() ) const; | ||
|
||
virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const; | ||
|
||
virtual QModelIndex parent( const QModelIndex &index ) const; | ||
|
||
|
||
QgsProcessingToolboxModelNode *index2node( const QModelIndex &index ) const; | ||
%Docstring | ||
Returns the model node corresponding to the given ``index``. | ||
|
||
.. seealso:: :py:func:`node2index` | ||
%End | ||
|
||
QModelIndex node2index( QgsProcessingToolboxModelNode *node ) const; | ||
%Docstring | ||
Returns the model index corresponding to the given ``node``. | ||
|
||
.. seealso:: :py:func:`index2node` | ||
%End | ||
|
||
QgsProcessingProvider *providerForIndex( const QModelIndex &index ) const; | ||
%Docstring | ||
Returns the provider which corresponds to a given ``index``, or | ||
a None if the index does not represent a provider. | ||
|
||
.. seealso:: :py:func:`algorithmForIndex` | ||
|
||
.. seealso:: :py:func:`indexForProvider` | ||
%End | ||
|
||
const QgsProcessingAlgorithm *algorithmForIndex( const QModelIndex &index ) const; | ||
%Docstring | ||
Returns the algorithm which corresponds to a given ``index``, or | ||
a None if the index does not represent an algorithm. | ||
|
||
.. seealso:: :py:func:`providerForIndex` | ||
%End | ||
|
||
QModelIndex indexForProvider( QgsProcessingProvider *provider ) const; | ||
%Docstring | ||
Returns the index corresponding to the specified ``provider``. | ||
|
||
.. seealso:: :py:func:`providerForIndex` | ||
%End | ||
|
||
QModelIndex indexOfParentTreeNode( QgsProcessingToolboxModelNode *parentNode ) const; | ||
%Docstring | ||
Returns the index corresponding to the parent of a given node. | ||
%End | ||
|
||
}; | ||
|
||
|
||
class QgsProcessingToolboxProxyModel: QSortFilterProxyModel | ||
{ | ||
%Docstring | ||
A sort/filter proxy model for providers and algorithms shown within the Processing toolbox. | ||
|
||
.. versionadded:: 3.2 | ||
%End | ||
|
||
%TypeHeaderCode | ||
#include "qgsprocessingtoolboxmodel.h" | ||
%End | ||
public: | ||
|
||
explicit QgsProcessingToolboxProxyModel( QObject *parent /TransferThis/ = 0, QgsProcessingRegistry *registry = 0 ); | ||
%Docstring | ||
Constructor for QgsProcessingToolboxProxyModel, with the given ``parent`` object. | ||
|
||
If ``registry`` is specified then the model will show providers and algorithms | ||
from the given registry. If no registry is specified, then the processing | ||
registry attached to QgsApplication.processingRegistry() will be used | ||
by the model. | ||
%End | ||
|
||
virtual bool lessThan( const QModelIndex &left, const QModelIndex &right ) const; | ||
|
||
|
||
}; | ||
|
||
|
||
/************************************************************************ | ||
* This file has been generated automatically from * | ||
* * | ||
* src/gui/processing/qgsprocessingtoolboxmodel.h * | ||
* * | ||
* Do not edit manually ! Edit header and run scripts/sipify.pl again * | ||
************************************************************************/ |
Oops, something went wrong.