QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
qgsprocessingfeedback.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsprocessingfeedback.h
3  -----------------------
4  begin : December 2016
5  copyright : (C) 2016 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSPROCESSINGFEEDBACK_H
19 #define QGSPROCESSINGFEEDBACK_H
20 
21 #include "qgis_core.h"
22 #include "qgsfeedback.h"
23 
27 
37 class CORE_EXPORT QgsProcessingFeedback : public QgsFeedback
38 {
39  Q_OBJECT
40 
41  public:
42 
49  QgsProcessingFeedback( bool logFeedback = true );
50 
57  virtual void setProgressText( const QString &text );
58 
64  virtual void reportError( const QString &error, bool fatalError = false );
65 
76  virtual void pushWarning( const QString &warning );
77 
89  virtual void pushInfo( const QString &info );
90 
105  virtual void pushFormattedMessage( const QString &html, const QString &text );
106 
116  virtual void pushCommandInfo( const QString &info );
117 
126  virtual void pushDebugInfo( const QString &info );
127 
136  virtual void pushConsoleInfo( const QString &info );
137 
142  void pushVersionInfo( const QgsProcessingProvider *provider = nullptr );
143 
149  void pushFormattedResults( const QgsProcessingAlgorithm *algorithm, QgsProcessingContext &context, const QVariantMap &results );
150 
157  virtual QString htmlLog() const;
158 
165  virtual QString textLog() const;
166 
167  private:
168 
169  void log( const QString &htmlMessage, const QString &textMessage );
170 
171  bool mLogFeedback = true;
172  QString mHtmlLog;
173  QString mTextLog;
174  int mMessageLoggedCount = 0;
175 
176 };
177 
178 
191 {
192  Q_OBJECT
193 
194  public:
195 
202 
207  void setCurrentStep( int step );
208 
209  void setProgressText( const QString &text ) override;
210  void reportError( const QString &error, bool fatalError = false ) override;
211  void pushWarning( const QString &warning ) override;
212  void pushInfo( const QString &info ) override;
213  void pushCommandInfo( const QString &info ) override;
214  void pushDebugInfo( const QString &info ) override;
215  void pushConsoleInfo( const QString &info ) override;
216  void pushFormattedMessage( const QString &html, const QString &text ) override;
217 
218  QString htmlLog() const override;
219  QString textLog() const override;
220  private slots:
221 
222  void updateOverallProgress( double progress );
223 
224  private:
225 
226  int mChildSteps = 0;
227  int mCurrentStep = 0;
228  QgsProcessingFeedback *mFeedback = nullptr;
229 
230 };
231 
232 #endif // QGSPROCESSINGFEEDBACK_H
233 
234 
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
Abstract base class for processing algorithms.
Contains information about the context in which a processing algorithm is executed.
Base class for providing feedback from a processing algorithm.
Processing feedback object for multi-step operations.
Abstract base class for processing providers.
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