// qprocess.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2019 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_WIN) %If (PyQt_Process) typedef void *Q_PID; %End %End %If (WS_X11 || WS_MACX) %If (PyQt_Process) typedef qint64 Q_PID; %End %End %If (PyQt_Process) class QProcess : QIODevice { %TypeHeaderCode #include %End public: enum ExitStatus { NormalExit, CrashExit, }; enum ProcessError { FailedToStart, Crashed, Timedout, ReadError, WriteError, UnknownError, }; enum ProcessState { NotRunning, Starting, Running, }; enum ProcessChannel { StandardOutput, StandardError, }; enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels, %If (Qt_5_2_0 -) ForwardedOutputChannel, %End %If (Qt_5_2_0 -) ForwardedErrorChannel, %End }; explicit QProcess(QObject *parent /TransferThis/ = 0); virtual ~QProcess(); void start(const QString &program, const QStringList &arguments, QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; void start(const QString &command, QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; %If (Qt_5_1_0 -) void start(QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; %End QProcess::ProcessChannel readChannel() const; void setReadChannel(QProcess::ProcessChannel channel); void closeReadChannel(QProcess::ProcessChannel channel); void closeWriteChannel(); QString workingDirectory() const; void setWorkingDirectory(const QString &dir); QProcess::ProcessError error() const; QProcess::ProcessState state() const; Q_PID pid() const; bool waitForStarted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForFinished(int msecs = 30000) /ReleaseGIL/; QByteArray readAllStandardOutput() /ReleaseGIL/; QByteArray readAllStandardError() /ReleaseGIL/; int exitCode() const; QProcess::ExitStatus exitStatus() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool isSequential() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; static int execute(const QString &program, const QStringList &arguments) /ReleaseGIL/; static int execute(const QString &program) /ReleaseGIL/; static bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid = 0); static bool startDetached(const QString &program, const QStringList &arguments); static bool startDetached(const QString &program); %If (Qt_5_10_0 -) bool startDetached(qint64 *pid = 0); %End static QStringList systemEnvironment(); QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); void setStandardInputFile(const QString &fileName); void setStandardOutputFile(const QString &fileName, QIODevice::OpenMode mode = QIODevice::Truncate); void setStandardErrorFile(const QString &fileName, QIODevice::OpenMode mode = QIODevice::Truncate); void setStandardOutputProcess(QProcess *destination); public slots: void terminate(); void kill(); signals: void started(); void finished(int exitCode, QProcess::ExitStatus exitStatus); void error(QProcess::ProcessError error); void stateChanged(QProcess::ProcessState state); void readyReadStandardOutput(); void readyReadStandardError(); %If (Qt_5_6_0 -) void errorOccurred(QProcess::ProcessError error); %End protected: void setProcessState(QProcess::ProcessState state); virtual void setupChildProcess(); virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QProcess::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; public: void setProcessEnvironment(const QProcessEnvironment &environment); QProcessEnvironment processEnvironment() const; QString program() const; %If (Qt_5_1_0 -) void setProgram(const QString &program); %End QStringList arguments() const; %If (Qt_5_1_0 -) void setArguments(const QStringList &arguments); %End %If (Qt_5_1_0 -) virtual bool open(QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; %End %If (Qt_5_2_0 -) enum InputChannelMode { ManagedInputChannel, ForwardedInputChannel, }; %End %If (Qt_5_2_0 -) QProcess::InputChannelMode inputChannelMode() const; %End %If (Qt_5_2_0 -) void setInputChannelMode(QProcess::InputChannelMode mode); %End %If (Qt_5_2_0 -) static QString nullDevice(); %End %If (Qt_5_3_0 -) qint64 processId() const; %End }; %End %If (PyQt_Process) class QProcessEnvironment { %TypeHeaderCode #include %End public: QProcessEnvironment(); QProcessEnvironment(const QProcessEnvironment &other); ~QProcessEnvironment(); bool operator==(const QProcessEnvironment &other) const; bool operator!=(const QProcessEnvironment &other) const; bool isEmpty() const; void clear(); bool contains(const QString &name) const; void insert(const QString &name, const QString &value); void insert(const QProcessEnvironment &e); void remove(const QString &name); QString value(const QString &name, const QString &defaultValue = QString()) const; QStringList toStringList() const; static QProcessEnvironment systemEnvironment(); QStringList keys() const; void swap(QProcessEnvironment &other /Constrained/); }; %End