16#ifndef QGSPROCESSINGTOOLBOXMODEL_H 
   17#define QGSPROCESSINGTOOLBOXMODEL_H 
   22#include <QAbstractItemModel> 
   23#include <QSortFilterProxyModel> 
   30class QgsProcessingToolboxModelGroupNode;
 
   31class QgsProcessingRecentAlgorithmLog;
 
   32class QgsProcessingFavoriteAlgorithmManager;
 
   42class GUI_EXPORT QgsProcessingToolboxModelNode : 
public QObject
 
   48    if ( sipCpp->inherits( 
"QgsProcessingToolboxModelNode" ) )
 
   50      sipType = sipType_QgsProcessingToolboxModelNode;
 
   51      QgsProcessingToolboxModelNode *node = qobject_cast<QgsProcessingToolboxModelNode *>( sipCpp );
 
   52      if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Provider )
 
   53        sipType = sipType_QgsProcessingToolboxModelProviderNode;
 
   54      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Group )
 
   55        sipType = sipType_QgsProcessingToolboxModelGroupNode;
 
   56      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Algorithm )
 
   57        sipType = sipType_QgsProcessingToolboxModelAlgorithmNode;
 
   58      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Parameter )
 
   59        sipType = sipType_QgsProcessingToolboxModelParameterNode;
 
   60      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Recent )
 
   61        sipType = sipType_QgsProcessingToolboxModelRecentNode;
 
   62      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::Favorite )
 
   63        sipType = sipType_QgsProcessingToolboxModelFavoriteNode;
 
   64      else if ( node->nodeType() == QgsProcessingToolboxModelNode::NodeType::ParameterGroup )
 
   65        sipType = sipType_QgsProcessingToolboxModelParameterGroupNode;
 
   89    ~QgsProcessingToolboxModelNode() 
override;
 
   94    virtual NodeType nodeType() 
const = 0;
 
   99    QgsProcessingToolboxModelNode *parent() { 
return mParent; }
 
  104    QList<QgsProcessingToolboxModelNode *> children() { 
return mChildren; }
 
  110    QList<QgsProcessingToolboxModelNode *> children() const 
SIP_SKIP 
  119    QgsProcessingToolboxModelNode *takeChild( QgsProcessingToolboxModelNode *node );
 
  126    QgsProcessingToolboxModelGroupNode *getChildGroupNode( 
const QString &
id );
 
  132    void addChildNode( QgsProcessingToolboxModelNode *node 
SIP_TRANSFER );
 
  137    void deleteChildren();
 
  140    QgsProcessingToolboxModelNode *mParent = 
nullptr;
 
  141    QList<QgsProcessingToolboxModelNode *> mChildren;
 
  150class GUI_EXPORT QgsProcessingToolboxModelRecentNode : 
public QgsProcessingToolboxModelNode
 
  155    QgsProcessingToolboxModelRecentNode() = 
default;
 
  157    NodeType nodeType()
 const override { 
return NodeType::Recent; }
 
  166class GUI_EXPORT QgsProcessingToolboxModelFavoriteNode : 
public QgsProcessingToolboxModelNode
 
  171    QgsProcessingToolboxModelFavoriteNode() = 
default;
 
  173    NodeType nodeType()
 const override { 
return NodeType::Favorite; }
 
  182class GUI_EXPORT QgsProcessingToolboxModelParameterGroupNode : 
public QgsProcessingToolboxModelNode
 
  187    QgsProcessingToolboxModelParameterGroupNode() = 
default;
 
  189    NodeType nodeType()
 const override { 
return NodeType::ParameterGroup; }
 
  198class GUI_EXPORT QgsProcessingToolboxModelProviderNode : 
public QgsProcessingToolboxModelNode
 
  209    NodeType nodeType()
 const override { 
return NodeType::Provider; }
 
  219    QString providerId()
 const { 
return mProviderId; }
 
  228    QPointer<QgsProcessingProvider> mProvider;
 
  237class GUI_EXPORT QgsProcessingToolboxModelGroupNode : 
public QgsProcessingToolboxModelNode
 
  249    QgsProcessingToolboxModelGroupNode( 
const QString &
id, 
const QString &name );
 
  251    NodeType nodeType()
 const override { 
return NodeType::Group; }
 
  256    QString id()
 const { 
return mId; }
 
  261    QString name()
 const { 
return mName; }
 
  274class GUI_EXPORT QgsProcessingToolboxModelAlgorithmNode : 
public QgsProcessingToolboxModelNode
 
  285    NodeType nodeType()
 const override { 
return NodeType::Algorithm; }
 
  303class GUI_EXPORT QgsProcessingToolboxModelParameterNode : 
public QgsProcessingToolboxModelNode
 
  314    NodeType nodeType()
 const override { 
return NodeType::Parameter; }
 
  379    Qt::ItemFlags flags( 
const QModelIndex &index ) 
const override;
 
  380    QVariant data( 
const QModelIndex &index, 
int role = Qt::DisplayRole ) 
const override;
 
  381    int rowCount( 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
  382    int columnCount( 
const QModelIndex & = QModelIndex() ) 
const override;
 
  383    QModelIndex index( 
int row, 
int column, 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
  384    QModelIndex parent( 
const QModelIndex &index ) 
const override;
 
  385    QMimeData *mimeData( 
const QModelIndexList &indexes ) 
const override;
 
  391    QgsProcessingToolboxModelNode *index2node( 
const QModelIndex &index ) 
const;
 
  397    QModelIndex node2index( QgsProcessingToolboxModelNode *node ) 
const;
 
  415    QString providerIdForIndex( 
const QModelIndex &index ) 
const;
 
  431    bool isAlgorithm( 
const QModelIndex &index ) 
const;
 
  449    bool isParameter( 
const QModelIndex &index ) 
const;
 
  455    QModelIndex indexForProvider( 
const QString &providerId ) 
const;
 
  460    QModelIndex indexOfParentTreeNode( QgsProcessingToolboxModelNode *parentNode ) 
const;
 
  477    void repopulateRecentAlgorithms( 
bool resetting = 
false );
 
  478    void repopulateFavoriteAlgorithms( 
bool resetting = 
false );
 
  481    QPointer<QgsProcessingRegistry> mRegistry;
 
  482    QPointer<QgsProcessingRecentAlgorithmLog> mRecentLog;
 
  483    QPointer<QgsProcessingFavoriteAlgorithmManager> mFavoriteManager;
 
  485    std::unique_ptr<QgsProcessingToolboxModelGroupNode> mRootNode;
 
  486    QgsProcessingToolboxModelRecentNode *mRecentNode = 
nullptr;
 
  487    QgsProcessingToolboxModelFavoriteNode *mFavoriteNode = 
nullptr;
 
  495    static bool isTopLevelProvider( 
const QString &providerId );
 
 
  586    void setFilterString( 
const QString &filter );
 
  595    bool filterAcceptsRow( 
int sourceRow, 
const QModelIndex &sourceParent ) 
const override;
 
  596    bool lessThan( 
const QModelIndex &left, 
const QModelIndex &right ) 
const override;
 
  597    QVariant data( 
const QModelIndex &index, 
int role = Qt::DisplayRole ) 
const override;
 
  601    Filters mFilters = Filters();
 
  602    QString mFilterString;
 
  603    QPointer<QgsVectorLayer> mInPlaceLayer;
 
 
Abstract base class for processing algorithms.
 
Makes metadata of processing parameters available.
 
Abstract base class for processing providers.
 
Registry for various processing components, including providers, algorithms and various parameters an...
 
Represents a vector layer which manages a vector based dataset.
 
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call
 
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
 
#define SIP_ENUM_BASETYPE(type)
 
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
 
#define SIP_MONKEYPATCH_COMPAT_NAME(FORMERNAME)
 
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsTextRendererUtils::CurvedTextFlags)