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