forked from qt-creator/qt-creator
ProjectExplorer: Inline BuildStepInfo
Was a more or less arbitrary subset of BuildStepFactory data. Change-Id: Ie37735532da8a15a22d5f92e1b45d6ed5f7758fc Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -110,7 +110,7 @@ bool NimCompilerCleanStep::removeOutFilePath()
|
||||
NimCompilerCleanStepFactory::NimCompilerCleanStepFactory()
|
||||
{
|
||||
registerStep<NimCompilerCleanStep>(Constants::C_NIMCOMPILERCLEANSTEP_ID);
|
||||
setFlags(BuildStepInfo::Unclonable);
|
||||
setFlags(BuildStep::Unclonable);
|
||||
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
|
||||
setSupportedConfiguration(Constants::C_NIMBUILDCONFIGURATION_ID);
|
||||
setRepeatable(false);
|
||||
|
||||
@@ -361,7 +361,7 @@ bool BuildStepFactory::canHandle(BuildStepList *bsl) const
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!m_isRepeatable && bsl->contains(m_info.id))
|
||||
if (!m_isRepeatable && bsl->contains(m_stepId))
|
||||
return false;
|
||||
|
||||
if (m_supportedConfiguration.isValid()) {
|
||||
@@ -375,14 +375,19 @@ bool BuildStepFactory::canHandle(BuildStepList *bsl) const
|
||||
return true;
|
||||
}
|
||||
|
||||
void BuildStepFactory::setDisplayName(const QString &displayName)
|
||||
QString BuildStepFactory::displayName() const
|
||||
{
|
||||
m_info.displayName = displayName;
|
||||
return m_displayName;
|
||||
}
|
||||
|
||||
void BuildStepFactory::setFlags(BuildStepInfo::Flags flags)
|
||||
void BuildStepFactory::setDisplayName(const QString &displayName)
|
||||
{
|
||||
m_info.flags = flags;
|
||||
m_displayName = displayName;
|
||||
}
|
||||
|
||||
void BuildStepFactory::setFlags(BuildStep::Flags flags)
|
||||
{
|
||||
m_flags = flags;
|
||||
}
|
||||
|
||||
void BuildStepFactory::setSupportedStepList(Id id)
|
||||
@@ -415,20 +420,20 @@ void BuildStepFactory::setSupportedDeviceTypes(const QList<Id> &ids)
|
||||
m_supportedDeviceTypes = ids;
|
||||
}
|
||||
|
||||
BuildStepInfo BuildStepFactory::stepInfo() const
|
||||
BuildStep::Flags BuildStepFactory::stepFlags() const
|
||||
{
|
||||
return m_info;
|
||||
return m_flags;
|
||||
}
|
||||
|
||||
Id BuildStepFactory::stepId() const
|
||||
{
|
||||
return m_info.id;
|
||||
return m_stepId;
|
||||
}
|
||||
|
||||
BuildStep *BuildStepFactory::create(BuildStepList *parent)
|
||||
{
|
||||
BuildStep *step = m_info.creator(parent);
|
||||
step->setDefaultDisplayName(m_info.displayName);
|
||||
BuildStep *step = m_creator(parent);
|
||||
step->setDefaultDisplayName(m_displayName);
|
||||
return step;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,12 @@ public:
|
||||
|
||||
enum OutputNewlineSetting { DoAppendNewline, DontAppendNewline };
|
||||
|
||||
enum Flags {
|
||||
Uncreatable = 1 << 0,
|
||||
Unclonable = 1 << 1,
|
||||
UniqueStep = 1 << 8 // Can't be used twice in a BuildStepList
|
||||
};
|
||||
|
||||
bool widgetExpandedByDefault() const;
|
||||
void setWidgetExpandedByDefault(bool widgetExpandedByDefault);
|
||||
|
||||
@@ -136,23 +142,6 @@ private:
|
||||
QString m_summaryText;
|
||||
};
|
||||
|
||||
class PROJECTEXPLORER_EXPORT BuildStepInfo
|
||||
{
|
||||
public:
|
||||
enum Flags {
|
||||
Uncreatable = 1 << 0,
|
||||
Unclonable = 1 << 1,
|
||||
UniqueStep = 1 << 8 // Can't be used twice in a BuildStepList
|
||||
};
|
||||
|
||||
using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>;
|
||||
|
||||
Utils::Id id;
|
||||
QString displayName;
|
||||
Flags flags = Flags();
|
||||
BuildStepCreator creator;
|
||||
};
|
||||
|
||||
class PROJECTEXPLORER_EXPORT BuildStepFactory
|
||||
{
|
||||
public:
|
||||
@@ -163,22 +152,24 @@ public:
|
||||
|
||||
static const QList<BuildStepFactory *> allBuildStepFactories();
|
||||
|
||||
BuildStepInfo stepInfo() const;
|
||||
BuildStep::Flags stepFlags() const;
|
||||
Utils::Id stepId() const;
|
||||
BuildStep *create(BuildStepList *parent);
|
||||
BuildStep *restore(BuildStepList *parent, const QVariantMap &map);
|
||||
|
||||
bool canHandle(BuildStepList *bsl) const;
|
||||
|
||||
QString displayName() const;
|
||||
|
||||
protected:
|
||||
using BuildStepCreator = std::function<BuildStep *(BuildStepList *)>;
|
||||
|
||||
template <class BuildStepType>
|
||||
void registerStep(Utils::Id id)
|
||||
{
|
||||
QTC_CHECK(!m_info.creator);
|
||||
m_info.id = id;
|
||||
m_info.creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); };
|
||||
QTC_CHECK(!m_creator);
|
||||
m_stepId = id;
|
||||
m_creator = [id](BuildStepList *bsl) { return new BuildStepType(bsl, id); };
|
||||
}
|
||||
|
||||
void setSupportedStepList(Utils::Id id);
|
||||
@@ -189,10 +180,13 @@ protected:
|
||||
void setSupportedDeviceTypes(const QList<Utils::Id> &ids);
|
||||
void setRepeatable(bool on) { m_isRepeatable = on; }
|
||||
void setDisplayName(const QString &displayName);
|
||||
void setFlags(BuildStepInfo::Flags flags);
|
||||
void setFlags(BuildStep::Flags flags);
|
||||
|
||||
private:
|
||||
BuildStepInfo m_info;
|
||||
Utils::Id m_stepId;
|
||||
QString m_displayName;
|
||||
BuildStep::Flags m_flags = {};
|
||||
BuildStepCreator m_creator;
|
||||
|
||||
Utils::Id m_supportedProjectType;
|
||||
QList<Utils::Id> m_supportedDeviceTypes;
|
||||
|
||||
@@ -209,14 +209,14 @@ void BuildStepListWidget::updateAddBuildStepMenu()
|
||||
if (!factory->canHandle(m_buildStepList))
|
||||
continue;
|
||||
|
||||
const BuildStepInfo &info = factory->stepInfo();
|
||||
if (info.flags & BuildStepInfo::Uncreatable)
|
||||
const BuildStep::Flags flags = factory->stepFlags();
|
||||
if (flags & BuildStep::Uncreatable)
|
||||
continue;
|
||||
|
||||
if ((info.flags & BuildStepInfo::UniqueStep) && m_buildStepList->contains(info.id))
|
||||
if ((flags & BuildStep::UniqueStep) && m_buildStepList->contains(factory->stepId()))
|
||||
continue;
|
||||
|
||||
QAction *action = menu->addAction(info.displayName);
|
||||
QAction *action = menu->addAction(factory->displayName());
|
||||
connect(action, &QAction::triggered, this, [factory, this] {
|
||||
BuildStep *newStep = factory->create(m_buildStepList);
|
||||
QTC_ASSERT(newStep, return);
|
||||
|
||||
@@ -42,7 +42,7 @@ PySideBuildStepFactory::PySideBuildStepFactory()
|
||||
registerStep<PySideBuildStep>(pySideBuildStep);
|
||||
setSupportedProjectType(PythonProjectId);
|
||||
setDisplayName(Tr::tr("Run PySide6 project tool"));
|
||||
setFlags(BuildStepInfo::UniqueStep);
|
||||
setFlags(BuildStep::UniqueStep);
|
||||
}
|
||||
|
||||
PySideBuildStep::PySideBuildStep(BuildStepList *bsl, Id id)
|
||||
|
||||
@@ -744,7 +744,7 @@ QMakeStepFactory::QMakeStepFactory()
|
||||
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
|
||||
//: QMakeStep default display name
|
||||
setDisplayName(::QmakeProjectManager::Tr::tr("qmake")); // Fully qualifying for lupdate
|
||||
setFlags(BuildStepInfo::UniqueStep);
|
||||
setFlags(BuildStep::UniqueStep);
|
||||
}
|
||||
|
||||
QMakeStepConfig::TargetArchConfig QMakeStepConfig::targetArchFor(const Abi &, const QtVersion *)
|
||||
|
||||
Reference in New Issue
Block a user