diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-02-18 00:56:14 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-02-18 10:51:55 +0000 |
commit | 48960b5cfccaeb4d9810d554e227cf04a6979ee2 (patch) | |
tree | 8dd694c5c6aa6b61df78443b39124ec345281034 | |
parent | 0ee07255f5fe79936e1ad66c7a9b7c0e2500a917 (diff) | |
download | qt-creator-48960b5cfccaeb4d9810d554e227cf04a6979ee2.tar.gz |
QtcProcess: Extract QtcProcess specific enums into separate header
Change-Id: Ib3498f189000fd8f5501130c0d280b0f5ae83849
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: hjk <hjk@qt.io>
-rw-r--r-- | src/libs/utils/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/libs/utils/launcherinterface.h | 1 | ||||
-rw-r--r-- | src/libs/utils/launcherpackets.h | 2 | ||||
-rw-r--r-- | src/libs/utils/launchersocket.h | 1 | ||||
-rw-r--r-- | src/libs/utils/processenums.h | 55 | ||||
-rw-r--r-- | src/libs/utils/processutils.h | 10 | ||||
-rw-r--r-- | src/libs/utils/qtcprocess.cpp | 20 | ||||
-rw-r--r-- | src/libs/utils/qtcprocess.h | 22 | ||||
-rw-r--r-- | src/libs/utils/terminalprocess.cpp | 25 | ||||
-rw-r--r-- | src/libs/utils/terminalprocess_p.h | 7 | ||||
-rw-r--r-- | src/libs/utils/utils.qbs | 1 | ||||
-rw-r--r-- | src/plugins/debugger/terminal.cpp | 2 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevice.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/applicationlauncher.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 2 | ||||
-rw-r--r-- | src/plugins/python/pythonutils.cpp | 2 | ||||
-rw-r--r-- | src/plugins/remotelinux/linuxdevice.cpp | 8 | ||||
-rw-r--r-- | src/tools/processlauncher/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/processlauncher/processlauncher.qbs | 1 |
19 files changed, 102 insertions, 65 deletions
diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt index 780f3e2017..0011901238 100644 --- a/src/libs/utils/CMakeLists.txt +++ b/src/libs/utils/CMakeLists.txt @@ -121,6 +121,7 @@ add_qtc_library(Utils porting.h portlist.cpp portlist.h predicates.h + processenums.h processhandle.cpp processhandle.h processreaper.cpp processreaper.h processutils.cpp processutils.h diff --git a/src/libs/utils/launcherinterface.h b/src/libs/utils/launcherinterface.h index cf57c5fae0..b7c04dcf8d 100644 --- a/src/libs/utils/launcherinterface.h +++ b/src/libs/utils/launcherinterface.h @@ -28,7 +28,6 @@ #include "utils_global.h" #include "processreaper.h" -#include "processutils.h" #include "singleton.h" #include <QThread> diff --git a/src/libs/utils/launcherpackets.h b/src/libs/utils/launcherpackets.h index 0462beffb8..9d05782a4e 100644 --- a/src/libs/utils/launcherpackets.h +++ b/src/libs/utils/launcherpackets.h @@ -25,7 +25,7 @@ #pragma once -#include "processutils.h" +#include "processenums.h" #include <QDataStream> #include <QProcess> diff --git a/src/libs/utils/launchersocket.h b/src/libs/utils/launchersocket.h index eaf84319e0..e3c1b1c7cd 100644 --- a/src/libs/utils/launchersocket.h +++ b/src/libs/utils/launchersocket.h @@ -28,7 +28,6 @@ #include "environment.h" #include "filepath.h" #include "launcherpackets.h" -#include "processutils.h" #include "qtcprocess.h" #include <QDeadlineTimer> diff --git a/src/libs/utils/processenums.h b/src/libs/utils/processenums.h new file mode 100644 index 0000000000..e350cc36f6 --- /dev/null +++ b/src/libs/utils/processenums.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include <QMetaType> + +namespace Utils { + +enum class ProcessMode { + Reader, // This opens in ReadOnly mode if no write data or in ReadWrite mode otherwise, + // closes the write channel afterwards. + Writer // This opens in ReadWrite mode and doesn't close the write channel +}; + +enum class ProcessImpl { + QProcess, + ProcessLauncher, + Default // Defaults to ProcessLauncherImpl, if QTC_USE_QPROCESS env var is set + // it equals to QProcessImpl. +}; + +enum class TerminalMode { + Off, + Run, + Debug, + Suspend, + On = Run // Default mode for terminal set to on +}; + +} // namespace Utils + +Q_DECLARE_METATYPE(Utils::ProcessMode); diff --git a/src/libs/utils/processutils.h b/src/libs/utils/processutils.h index 74f3c1c8e2..90405704e1 100644 --- a/src/libs/utils/processutils.h +++ b/src/libs/utils/processutils.h @@ -25,17 +25,13 @@ #pragma once +#include "processenums.h" + #include <QIODevice> #include <QProcess> namespace Utils { -enum class ProcessMode { - Reader, // This opens in ReadOnly mode if no write data or in ReadWrite mode otherwise, - // closes the write channel afterwards - Writer // This opens in ReadWrite mode and doesn't close the write channel -}; - class ProcessStartHandler { public: ProcessStartHandler(QProcess *process) : m_process(process) {} @@ -83,5 +79,3 @@ private: }; } // namespace Utils - -Q_DECLARE_METATYPE(Utils::ProcessMode); diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 863601cab4..78e82b668c 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -32,6 +32,7 @@ #include "launcherpackets.h" #include "launchersocket.h" #include "processreaper.h" +#include "processutils.h" #include "stringutils.h" #include "terminalprocess_p.h" @@ -217,8 +218,7 @@ public: class TerminalImpl : public ProcessInterface { public: - TerminalImpl(QObject *parent, QtcProcess::ProcessImpl processImpl, - QtcProcess::TerminalMode terminalMode) + TerminalImpl(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode) : ProcessInterface(parent) , m_terminal(this, processImpl, terminalMode) { @@ -431,11 +431,11 @@ void ProcessLauncherImpl::cancel() m_handle->cancel(); } -static QtcProcess::ProcessImpl defaultProcessImpl() +static ProcessImpl defaultProcessImpl() { if (qEnvironmentVariableIsSet("QTC_USE_QPROCESS")) - return QtcProcess::QProcessImpl; - return QtcProcess::ProcessLauncherImpl; + return ProcessImpl::QProcess; + return ProcessImpl::ProcessLauncher; } class QtcProcessPrivate : public QObject @@ -454,12 +454,12 @@ public: ProcessInterface *createProcessInterface() { - const QtcProcess::ProcessImpl impl = m_setup.m_processImpl == QtcProcess::DefaultImpl - ? defaultProcessImpl() : m_setup.m_processImpl; + const ProcessImpl impl = m_setup.m_processImpl == ProcessImpl::Default + ? defaultProcessImpl() : m_setup.m_processImpl; - if (m_setup.m_terminalMode != QtcProcess::TerminalOff) + if (m_setup.m_terminalMode != TerminalMode::Off) return new TerminalImpl(parent(), impl, m_setup.m_terminalMode); - else if (impl == QtcProcess::QProcessImpl) + else if (impl == ProcessImpl::QProcess) return new QProcessImpl(parent()); return new ProcessLauncherImpl(parent()); } @@ -717,7 +717,7 @@ void QtcProcess::setTerminalMode(TerminalMode mode) d->m_setup.m_terminalMode = mode; } -QtcProcess::TerminalMode QtcProcess::terminalMode() const +TerminalMode QtcProcess::terminalMode() const { return d->m_setup.m_terminalMode; } diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 800ef375ed..f04535936b 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -29,7 +29,7 @@ #include "environment.h" #include "commandline.h" -#include "processutils.h" +#include "processenums.h" #include "qtcassert.h" #include <QProcess> @@ -63,20 +63,6 @@ public: QtcProcess(QObject *parent = nullptr); ~QtcProcess(); - enum ProcessImpl { - QProcessImpl, - ProcessLauncherImpl, - DefaultImpl, - }; - - enum TerminalMode { - TerminalOff, - TerminalRun, - TerminalDebug, - TerminalSuspend, - TerminalOn = TerminalRun // default mode for ON - }; - void setProcessInterface(ProcessInterface *interface); // ProcessInterface related @@ -113,7 +99,7 @@ public: void setTerminalMode(TerminalMode mode); TerminalMode terminalMode() const; - bool usesTerminal() const { return terminalMode() != TerminalOff; } + bool usesTerminal() const { return terminalMode() != TerminalMode::Off; } void setProcessMode(ProcessMode processMode); ProcessMode processMode() const; @@ -253,9 +239,9 @@ private: class QTCREATOR_UTILS_EXPORT ProcessSetupData { public: - QtcProcess::ProcessImpl m_processImpl = QtcProcess::DefaultImpl; + ProcessImpl m_processImpl = ProcessImpl::Default; ProcessMode m_processMode = ProcessMode::Reader; - QtcProcess::TerminalMode m_terminalMode = QtcProcess::TerminalOff; + TerminalMode m_terminalMode = TerminalMode::Off; CommandLine m_commandLine; FilePath m_workingDirectory; diff --git a/src/libs/utils/terminalprocess.cpp b/src/libs/utils/terminalprocess.cpp index a7dd8ece43..eaec73de6d 100644 --- a/src/libs/utils/terminalprocess.cpp +++ b/src/libs/utils/terminalprocess.cpp @@ -63,16 +63,16 @@ namespace Utils { namespace Internal { -static QString modeOption(QtcProcess::TerminalMode m) +static QString modeOption(TerminalMode m) { switch (m) { - case QtcProcess::TerminalRun: + case TerminalMode::Run: return QLatin1String("run"); - case QtcProcess::TerminalDebug: + case TerminalMode::Debug: return QLatin1String("debug"); - case QtcProcess::TerminalSuspend: + case TerminalMode::Suspend: return QLatin1String("suspend"); - case QtcProcess::TerminalOff: + case TerminalMode::Off: QTC_CHECK(false); break; } @@ -123,15 +123,14 @@ static QString msgCannotExecute(const QString & p, const QString &why) class TerminalProcessPrivate { public: - TerminalProcessPrivate(QObject *parent, QtcProcess::ProcessImpl processImpl, - QtcProcess::TerminalMode terminalMode) + TerminalProcessPrivate(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode) : m_terminalMode(terminalMode) , m_process(parent) { m_process.setProcessImpl(processImpl); } - const QtcProcess::TerminalMode m_terminalMode; + const TerminalMode m_terminalMode; FilePath m_workingDir; Environment m_environment; qint64 m_processId = 0; @@ -161,9 +160,9 @@ public: #endif }; -TerminalProcess::TerminalProcess(QObject *parent, QtcProcess::ProcessImpl processImpl, - QtcProcess::TerminalMode terminalMode) : - QObject(parent), d(new TerminalProcessPrivate(this, processImpl, terminalMode)) +TerminalProcess::TerminalProcess(QObject *parent, ProcessImpl processImpl, + TerminalMode terminalMode) + : QObject(parent), d(new TerminalProcessPrivate(this, processImpl, terminalMode)) { connect(&d->m_stubServer, &QLocalServer::newConnection, this, &TerminalProcess::stubConnectionAvailable); @@ -211,7 +210,7 @@ void TerminalProcess::start() QString pcmd; QString pargs; - if (d->m_terminalMode != QtcProcess::TerminalRun) { // The debugger engines already pre-process the arguments. + if (d->m_terminalMode != TerminalMode::Run) { // The debugger engines already pre-process the arguments. pcmd = d->m_commandLine.executable().toString(); pargs = d->m_commandLine.arguments(); } else { @@ -376,7 +375,7 @@ void TerminalProcess::start() emitError(QProcess::FailedToStart, tr("Quoting error in command.")); return; } - if (d->m_terminalMode == QtcProcess::TerminalDebug) { + if (d->m_terminalMode == TerminalMode::Debug) { // FIXME: QTCREATORBUG-2809 emitError(QProcess::FailedToStart, tr("Debugging complex shell commands in a terminal" " is currently not supported.")); diff --git a/src/libs/utils/terminalprocess_p.h b/src/libs/utils/terminalprocess_p.h index 72cfee240e..5534c1a55a 100644 --- a/src/libs/utils/terminalprocess_p.h +++ b/src/libs/utils/terminalprocess_p.h @@ -25,7 +25,9 @@ #pragma once -#include "qtcprocess.h" +#include "processenums.h" + +#include <QProcess> namespace Utils { @@ -39,8 +41,7 @@ class TerminalProcess : public QObject { Q_OBJECT public: - explicit TerminalProcess(QObject *parent, QtcProcess::ProcessImpl processImpl, - QtcProcess::TerminalMode terminalMode); + explicit TerminalProcess(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode); ~TerminalProcess() override; void setCommand(const CommandLine &command); diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs index e6ad32fb02..f15971ae40 100644 --- a/src/libs/utils/utils.qbs +++ b/src/libs/utils/utils.qbs @@ -218,6 +218,7 @@ Project { "porting.h", "portlist.cpp", "portlist.h", + "processenums.h", "processhandle.cpp", "processhandle.h", "processreaper.cpp", diff --git a/src/plugins/debugger/terminal.cpp b/src/plugins/debugger/terminal.cpp index dc9e44313c..fd95b84090 100644 --- a/src/plugins/debugger/terminal.cpp +++ b/src/plugins/debugger/terminal.cpp @@ -196,7 +196,7 @@ void TerminalRunner::start() m_stubProc = new QtcProcess(this); m_stubProc->setTerminalMode(HostOsInfo::isWindowsHost() - ? QtcProcess::TerminalSuspend : QtcProcess::TerminalDebug); + ? TerminalMode::Suspend : TerminalMode::Debug); connect(m_stubProc, &QtcProcess::errorOccurred, this, &TerminalRunner::stubError); diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index efa2175ba4..e12763c08a 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -534,7 +534,7 @@ DockerDevice::DockerDevice(const DockerDeviceData &data) } QtcProcess *proc = new QtcProcess; - proc->setTerminalMode(QtcProcess::TerminalOn); + proc->setTerminalMode(TerminalMode::On); QObject::connect(proc, &QtcProcess::finished, proc, &QObject::deleteLater); diff --git a/src/plugins/projectexplorer/applicationlauncher.cpp b/src/plugins/projectexplorer/applicationlauncher.cpp index 7e6f4c164d..333e1c6c0d 100644 --- a/src/plugins/projectexplorer/applicationlauncher.cpp +++ b/src/plugins/projectexplorer/applicationlauncher.cpp @@ -190,7 +190,7 @@ void ApplicationLauncherPrivate::stop() return; m_stopRequested = true; emit q->appendMessage(ApplicationLauncher::tr("User requested stop. Shutting down..."), - Utils::NormalMessageFormat); + NormalMessageFormat); switch (m_state) { case Run: m_process->terminate(); @@ -439,7 +439,7 @@ void ApplicationLauncherPrivate::start(const IDevice::ConstPtr &device, bool loc this, &ApplicationLauncherPrivate::handleStandardOutput); } - m_process->setTerminalMode(m_useTerminal ? QtcProcess::TerminalOn : QtcProcess::TerminalOff); + m_process->setTerminalMode(m_useTerminal ? Utils::TerminalMode::On : Utils::TerminalMode::Off); m_process->start(); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 00c2ba035f..6bdbd0b6d9 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1680,7 +1680,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er if (tmp < 0 || tmp > int(StopBeforeBuild::SameApp)) tmp = int(defaultSettings.stopBeforeBuild); dd->m_projectExplorerSettings.stopBeforeBuild = StopBeforeBuild(tmp); - dd->m_projectExplorerSettings.terminalMode = static_cast<TerminalMode>( + dd->m_projectExplorerSettings.terminalMode = static_cast<Internal::TerminalMode>( s->value(Constants::TERMINAL_MODE_SETTINGS_KEY, int(defaultSettings.terminalMode)).toInt()); dd->m_projectExplorerSettings.closeSourceFilesWithProject = s->value(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, diff --git a/src/plugins/python/pythonutils.cpp b/src/plugins/python/pythonutils.cpp index 81ff8b4be4..eb1247dd72 100644 --- a/src/plugins/python/pythonutils.cpp +++ b/src/plugins/python/pythonutils.cpp @@ -108,7 +108,7 @@ void openPythonRepl(QObject *parent, const FilePath &file, ReplType type) const auto args = QStringList{"-i"} + replImportArgs(file, type); auto process = new QtcProcess(parent); - process->setTerminalMode(QtcProcess::TerminalOn); + process->setTerminalMode(TerminalMode::On); const FilePath pythonCommand = detectPython(file); process->setCommand({pythonCommand, args}); process->setWorkingDirectory(workingDir(file)); diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 66fcc0ec0e..f5cddad6c3 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -287,7 +287,7 @@ public: ~LinuxDevicePrivate(); CommandLine fullLocalCommandLine(const CommandLine &remoteCommand, - QtcProcess::TerminalMode terminalMode, + TerminalMode terminalMode, bool hasDisplay) const; bool setupShell(); bool runInShell(const CommandLine &cmd, const QByteArray &data = {}); @@ -335,7 +335,7 @@ LinuxDevice::LinuxDevice() if (env.size() > 0) proc->setCommand({"/bin/sh", {}}); - proc->setTerminalMode(QtcProcess::TerminalOn); + proc->setTerminalMode(TerminalMode::On); proc->setEnvironment(env); proc->setWorkingDirectory(workingDir); proc->start(); @@ -438,7 +438,7 @@ bool LinuxDevice::handlesFile(const FilePath &filePath) const } CommandLine LinuxDevicePrivate::fullLocalCommandLine(const CommandLine &remoteCommand, - QtcProcess::TerminalMode terminalMode, + TerminalMode terminalMode, bool hasDisplay) const { Utils::CommandLine cmd{SshSettings::sshFilePath()}; @@ -446,7 +446,7 @@ CommandLine LinuxDevicePrivate::fullLocalCommandLine(const CommandLine &remoteCo if (hasDisplay) cmd.addArg("-X"); - if (terminalMode != QtcProcess::TerminalOff) + if (terminalMode != TerminalMode::Off) cmd.addArg("-tt"); cmd.addArg("-q"); diff --git a/src/tools/processlauncher/CMakeLists.txt b/src/tools/processlauncher/CMakeLists.txt index e0064c62b3..47acf9c1e6 100644 --- a/src/tools/processlauncher/CMakeLists.txt +++ b/src/tools/processlauncher/CMakeLists.txt @@ -12,6 +12,7 @@ add_qtc_executable(qtcreator_processlauncher processlauncher-main.cpp ${UTILSDIR}/launcherpackets.cpp ${UTILSDIR}/launcherpackets.h + ${UTILSDIR}/processenums.h ${UTILSDIR}/processreaper.cpp ${UTILSDIR}/processreaper.h ${UTILSDIR}/processutils.cpp diff --git a/src/tools/processlauncher/processlauncher.qbs b/src/tools/processlauncher/processlauncher.qbs index bdcde4ac34..2b00bf8971 100644 --- a/src/tools/processlauncher/processlauncher.qbs +++ b/src/tools/processlauncher/processlauncher.qbs @@ -29,6 +29,7 @@ QtcTool { files: [ "launcherpackets.cpp", "launcherpackets.h", + "processenums.h", "processreaper.cpp", "processreaper.h", "processutils.cpp", |