forked from qt-creator/qt-creator
ProjectExplorer: declare ProcessStep in header
ProcessStep is goint to be reused in the workspace build configuration. Change-Id: I5f70429fa615991a32a16bdd508a21cda389960f Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -21,35 +21,32 @@ const char PROCESS_COMMAND_KEY[] = "ProjectExplorer.ProcessStep.Command";
|
|||||||
const char PROCESS_WORKINGDIRECTORY_KEY[] = "ProjectExplorer.ProcessStep.WorkingDirectory";
|
const char PROCESS_WORKINGDIRECTORY_KEY[] = "ProjectExplorer.ProcessStep.WorkingDirectory";
|
||||||
const char PROCESS_ARGUMENTS_KEY[] = "ProjectExplorer.ProcessStep.Arguments";
|
const char PROCESS_ARGUMENTS_KEY[] = "ProjectExplorer.ProcessStep.Arguments";
|
||||||
|
|
||||||
class ProcessStep final : public AbstractProcessStep
|
ProcessStep::ProcessStep(BuildStepList *bsl, Id id)
|
||||||
{
|
|
||||||
public:
|
|
||||||
ProcessStep(BuildStepList *bsl, Id id)
|
|
||||||
: AbstractProcessStep(bsl, id)
|
: AbstractProcessStep(bsl, id)
|
||||||
{
|
{
|
||||||
command.setSettingsKey(PROCESS_COMMAND_KEY);
|
m_command.setSettingsKey(PROCESS_COMMAND_KEY);
|
||||||
command.setLabelText(Tr::tr("Command:"));
|
m_command.setLabelText(Tr::tr("Command:"));
|
||||||
command.setExpectedKind(PathChooser::Command);
|
m_command.setExpectedKind(PathChooser::Command);
|
||||||
command.setHistoryCompleter("PE.ProcessStepCommand.History");
|
m_command.setHistoryCompleter("PE.ProcessStepCommand.History");
|
||||||
|
|
||||||
arguments.setSettingsKey(PROCESS_ARGUMENTS_KEY);
|
m_arguments.setSettingsKey(PROCESS_ARGUMENTS_KEY);
|
||||||
arguments.setDisplayStyle(StringAspect::LineEditDisplay);
|
m_arguments.setDisplayStyle(StringAspect::LineEditDisplay);
|
||||||
arguments.setLabelText(Tr::tr("Arguments:"));
|
m_arguments.setLabelText(Tr::tr("Arguments:"));
|
||||||
|
|
||||||
workingDirectory.setSettingsKey(PROCESS_WORKINGDIRECTORY_KEY);
|
m_workingDirectory.setSettingsKey(PROCESS_WORKINGDIRECTORY_KEY);
|
||||||
workingDirectory.setValue(QString(Constants::DEFAULT_WORKING_DIR));
|
m_workingDirectory.setValue(QString(Constants::DEFAULT_WORKING_DIR));
|
||||||
workingDirectory.setLabelText(Tr::tr("Working directory:"));
|
m_workingDirectory.setLabelText(Tr::tr("Working directory:"));
|
||||||
workingDirectory.setExpectedKind(PathChooser::Directory);
|
m_workingDirectory.setExpectedKind(PathChooser::Directory);
|
||||||
|
|
||||||
setWorkingDirectoryProvider([this] {
|
setWorkingDirectoryProvider([this] {
|
||||||
const FilePath workingDir = workingDirectory();
|
const FilePath workingDir = m_workingDirectory();
|
||||||
if (workingDir.isEmpty())
|
if (workingDir.isEmpty())
|
||||||
return FilePath::fromString(fallbackWorkingDirectory());
|
return FilePath::fromString(fallbackWorkingDirectory());
|
||||||
return workingDir;
|
return workingDir;
|
||||||
});
|
});
|
||||||
|
|
||||||
setCommandLineProvider([this] {
|
setCommandLineProvider([this] {
|
||||||
return CommandLine{command(), arguments(), CommandLine::Raw};
|
return CommandLine{m_command(), m_arguments(), CommandLine::Raw};
|
||||||
});
|
});
|
||||||
|
|
||||||
setSummaryUpdater([this] {
|
setSummaryUpdater([this] {
|
||||||
@@ -60,19 +57,28 @@ public:
|
|||||||
setupProcessParameters(¶m);
|
setupProcessParameters(¶m);
|
||||||
return param.summary(display);
|
return param.summary(display);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
void ProcessStep::setCommand(const Utils::FilePath &command)
|
||||||
void setupOutputFormatter(OutputFormatter *formatter) final
|
{
|
||||||
{
|
m_command.setValue(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProcessStep::setArguments(const QStringList &arguments)
|
||||||
|
{
|
||||||
|
m_arguments.setValue(arguments.join(" "));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProcessStep::setWorkingDirectory(const Utils::FilePath &workingDirectory)
|
||||||
|
{
|
||||||
|
m_workingDirectory.setValue(workingDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProcessStep::setupOutputFormatter(OutputFormatter *formatter)
|
||||||
|
{
|
||||||
formatter->addLineParsers(kit()->createOutputParsers());
|
formatter->addLineParsers(kit()->createOutputParsers());
|
||||||
AbstractProcessStep::setupOutputFormatter(formatter);
|
AbstractProcessStep::setupOutputFormatter(formatter);
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePathAspect command{this};
|
|
||||||
StringAspect arguments{this};
|
|
||||||
FilePathAspect workingDirectory{this};
|
|
||||||
};
|
|
||||||
|
|
||||||
// ProcessStepFactory
|
// ProcessStepFactory
|
||||||
|
|
||||||
|
@@ -3,10 +3,28 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "abstractprocessstep.h"
|
||||||
#include "buildstep.h"
|
#include "buildstep.h"
|
||||||
|
|
||||||
namespace ProjectExplorer::Internal {
|
namespace ProjectExplorer::Internal {
|
||||||
|
|
||||||
|
class ProcessStep final : public AbstractProcessStep
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ProcessStep(BuildStepList *bsl, Utils::Id id);
|
||||||
|
|
||||||
|
void setCommand(const Utils::FilePath &command);
|
||||||
|
void setArguments(const QStringList &arguments);
|
||||||
|
void setWorkingDirectory(const Utils::FilePath &workingDirectory);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setupOutputFormatter(Utils::OutputFormatter *formatter) final;
|
||||||
|
|
||||||
|
Utils::FilePathAspect m_command{this};
|
||||||
|
Utils::StringAspect m_arguments{this};
|
||||||
|
Utils::FilePathAspect m_workingDirectory{this};
|
||||||
|
};
|
||||||
|
|
||||||
class ProcessStepFactory final : public BuildStepFactory
|
class ProcessStepFactory final : public BuildStepFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user