diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-01-21 16:15:17 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-01-25 08:36:09 +0000 |
commit | 8260074c67d316d0f9cc594e46aaf23c5bacd5a3 (patch) | |
tree | 41acd05f2b26c7b1d74c59f0d23d07949e0087ff /src/libs/utils/terminalprocess.cpp | |
parent | 14eb2ce0a5508e72a4d0bde091cbabe3e4600f25 (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.cpp | 56 |
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; |