Utils: Extract a CommandLine structure from a QtcProcess

We regularly pass around strings or filenames or pairs of strings
or filenames and stringlist etc the in the end will be used
as a kind of "command line", with quite a bit of ad-hoc user
code and QtcProcess::addArg etc to set them up and manipulate them.

Let's have a class for that concept.

Change-Id: I288ab939d853b32c717135a65242c584c2beab50
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-05-28 18:59:45 +02:00
parent f50859e856
commit 4098be05b2
19 changed files with 56 additions and 25 deletions

View File

@@ -32,16 +32,32 @@
namespace Utils {
class AbstractMacroExpander;
class QTCREATOR_UTILS_EXPORT CommandLine
{
public:
CommandLine() {}
CommandLine(const FilePath &executable, const QString &arguments)
: m_executable(executable), m_arguments(arguments)
{}
FilePath executable() const { return m_executable; }
QString arguments() const { return m_arguments; }
private:
FilePath m_executable;
QString m_arguments;
};
class QTCREATOR_UTILS_EXPORT QtcProcess : public QProcess
{
Q_OBJECT
public:
QtcProcess(QObject *parent = nullptr);
void setEnvironment(const Environment &env)
{ m_environment = env; m_haveEnv = true; }
void setCommand(const QString &command, const QString &arguments)
{ m_command = command; m_arguments = arguments; }
void setEnvironment(const Environment &env) { m_environment = env; m_haveEnv = true; }
void setCommand(const CommandLine &cmdLine) { m_commandLine = cmdLine; }
void setUseCtrlCStub(bool enabled);
void start();
void terminate();
@@ -141,8 +157,7 @@ public:
};
private:
QString m_command;
QString m_arguments;
CommandLine m_commandLine;
Environment m_environment;
bool m_haveEnv = false;
bool m_useCtrlCStub = false;