ImagingTools Core SDK
CQmlProcess.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QObject>
7#include <QtCore/QProcess>
8
9
10namespace imtqml
11{
12
13
14class CQmlProcess : public QObject
15{
16 Q_OBJECT
17
18 Q_PROPERTY(int exitCode READ getExitCode WRITE setExitCode NOTIFY exitCodeChanged)
19 Q_PROPERTY(QProcess::ProcessState state READ getState WRITE setState NOTIFY stateChanged)
20 Q_PROPERTY(QProcess::ExitStatus exitStatus READ getExitStatus WRITE setExitStatus NOTIFY exitStatusChanged)
21
22public:
23 CQmlProcess();
24 ~CQmlProcess();
25
26 Q_INVOKABLE void start(QString command);
27 Q_INVOKABLE void start(QString command, QStringList arguments);
28 Q_INVOKABLE void addArgument(QString argument);
29 Q_INVOKABLE void kill();
30 Q_INVOKABLE void terminate();
31 Q_INVOKABLE void setEnviroment(QStringList enviroments);
32
33 int getExitCode() const;
34 void setExitCode(int exitCode);
35 QProcess::ProcessState getState() const;
36 void setState(QProcess::ProcessState state);
37 QProcess::ExitStatus getExitStatus() const;
38 void setExitStatus(QProcess::ExitStatus status);
39
40Q_SIGNALS:
41 void finished();
42 void error();
43 void started();
44 void standardError(QString error);
45 void standardOutput(QString error);
46 void exitCodeChanged();
47 void stateChanged();
48 void exitStatusChanged();
49
50public Q_SLOTS:
51 void onStateChanged(QProcess::ProcessState newState);
52 void onReadyReadStandardError();
53 void onReadyReadStandardOutput();
54 void onFinished(int exitCode, QProcess::ExitStatus exitStatus);
55
56private:
57 QStringList m_arguments;
58 QProcess m_process;
59 QProcess::ProcessState m_state;
60 QProcess::ExitStatus m_exitStatus;
61 int m_exitCode;
62};
63
64
65} // namespace imtqml
66
67
68Q_DECLARE_METATYPE(imtqml::CQmlProcess*)
69
70