16#ifndef QGSPROCESSINGALGORITHMDIALOGBASE_H
17#define QGSPROCESSINGALGORITHMDIALOGBASE_H
21#include "ui_qgsprocessingalgorithmdialogbase.h"
22#include "ui_qgsprocessingalgorithmprogressdialogbase.h"
23#include "ui_qgsprocessingcontextoptionsbase.h"
34class QgsProcessingAlgorithmDialogBase;
35class QgsProcessingContextOptionsWidget;
56 QgsProcessingAlgorithmDialogFeedback();
60 void progressTextChanged(
const QString &text );
61 void errorReported(
const QString &text,
bool fatalError );
62 void warningPushed(
const QString &text );
63 void infoPushed(
const QString &text );
64 void commandInfoPushed(
const QString &text );
65 void debugInfoPushed(
const QString &text );
66 void consoleInfoPushed(
const QString &text );
67 void formattedMessagePushed(
const QString &html );
72 void reportError(
const QString &error,
bool fatalError )
override;
74 void pushInfo(
const QString &info )
override;
109 enum class DialogMode :
int
114 Q_ENUM( QgsProcessingAlgorithmDialogBase::DialogMode )
119 QgsProcessingAlgorithmDialogBase( QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), QgsProcessingAlgorithmDialogBase::DialogMode mode = QgsProcessingAlgorithmDialogBase::DialogMode::Single );
120 ~QgsProcessingAlgorithmDialogBase()
override;
159 bool wasExecuted()
const {
return mExecuted; }
166 QVariantMap results()
const {
return mResults; }
180 void saveLogToFile( const QString &path, LogFormat format = FormatPlainText );
188 Qgis::ProcessingLogLevel logLevel() const;
196 void setLogLevel(
Qgis::ProcessingLogLevel level );
203 virtual
void setParameters( const QVariantMap &values );
212 void reportError( const QString &error,
bool fatalError );
217 void pushWarning( const QString &warning );
222 void pushInfo( const QString &info );
231 void pushFormattedMessage( const QString &html );
236 void pushDebugInfo( const QString &message );
241 void pushCommandInfo( const QString &info );
246 void setPercentage(
double percent );
251 void setProgressText( const QString &text );
256 void pushConsoleInfo( const QString &info );
262 QDialog *createProgressDialog();
281 void copyLogToClipboard();
286 void showParameters();
288 void reject() override;
292 void closeEvent( QCloseEvent *e ) override;
297 QPushButton *runButton();
302 QPushButton *cancelButton();
307 QPushButton *changeParametersButton();
312 QDialogButtonBox *buttonBox();
317 QTabWidget *tabWidget();
322 void clearProgress();
329 void setExecuted(
bool executed );
334 void setExecutedAnyResult(
bool executedAnyResult );
341 void setResults( const QVariantMap &results );
346 void setInfo( const QString &message,
bool isError = false,
bool escapeHtml = true,
bool isWarning = false );
357 virtual
void resetAdditionalGui();
362 void updateRunButtonVisibility();
368 void blockControlsWhileRunning();
374 virtual
void blockAdditionalControlsWhileRunning();
384 void hideShortHelp();
396 static QString formatStringForLog( const QString &
string );
403 virtual
bool isFinalized();
421 void algorithmFinished(
bool successful, const QVariantMap &result );
433 virtual
void runAlgorithm();
440 virtual
void algExecuted(
bool successful, const QVariantMap &results );
445 void toggleCollapsed();
447 void splitterChanged(
int pos,
int index );
448 void mTabWidget_currentChanged(
int index );
449 void linkClicked( const QUrl &url );
450 void taskTriggered(
QgsTask *task );
452 void urlClicked( const QUrl &url );
456 DialogMode mMode = DialogMode::Single;
458 QPushButton *mButtonRun =
nullptr;
459 QPushButton *mButtonClose =
nullptr;
460 QPushButton *mButtonChangeParameters =
nullptr;
461 QByteArray mSplitterState;
462 QToolButton *mButtonCollapse =
nullptr;
464 QPushButton *mAdvancedButton =
nullptr;
465 QMenu *mAdvancedMenu =
nullptr;
466 QAction *mCopyAsQgisProcessCommand =
nullptr;
467 QAction *mPasteJsonAction =
nullptr;
468 QAction *mContextSettingsAction =
nullptr;
470 bool mExecuted = false;
471 bool mExecutedAnyResult = false;
472 QVariantMap mResults;
477 bool mHelpCollapsed = false;
479 int mMessageLoggedCount = 0;
481 Qgis::ProcessingLogLevel mLogLevel =
Qgis::ProcessingLogLevel::DefaultLevel;
483 QPointer< QgsProcessingContextOptionsWidget > mContextOptionsWidget;
484 bool mOverrideDefaultContextSettings = false;
485 Qgis::InvalidGeometryCheck mGeometryCheck =
Qgis::InvalidGeometryCheck::AbortOnInvalid;
486 Qgis::DistanceUnit mDistanceUnits =
Qgis::DistanceUnit::Unknown;
487 Qgis::AreaUnit mAreaUnits =
Qgis::AreaUnit::Unknown;
488 QString mTemporaryFolderOverride;
489 int mMaximumThreads = QThread::idealThreadCount();
492 void scrollToBottomOfLog();
493 void processEvents();
504class QgsProcessingAlgorithmProgressDialog :
public QDialog,
private Ui::QgsProcessingProgressDialogBase
513 QgsProcessingAlgorithmProgressDialog( QWidget *parent =
nullptr );
518 QProgressBar *progressBar();
523 QPushButton *cancelButton();
528 QTextEdit *logTextEdit();
532 void reject()
override;
542class GUI_EXPORT QgsProcessingContextOptionsWidget :
public QgsPanelWidget,
private Ui::QgsProcessingContextOptionsBase
551 QgsProcessingContextOptionsWidget( QWidget *parent
SIP_TRANSFERTHIS =
nullptr );
576 QString temporaryFolder();
581 int maximumThreads()
const;
The Qgis class provides global constants for use throughout the application.
DistanceUnit
Units of distance.
InvalidGeometryCheck
Methods for handling of features with invalid geometries.
ProcessingLogLevel
Logging level for algorithms to use when pushing feedback messages.
A bar for displaying non-blocking messages to the user.
QgsTask task which runs a QgsProcessingAlgorithm in a background task.
Abstract base class for processing algorithms.
An interface for objects which can create Processing contexts.
Contains information about the context in which a processing algorithm is executed.
Base class for providing feedback from a processing algorithm.
virtual void pushCommandInfo(const QString &info)
Pushes an informational message containing a command from the algorithm.
virtual void pushInfo(const QString &info)
Pushes a general informational message from the algorithm.
virtual void pushWarning(const QString &warning)
Pushes a warning informational message from the algorithm.
virtual void pushDebugInfo(const QString &info)
Pushes an informational message containing debugging helpers from the algorithm.
virtual void pushFormattedMessage(const QString &html, const QString &text)
Pushes a pre-formatted message from the algorithm.
virtual void reportError(const QString &error, bool fatalError=false)
Reports that the algorithm encountered an error while executing.
virtual void pushConsoleInfo(const QString &info)
Pushes a console feedback message from the algorithm.
virtual void setProgressText(const QString &text)
Sets a progress report text string.
An interface for objects which can create sets of parameter values for processing algorithms.
Abstract base class for long running background tasks.
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