aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/terminalprocess.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-01-21 16:15:17 +0100
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-01-25 08:36:09 +0000
commit8260074c67d316d0f9cc594e46aaf23c5bacd5a3 (patch)
tree41acd05f2b26c7b1d74c59f0d23d07949e0087ff /src/libs/utils/terminalprocess.cpp
parent14eb2ce0a5508e72a4d0bde091cbabe3e4600f25 (diff)
Integrate ConsoleProcess into QtcProcess
Change-Id: I8e2b43ef27af6ff279b575a8d43f1ff918562951 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/libs/utils/terminalprocess.cpp')
-rw-r--r--src/libs/utils/terminalprocess.cpp56
1 files changed, 32 insertions, 24 deletions
diff --git a/src/libs/utils/terminalprocess.cpp b/src/libs/utils/terminalprocess.cpp
index d362743a2f9..30d02fed72e 100644
--- a/src/libs/utils/terminalprocess.cpp
+++ b/src/libs/utils/terminalprocess.cpp
@@ -63,17 +63,20 @@
namespace Utils {
namespace Internal {
-static QString modeOption(TerminalProcess::Mode m)
+static QString modeOption(QtcProcess::TerminalMode m)
{
switch (m) {
- case TerminalProcess::Debug:
+ case QtcProcess::TerminalRun:
+ return QLatin1String("run");
+ case QtcProcess::TerminalDebug:
return QLatin1String("debug");
- case TerminalProcess::Suspend:
+ case QtcProcess::TerminalSuspend:
return QLatin1String("suspend");
- case TerminalProcess::Run:
+ case QtcProcess::TerminalOff:
+ QTC_CHECK(false);
break;
}
- return QLatin1String("run");
+ return {};
}
static QString msgCommChannelFailed(const QString &error)
@@ -120,9 +123,13 @@ static QString msgCannotExecute(const QString & p, const QString &why)
class TerminalProcessPrivate
{
public:
- TerminalProcessPrivate() = default;
+ TerminalProcessPrivate(QObject *parent, QtcProcess::ProcessImpl processImpl,
+ QtcProcess::TerminalMode terminalMode)
+ : m_terminalMode(terminalMode)
+ , m_process(processImpl, parent)
+ {}
- TerminalProcess::Mode m_mode = TerminalProcess::Run;
+ const QtcProcess::TerminalMode m_terminalMode;
FilePath m_workingDir;
Environment m_environment;
qint64 m_processId = 0;
@@ -153,8 +160,9 @@ public:
#endif
};
-TerminalProcess::TerminalProcess(QObject *parent) :
- QObject(parent), d(new TerminalProcessPrivate)
+TerminalProcess::TerminalProcess(QObject *parent, QtcProcess::ProcessImpl processImpl,
+ QtcProcess::TerminalMode terminalMode) :
+ QObject(parent), d(new TerminalProcessPrivate(this, processImpl, terminalMode))
{
connect(&d->m_stubServer, &QLocalServer::newConnection,
this, &TerminalProcess::stubConnectionAvailable);
@@ -301,7 +309,7 @@ void TerminalProcess::start()
QString pcmd;
QString pargs;
- if (d->m_mode != Run) { // The debugger engines already pre-process the arguments.
+ if (d->m_terminalMode != QtcProcess::TerminalRun) { // The debugger engines already pre-process the arguments.
pcmd = d->m_commandLine.executable().toString();
pargs = d->m_commandLine.arguments();
} else {
@@ -369,7 +377,7 @@ void TerminalProcess::start()
workDir.append(QLatin1Char('\\'));
QStringList stubArgs;
- stubArgs << modeOption(d->m_mode)
+ stubArgs << modeOption(d->m_terminalMode)
<< d->m_stubServer.fullServerName()
<< workDir
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
@@ -415,7 +423,7 @@ void TerminalProcess::start()
emitError(QProcess::FailedToStart, tr("Quoting error in command."));
return;
}
- if (d->m_mode == Debug) {
+ if (d->m_terminalMode == QtcProcess::TerminalDebug) {
// FIXME: QTCREATORBUG-2809
emitError(QProcess::FailedToStart, tr("Debugging complex shell commands in a terminal"
" is currently not supported."));
@@ -475,7 +483,7 @@ void TerminalProcess::start()
allArgs << "sudo" << "-A";
allArgs << stubPath
- << modeOption(d->m_mode)
+ << modeOption(d->m_terminalMode)
<< d->m_stubServer.fullServerName()
<< msgPromptToClose()
<< workingDirectory().path()
@@ -517,7 +525,7 @@ void TerminalProcess::finish(int exitCode, QProcess::ExitStatus exitStatus)
d->m_processId = 0;
d->m_exitCode = exitCode;
d->m_appStatus = exitStatus;
- emit finished();
+ emit finished(exitCode, exitStatus);
}
void TerminalProcess::kickoffProcess()
@@ -600,6 +608,16 @@ bool TerminalProcess::isRunning() const
#endif
}
+QProcess::ProcessState TerminalProcess::state() const
+{
+#ifdef Q_OS_WIN
+ return (d->m_pid != nullptr) ? QProcess::Running : QProcess::NotRunning;
+#else
+ return (d->m_stubSocket && d->m_stubSocket->isOpen())
+ ? QProcess::Running : d->m_process.state();
+#endif
+}
+
QString TerminalProcess::stubServerListen()
{
#ifdef Q_OS_WIN
@@ -792,16 +810,6 @@ void TerminalProcess::cleanupStub()
#endif
}
-void TerminalProcess::setMode(Mode m)
-{
- d->m_mode = m;
-}
-
-TerminalProcess::Mode TerminalProcess::mode() const
-{
- return d->m_mode;
-}
-
qint64 TerminalProcess::processId() const
{
return d->m_processId;