21#ifndef QGSRUNPROCESS_H
22#define QGSRUNPROCESS_H
61 {
return new QgsRunProcess( action, capture ); }
72 static QStringList splitCommand(
const QString &command );
82 std::unique_ptr<QProcess> mProcess;
87 void stdoutAvailable();
88 void stderrAvailable();
89 void processError( QProcess::ProcessError );
90 void processExit(
int, QProcess::ExitStatus );
110class CORE_EXPORT QgsBlockingProcess :
public QObject
121 QgsBlockingProcess(
const QString &program,
const QStringList &arguments );
128 void setStdOutHandler(
const std::function<
void(
const QByteArray & ) > &handler ) { mStdoutHandler = handler; }
134 void setStdOutHandler( SIP_PYCALLABLE / AllowNone / );
136 Py_BEGIN_ALLOW_THREADS
138 sipCpp->setStdOutHandler( [a0](
const QByteArray &arg )
141 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QByteArray, NULL ) );
154 void setStdErrHandler(
const std::function<
void(
const QByteArray & ) > &handler ) { mStderrHandler = handler; }
160 void setStdErrHandler( SIP_PYCALLABLE / AllowNone / );
162 Py_BEGIN_ALLOW_THREADS
164 sipCpp->setStdErrHandler( [a0](
const QByteArray &arg )
167 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QByteArray, NULL ) );
182 int run( QgsFeedback *feedback =
nullptr );
187 QProcess::ExitStatus exitStatus()
const;
194 QProcess::ProcessError processError()
const;
199 QStringList mArguments;
200 std::function< void(
const QByteArray & ) > mStdoutHandler;
201 std::function< void(
const QByteArray & ) > mStderrHandler;
203 QProcess::ExitStatus mExitStatus = QProcess::NormalExit;
204 QProcess::ProcessError mProcessError = QProcess::UnknownError;
212class ProcessThread :
public QThread
217 ProcessThread(
const std::function<
void()> &function, QObject *parent =
nullptr )
219 , mFunction( function )
229 std::function<void()> mFunction;
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Interface for showing messages from QGIS in GUI independent way.
Executes an external program/script.
static QgsRunProcess * create(const QString &action, bool capture)
#define SIP_NODEFAULTCTORS