Use a type enum instead of duplicating functions between build and clean

That is e.g. buildSteps() and cleanSteps() --> steps(type)
This commit is contained in:
dt
2010-03-16 14:36:59 +01:00
parent 10c3240e40
commit 0d4fdd291a
25 changed files with 212 additions and 206 deletions

View File

@@ -213,10 +213,10 @@ CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer:
bc->setDisplayName(buildConfigurationName);
MakeStep *makeStep = new MakeStep(bc);
bc->insertBuildStep(0, makeStep);
bc->insertStep(ProjectExplorer::Build, 0, makeStep);
MakeStep *cleanMakeStep = new MakeStep(bc);
bc->insertCleanStep(0, cleanMakeStep);
bc->insertStep(ProjectExplorer::Clean, 0, cleanMakeStep);
cleanMakeStep->setAdditionalArguments(QStringList() << "clean");
cleanMakeStep->setClean(true);

View File

@@ -523,7 +523,8 @@ bool CMakeProject::fromMap(const QVariantMap &map)
return false;
if (!hasUserFile && hasBuildTarget("all")) {
MakeStep *makeStep(qobject_cast<MakeStep *>(activeTarget()->activeBuildConfiguration()->buildSteps().at(0)));
MakeStep *makeStep = qobject_cast<MakeStep *>(
activeTarget()->activeBuildConfiguration()->steps(ProjectExplorer::Build).at(0));
Q_ASSERT(makeStep);
makeStep->setBuildTarget("all", true);
}

View File

@@ -32,6 +32,7 @@
#include "cmakeopenprojectwizard.h"
#include "cmakeproject.h"
#include "cmakerunconfiguration.h"
#include "cmakebuildconfiguration.h"
#include <QtGui/QApplication>
#include <QtGui/QStyle>
@@ -168,10 +169,10 @@ CMakeTarget *CMakeTargetFactory::create(ProjectExplorer::Project *parent, const
bc->setDisplayName("all");
// Now create a standard build configuration
bc->insertBuildStep(0, new MakeStep(bc));
bc->insertStep(ProjectExplorer::Build, 0, new MakeStep(bc));
MakeStep *cleanMakeStep = new MakeStep(bc);
bc->insertCleanStep(0, cleanMakeStep);
bc->insertStep(ProjectExplorer::Clean, 0, cleanMakeStep);
cleanMakeStep->setAdditionalArguments(QStringList() << "clean");
cleanMakeStep->setClean(true);

View File

@@ -317,41 +317,42 @@ MakeStepFactory::~MakeStepFactory()
{
}
bool MakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const
bool MakeStepFactory::canCreate(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const
{
Q_UNUSED(type)
if (!qobject_cast<CMakeBuildConfiguration *>(parent))
return false;
return QLatin1String(MS_ID) == id;
}
BuildStep *MakeStepFactory::create(BuildConfiguration *parent, const QString &id)
BuildStep *MakeStepFactory::create(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id)
{
if (!canCreate(parent, id))
if (!canCreate(parent, type, id))
return 0;
return new MakeStep(parent);
}
bool MakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const
bool MakeStepFactory::canClone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source) const
{
return canCreate(parent, source->id());
return canCreate(parent, type, source->id());
}
BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, BuildStep *source)
BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source)
{
if (!canClone(parent, source))
if (!canClone(parent, type, source))
return 0;
return new MakeStep(parent, static_cast<MakeStep *>(source));
}
bool MakeStepFactory::canRestore(BuildConfiguration *parent, const QVariantMap &map) const
bool MakeStepFactory::canRestore(BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const
{
QString id(ProjectExplorer::idFromMap(map));
return canCreate(parent, id);
return canCreate(parent, type, id);
}
BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, const QVariantMap &map)
BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map)
{
if (!canRestore(parent, map))
if (!canRestore(parent, type, map))
return 0;
MakeStep *bs(new MakeStep(parent));
if (bs->fromMap(map))
@@ -360,8 +361,9 @@ BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, const QVariantMa
return 0;
}
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const
{
Q_UNUSED(type)
if (!qobject_cast<CMakeBuildConfiguration *>(parent))
return QStringList();
return QStringList() << QLatin1String(MS_ID);

View File

@@ -119,14 +119,14 @@ public:
explicit MakeStepFactory(QObject *parent = 0);
virtual ~MakeStepFactory();
virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const;
virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id);
virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const;
virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source);
virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const;
virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map);
virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const;
virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id);
virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const;
virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source);
virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const;
virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map);
virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const;
virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, ProjectExplorer::StepType type) const;
virtual QString displayNameForId(const QString &id) const;
};

View File

@@ -175,7 +175,7 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Ta
bc->setDisplayName(buildConfigurationName);
GenericMakeStep *makeStep = new GenericMakeStep(bc);
bc->insertBuildStep(0, makeStep);
bc->insertStep(ProjectExplorer::Build, 0, makeStep);
makeStep->setBuildTarget("all", /* on = */ true);
target->addBuildConfiguration(bc); // also makes the name unique...

View File

@@ -307,32 +307,38 @@ GenericMakeStepFactory::~GenericMakeStepFactory()
{
}
bool GenericMakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const
bool GenericMakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QString &id) const
{
Q_UNUSED(type)
if (!qobject_cast<GenericBuildConfiguration *>(parent))
return false;
return id == QLatin1String(GENERIC_MS_ID);
}
ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QString &id)
{
if (!canCreate(parent, id))
if (!canCreate(parent, type, id))
return 0;
return new GenericMakeStep(parent);
}
bool GenericMakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
ProjectExplorer::BuildStep *source) const
{
const QString id(source->id());
return canCreate(parent, id);
return canCreate(parent, type, id);
}
ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
ProjectExplorer::BuildStep *source)
{
if (!canClone(parent, source))
if (!canClone(parent, type, source))
return 0;
GenericMakeStep *old(qobject_cast<GenericMakeStep *>(source));
Q_ASSERT(old);
@@ -340,16 +346,18 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::Build
}
bool GenericMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QVariantMap &map) const
{
QString id(ProjectExplorer::idFromMap(map));
return canCreate(parent, id);
return canCreate(parent, type, id);
}
ProjectExplorer::BuildStep *GenericMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QVariantMap &map)
{
if (!canRestore(parent, map))
if (!canRestore(parent, type, map))
return 0;
GenericMakeStep *bs(new GenericMakeStep(parent));
if (bs->fromMap(map))
@@ -358,8 +366,10 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::restore(ProjectExplorer::Bui
return 0;
}
QStringList GenericMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const
QStringList GenericMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type) const
{
Q_UNUSED(type)
if (!qobject_cast<GenericBuildConfiguration *>(parent))
return QStringList();
return QStringList() << QLatin1String(GENERIC_MS_ID);

View File

@@ -113,19 +113,27 @@ public:
explicit GenericMakeStepFactory(QObject *parent = 0);
virtual ~GenericMakeStepFactory();
virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const;
virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QString &id) const;
virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QString &id);
virtual bool canClone(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
ProjectExplorer::BuildStep *source) const;
virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
ProjectExplorer::BuildStep *source);
virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QVariantMap &map) const;
virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent,
ProjectExplorer::StepType type,
const QVariantMap &map);
virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const;
virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc,
ProjectExplorer::StepType type) const;
virtual QString displayNameForId(const QString &id) const;
};

View File

@@ -137,7 +137,7 @@ GenericTarget *GenericTargetFactory::create(ProjectExplorer::Project *parent, co
bc->setDisplayName("all");
GenericMakeStep *makeStep = new GenericMakeStep(bc);
bc->insertBuildStep(0, makeStep);
bc->insertStep(ProjectExplorer::Build, 0, makeStep);
makeStep->setBuildTarget("all", /* on = */ true);

View File

@@ -39,20 +39,20 @@ using namespace ProjectExplorer;
namespace {
IBuildStepFactory *findCloneFactory(BuildConfiguration *parent, BuildStep *source)
IBuildStepFactory *findCloneFactory(BuildConfiguration *parent, StepType type, BuildStep *source)
{
QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>();
foreach(IBuildStepFactory *factory, factories)
if (factory->canClone(parent, source))
if (factory->canClone(parent, type, source))
return factory;
return 0;
}
IBuildStepFactory *findRestoreFactory(BuildConfiguration *parent, const QVariantMap &map)
IBuildStepFactory *findRestoreFactory(BuildConfiguration *parent, StepType type, const QVariantMap &map)
{
QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>();
foreach(IBuildStepFactory *factory, factories)
if (factory->canRestore(parent, map))
if (factory->canRestore(parent, type, map))
return factory;
return 0;
}
@@ -85,19 +85,20 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
BuildConfiguration::~BuildConfiguration()
{
qDeleteAll(m_buildSteps);
qDeleteAll(m_cleanSteps);
for (int i = 0; i < LastStepType; ++i) {
qDeleteAll(m_steps[i]);
}
}
QVariantMap BuildConfiguration::toMap() const
{
QVariantMap map(ProjectConfiguration::toMap());
map.insert(QLatin1String(BUILD_STEPS_COUNT_KEY), m_buildSteps.count());
for (int i = 0; i < m_buildSteps.count(); ++i)
map.insert(QString::fromLatin1(BUILD_STEPS_PREFIX) + QString::number(i), m_buildSteps.at(i)->toMap());
map.insert(QLatin1String(CLEAN_STEPS_COUNT_KEY), m_cleanSteps.count());
for (int i = 0; i < m_cleanSteps.count(); ++i)
map.insert(QString::fromLatin1(CLEAN_STEPS_PREFIX) + QString::number(i), m_cleanSteps.at(i)->toMap());
map.insert(QLatin1String(BUILD_STEPS_COUNT_KEY), m_steps[Build].count());
for (int i = 0; i < m_steps[Build].count(); ++i)
map.insert(QString::fromLatin1(BUILD_STEPS_PREFIX) + QString::number(i), m_steps[Build].at(i)->toMap());
map.insert(QLatin1String(CLEAN_STEPS_COUNT_KEY), m_steps[Clean].count());
for (int i = 0; i < m_steps[Clean].count(); ++i)
map.insert(QString::fromLatin1(CLEAN_STEPS_PREFIX) + QString::number(i), m_steps[Clean].at(i)->toMap());
map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), m_clearSystemEnvironment);
map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), EnvironmentItem::toStringList(m_userEnvironmentChanges));
@@ -107,21 +108,15 @@ QVariantMap BuildConfiguration::toMap() const
void BuildConfiguration::cloneSteps(BuildConfiguration *source)
{
Q_ASSERT(source);
foreach (BuildStep *originalbs, source->buildSteps()) {
IBuildStepFactory *factory(findCloneFactory(this, originalbs));
for (int i = 0; i < LastStepType; ++i) {
foreach (BuildStep *originalbs, source->steps(StepType(i))) {
IBuildStepFactory *factory(findCloneFactory(this, StepType(i), originalbs));
if (!factory)
continue;
BuildStep *clonebs(factory->clone(this, originalbs));
BuildStep *clonebs(factory->clone(this, StepType(i), originalbs));
if (clonebs)
m_buildSteps.append(clonebs);
m_steps[i].append(clonebs);
}
foreach (BuildStep *originalcs, source->cleanSteps()) {
IBuildStepFactory *factory = findCloneFactory(this, originalcs);
if (!factory)
continue;
BuildStep *clonecs = factory->clone(this, originalcs);
if (clonecs)
m_cleanSteps.append(clonecs);
}
}
@@ -139,17 +134,17 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
qWarning() << "No buildstep data found (continuing).";
continue;
}
IBuildStepFactory *factory(findRestoreFactory(this, bsData));
IBuildStepFactory *factory(findRestoreFactory(this, Build, bsData));
if (!factory) {
qWarning() << "No factory for buildstep found (continuing).";
continue;
}
BuildStep *bs(factory->restore(this, bsData));
BuildStep *bs(factory->restore(this, Build, bsData));
if (!bs) {
qWarning() << "Restoration of buildstep failed (continuing).";
continue;
}
insertBuildStep(m_buildSteps.count(), bs);
insertStep(Build, m_steps[Build].count(), bs);
}
maxI = map.value(QLatin1String(CLEAN_STEPS_COUNT_KEY), 0).toInt();
@@ -161,17 +156,17 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
qWarning() << "No cleanstep data found for (continuing).";
continue;
}
IBuildStepFactory *factory(findRestoreFactory(this, bsData));
IBuildStepFactory *factory(findRestoreFactory(this, Clean, bsData));
if (!factory) {
qWarning() << "No factory for cleanstep found (continuing).";
continue;
}
BuildStep *bs(factory->restore(this, bsData));
BuildStep *bs(factory->restore(this, Clean, bsData));
if (!bs) {
qWarning() << "Restoration of cleanstep failed (continuing).";
continue;
}
insertCleanStep(m_cleanSteps.count(), bs);
insertStep(Clean, m_steps[Clean].count(), bs);
}
m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool();
@@ -180,53 +175,34 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
return true;
}
QList<BuildStep *> BuildConfiguration::buildSteps() const
QList<BuildStep *> BuildConfiguration::steps(StepType type) const
{
return m_buildSteps;
Q_ASSERT(type >= 0 && type < LastStepType);
return m_steps[type];
}
void BuildConfiguration::insertBuildStep(int position, BuildStep *step)
void BuildConfiguration::insertStep(StepType type, int position, BuildStep *step)
{
m_buildSteps.insert(position, step);
Q_ASSERT(type >= 0 && type < LastStepType);
m_steps[type].insert(position, step);
}
void BuildConfiguration::removeBuildStep(int position)
void BuildConfiguration::removeStep(StepType type, int position)
{
delete m_buildSteps.at(position);
m_buildSteps.removeAt(position);
Q_ASSERT(type >= 0 && type < LastStepType);
delete m_steps[type].at(position);
m_steps[type].removeAt(position);
}
void BuildConfiguration::moveBuildStepUp(int position)
void BuildConfiguration::moveStepUp(StepType type, int position)
{
if (position <= 0 || m_buildSteps.size() <= 1)
Q_ASSERT(type >= 0 && type < LastStepType);
if (position <= 0 || m_steps[type].size() <= 1)
return;
m_buildSteps.swap(position - 1, position);
m_steps[type].swap(position - 1, position);
}
QList<BuildStep *> BuildConfiguration::cleanSteps() const
{
return m_cleanSteps;
}
void BuildConfiguration::insertCleanStep(int position, BuildStep *step)
{
m_cleanSteps.insert(position, step);
}
void BuildConfiguration::removeCleanStep(int position)
{
delete m_cleanSteps.at(position);
m_cleanSteps.removeAt(position);
}
void BuildConfiguration::moveCleanStepUp(int position)
{
if (position <= 0 || m_cleanSteps.size() <= 1)
return;
m_cleanSteps.swap(position - 1, position);
}
Target *BuildConfiguration::target() const
{
return m_target;

View File

@@ -53,15 +53,10 @@ public:
// ctors are protected
virtual ~BuildConfiguration();
QList<BuildStep *> buildSteps() const;
void insertBuildStep(int position, BuildStep *step);
void removeBuildStep(int position);
void moveBuildStepUp(int position);
QList<BuildStep *> cleanSteps() const;
void insertCleanStep(int position, BuildStep *step);
void removeCleanStep(int position);
void moveCleanStepUp(int position);
QList<BuildStep *> steps(StepType type) const;
void insertStep(StepType type, int position, BuildStep *step);
void removeStep(StepType type, int position);
void moveStepUp(StepType type, int position);
virtual QString buildDirectory() const = 0;
@@ -90,8 +85,7 @@ protected:
virtual bool fromMap(const QVariantMap &map);
private:
QList<BuildStep *> m_buildSteps;
QList<BuildStep *> m_cleanSteps;
QList<BuildStep *> m_steps[LastStepType];
Target *m_target;
bool m_clearSystemEnvironment;

View File

@@ -401,7 +401,7 @@ void BuildManager::buildProjects(const QList<BuildConfiguration *> &configuratio
{
QList<BuildStep *> steps;
foreach(BuildConfiguration *bc, configurations)
steps.append(bc->buildSteps());
steps.append(bc->steps(Build));
bool success = buildQueueAppend(steps);
if (!success) {
@@ -418,7 +418,7 @@ void BuildManager::cleanProjects(const QList<BuildConfiguration *> &configuratio
{
QList<BuildStep *> steps;
foreach(BuildConfiguration *bc, configurations)
steps.append(bc->cleanSteps());
steps.append(bc->steps(Clean));
bool success = buildQueueAppend(steps);
if (!success) {

View File

@@ -292,8 +292,8 @@ void BuildSettingsWidget::updateBuildSettings()
BuildConfigWidget *generalConfigWidget = m_target->project()->createConfigWidget();
addSubWidget(generalConfigWidget->displayName(), generalConfigWidget);
addSubWidget(tr("Build Steps"), new BuildStepsPage(m_target, false));
addSubWidget(tr("Clean Steps"), new BuildStepsPage(m_target, true));
addSubWidget(tr("Build Steps"), new BuildStepsPage(m_target, Build));
addSubWidget(tr("Clean Steps"), new BuildStepsPage(m_target, Clean));
QList<BuildConfigWidget *> subConfigWidgets = m_target->project()->subConfigWidgets();
foreach (BuildConfigWidget *subConfigWidget, subConfigWidgets)

View File

@@ -38,6 +38,11 @@
#include <QtGui/QWidget>
namespace ProjectExplorer {
enum StepType { Build = 0,
Clean = 1,
LastStepType = 2};
class BuildConfiguration;
/*
@@ -122,17 +127,17 @@ public:
virtual ~IBuildStepFactory();
// used to show the list of possible additons to a target, returns a list of types
virtual QStringList availableCreationIds(BuildConfiguration *parent) const = 0;
virtual QStringList availableCreationIds(BuildConfiguration *parent, StepType type) const = 0;
// used to translate the types to names to display to the user
virtual QString displayNameForId(const QString &id) const = 0;
virtual bool canCreate(BuildConfiguration *parent, const QString &id) const = 0;
virtual BuildStep *create(BuildConfiguration *parent, const QString &id) = 0;
virtual bool canCreate(BuildConfiguration *parent, StepType type, const QString &id) const = 0;
virtual BuildStep *create(BuildConfiguration *parent, StepType type, const QString &id) = 0;
// used to recreate the runConfigurations when restoring settings
virtual bool canRestore(BuildConfiguration *parent, const QVariantMap &map) const = 0;
virtual BuildStep *restore(BuildConfiguration *parent, const QVariantMap &map) = 0;
virtual bool canClone(BuildConfiguration *parent, BuildStep *product) const = 0;
virtual BuildStep *clone(BuildConfiguration *parent, BuildStep *product) = 0;
virtual bool canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const = 0;
virtual BuildStep *restore(BuildConfiguration *parent, StepType type, const QVariantMap &map) = 0;
virtual bool canClone(BuildConfiguration *parent, StepType type, BuildStep *product) const = 0;
virtual BuildStep *clone(BuildConfiguration *parent, StepType type, BuildStep *product) = 0;
};
class PROJECTEXPLORER_EXPORT BuildConfigWidget

View File

@@ -46,9 +46,9 @@
using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal;
BuildStepsPage::BuildStepsPage(Target *target, bool clean) :
BuildStepsPage::BuildStepsPage(Target *target, StepType type) :
BuildConfigWidget(),
m_clean(clean),
m_type(type),
m_addButton(0),
m_leftMargin(-1)
{
@@ -79,7 +79,10 @@ void BuildStepsPage::updateSummary()
QString BuildStepsPage::displayName() const
{
return m_clean ? tr("Clean Steps") : tr("Build Steps");
if (m_type == Build)
return tr("Build Steps");
else
return tr("Clean Steps");
}
void BuildStepsPage::init(BuildConfiguration *bc)
@@ -96,7 +99,7 @@ void BuildStepsPage::init(BuildConfiguration *bc)
m_configuration = bc;
const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps();
const QList<BuildStep *> &steps = m_configuration->steps(m_type);
int i = 0;
foreach (BuildStep *bs, steps) {
addBuildStepWidget(i, bs);
@@ -119,7 +122,7 @@ void BuildStepsPage::updateAddBuildStepMenu()
//Build up a list of possible steps and save map the display names to the (internal) name and factories.
QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>();
foreach (IBuildStepFactory *factory, factories) {
QStringList ids = factory->availableCreationIds(m_configuration);
QStringList ids = factory->availableCreationIds(m_configuration, m_type);
foreach (const QString &id, ids) {
map.insert(factory->displayNameForId(id), QPair<QString, IBuildStepFactory *>(id, factory));
}
@@ -207,9 +210,9 @@ void BuildStepsPage::addBuildStep()
{
if (QAction *action = qobject_cast<QAction *>(sender())) {
QPair<QString, IBuildStepFactory *> pair = m_addBuildStepHash.value(action);
BuildStep *newStep = pair.second->create(m_configuration, pair.first);
int pos = m_clean ? m_configuration->cleanSteps().count() : m_configuration->buildSteps().count();
m_clean ? m_configuration->insertCleanStep(pos, newStep) : m_configuration->insertBuildStep(pos, newStep);
BuildStep *newStep = pair.second->create(m_configuration, m_type, pair.first);
int pos = m_configuration->steps(m_type).count();
m_configuration->insertStep(m_type, pos, newStep);
addBuildStepWidget(pos, newStep);
const BuildStepsWidgetStruct s = m_buildSteps.at(pos);
@@ -222,7 +225,7 @@ void BuildStepsPage::addBuildStep()
void BuildStepsPage::stepMoveUp(int pos)
{
m_clean ? m_configuration->moveCleanStepUp(pos) : m_configuration->moveBuildStepUp(pos);
m_configuration->moveStepUp(m_type, pos);
m_vbox->insertWidget(pos - 1, m_buildSteps.at(pos).detailsWidget);
@@ -242,12 +245,11 @@ void BuildStepsPage::stepRemove(int pos)
delete s.widget;
delete s.detailsWidget;
m_buildSteps.removeAt(pos);
m_clean ? m_configuration->removeCleanStep(pos) : m_configuration->removeBuildStep(pos);
m_configuration->removeStep(m_type, pos);
updateBuildStepButtonsState();
bool hasSteps(m_clean ? m_configuration->cleanSteps().isEmpty() :
m_configuration->buildSteps().isEmpty());
bool hasSteps = m_configuration->steps(m_type).isEmpty();
m_noStepsLabel->setVisible(hasSteps);
}
@@ -282,7 +284,7 @@ void BuildStepsPage::setupUi()
QHBoxLayout *hboxLayout = new QHBoxLayout();
hboxLayout->setContentsMargins(m_leftMargin, 4, 0, 0);
m_addButton = new QPushButton(this);
m_addButton->setText(m_clean ? tr("Add clean step") : tr("Add build step"));
m_addButton->setText(m_type == Clean ? tr("Add clean step") : tr("Add build step"));
m_addButton->setMenu(new QMenu(this));
hboxLayout->addWidget(m_addButton);
@@ -300,7 +302,7 @@ void BuildStepsPage::setupUi()
void BuildStepsPage::updateBuildStepButtonsState()
{
const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps();
const QList<BuildStep *> &steps = m_configuration->steps(m_type);
for(int i = 0; i < m_buildSteps.count(); ++i) {
BuildStepsWidgetStruct s = m_buildSteps.at(i);
s.removeButton->setEnabled(!steps.at(i)->immutable());

View File

@@ -31,6 +31,7 @@
#define BUILDSTEPSPAGE_H
#include "buildstep.h"
#include "buildconfiguration.h"
#include <utils/detailswidget.h>
QT_BEGIN_NAMESPACE
@@ -66,7 +67,7 @@ class BuildStepsPage : public BuildConfigWidget
Q_OBJECT
public:
explicit BuildStepsPage(Target *target, bool clean = false);
explicit BuildStepsPage(Target *target, StepType type);
virtual ~BuildStepsPage();
QString displayName() const;
@@ -87,7 +88,7 @@ private:
BuildConfiguration * m_configuration;
QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash;
bool m_clean;
StepType m_type;
QList<BuildStepsWidgetStruct> m_buildSteps;

View File

@@ -185,40 +185,41 @@ ProcessStepFactory::~ProcessStepFactory()
{
}
bool ProcessStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const
bool ProcessStepFactory::canCreate(BuildConfiguration *parent, StepType type, const QString &id) const
{
Q_UNUSED(parent);
Q_UNUSED(type);
return id == QLatin1String(PROCESS_STEP_ID);
}
BuildStep *ProcessStepFactory::create(BuildConfiguration *parent, const QString &id)
BuildStep *ProcessStepFactory::create(BuildConfiguration *parent, StepType type, const QString &id)
{
if (!canCreate(parent, id))
if (!canCreate(parent, type, id))
return 0;
return new ProcessStep(parent);
}
bool ProcessStepFactory::canClone(BuildConfiguration *parent, BuildStep *bs) const
bool ProcessStepFactory::canClone(BuildConfiguration *parent, StepType type, BuildStep *bs) const
{
return canCreate(parent, bs->id());
return canCreate(parent, type, bs->id());
}
BuildStep *ProcessStepFactory::clone(BuildConfiguration *parent, BuildStep *bs)
BuildStep *ProcessStepFactory::clone(BuildConfiguration *parent, StepType type, BuildStep *bs)
{
if (!canClone(parent, bs))
if (!canClone(parent, type, bs))
return 0;
return new ProcessStep(parent, static_cast<ProcessStep *>(bs));
}
bool ProcessStepFactory::canRestore(BuildConfiguration *parent, const QVariantMap &map) const
bool ProcessStepFactory::canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const
{
QString id(ProjectExplorer::idFromMap(map));
return canCreate(parent, id);
return canCreate(parent, type, id);
}
BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, const QVariantMap &map)
BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, StepType type, const QVariantMap &map)
{
if (!canRestore(parent, map))
if (!canRestore(parent, type, map))
return 0;
ProcessStep *bs(new ProcessStep(parent));
@@ -228,9 +229,10 @@ BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, const QVarian
return 0;
}
QStringList ProcessStepFactory::availableCreationIds(BuildConfiguration *parent) const
QStringList ProcessStepFactory::availableCreationIds(BuildConfiguration *parent, StepType type) const
{
Q_UNUSED(parent)
Q_UNUSED(parent);
Q_UNUSED(type);
return QStringList() << QLatin1String(PROCESS_STEP_ID);
}
QString ProcessStepFactory::displayNameForId(const QString &id) const

View File

@@ -46,15 +46,15 @@ public:
ProcessStepFactory();
~ProcessStepFactory();
virtual QStringList availableCreationIds(BuildConfiguration *parent) const;
virtual QStringList availableCreationIds(BuildConfiguration *parent, StepType type) const;
virtual QString displayNameForId(const QString &id) const;
virtual bool canCreate(BuildConfiguration *parent, const QString &id) const;
virtual BuildStep *create(BuildConfiguration *parent, const QString &id);
virtual bool canRestore(BuildConfiguration *parent, const QVariantMap &map) const;
virtual BuildStep *restore(BuildConfiguration *parent, const QVariantMap &map);
virtual bool canClone(BuildConfiguration *parent, BuildStep *product) const;
virtual BuildStep *clone(BuildConfiguration *parent, BuildStep *product);
virtual bool canCreate(BuildConfiguration *parent, StepType type, const QString &id) const;
virtual BuildStep *create(BuildConfiguration *parent, StepType type, const QString &id);
virtual bool canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const;
virtual BuildStep *restore(BuildConfiguration *parent, StepType type, const QVariantMap &map);
virtual bool canClone(BuildConfiguration *parent, StepType type, BuildStep *product) const;
virtual BuildStep *clone(BuildConfiguration *parent, StepType type, BuildStep *product);
};
class ProcessStep : public ProjectExplorer::AbstractProcessStep

View File

@@ -40,7 +40,6 @@
#include "target.h"
#include "projecttreewidget.h"
#include "runconfiguration.h"
#include "buildconfiguration.h"
#include "buildsettingspropertiespage.h"
#include "runsettingspropertiespage.h"
#include "targetsettingspanel.h"

View File

@@ -328,41 +328,42 @@ MakeStepFactory::~MakeStepFactory()
{
}
bool MakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const
bool MakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const
{
Q_UNUSED(type)
if (!qobject_cast<Qt4BuildConfiguration *>(parent))
return false;
return (id == QLatin1String(MAKESTEP_BS_ID));
}
ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, const QString &id)
ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id)
{
if (!canCreate(parent, id))
if (!canCreate(parent, type, id))
return 0;
return new MakeStep(parent);
}
bool MakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const
bool MakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const
{
return canCreate(parent, source->id());
return canCreate(parent, type, source->id());
}
ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source)
ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source)
{
if (!canClone(parent, source))
if (!canClone(parent, type, source))
return 0;
return new MakeStep(parent, static_cast<MakeStep *>(source));
}
bool MakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const
bool MakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const
{
QString id(ProjectExplorer::idFromMap(map));
return canCreate(parent, id);
return canCreate(parent, type, id);
}
ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map)
ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map)
{
if (!canRestore(parent, map))
if (!canRestore(parent, type, map))
return 0;
MakeStep *bs(new MakeStep(parent));
if (bs->fromMap(map))
@@ -371,8 +372,9 @@ ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfi
return 0;
}
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const
{
Q_UNUSED(type)
if (qobject_cast<Qt4BuildConfiguration *>(parent))
return QStringList() << QLatin1String(MAKESTEP_BS_ID);
return QStringList();

View File

@@ -54,14 +54,14 @@ public:
explicit MakeStepFactory(QObject *parent = 0);
virtual ~MakeStepFactory();
bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id);
bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source);
bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map);
bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id);
bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source);
bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map);
QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const;
QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const;
QString displayNameForId(const QString &id) const;
};
} //namespace Internal

View File

@@ -402,45 +402,47 @@ QMakeStepFactory::~QMakeStepFactory()
{
}
bool QMakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const
bool QMakeStepFactory::canCreate(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const
{
if (type != ProjectExplorer::Build)
return false;
if (!qobject_cast<Qt4BuildConfiguration *>(parent))
return false;
return (id == QLatin1String(QMAKE_BS_ID));
}
ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *parent, const QString &id)
ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *parent, ProjectExplorer::StepType type,const QString &id)
{
if (!canCreate(parent, id))
if (!canCreate(parent, type, id))
return 0;
Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent));
Q_ASSERT(bc);
return new QMakeStep(bc);
}
bool QMakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const
bool QMakeStepFactory::canClone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source) const
{
return canCreate(parent, source->id());
return canCreate(parent, type, source->id());
}
ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source)
ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source)
{
if (!canClone(parent, source))
if (!canClone(parent, type, source))
return 0;
Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent));
Q_ASSERT(bc);
return new QMakeStep(bc, qobject_cast<QMakeStep *>(source));
}
bool QMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const
bool QMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const
{
QString id(ProjectExplorer::idFromMap(map));
return canCreate(parent, id);
return canCreate(parent, type, id);
}
ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map)
ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map)
{
if (!canRestore(parent, map))
if (!canRestore(parent, type, map))
return 0;
Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent));
Q_ASSERT(bc);
@@ -451,8 +453,9 @@ ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConf
return 0;
}
QStringList QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const
QStringList QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const
{
if (type == Build)
if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(parent))
if (!bc->qmakeStep())
return QStringList() << QLatin1String(QMAKE_BS_ID);

View File

@@ -55,13 +55,13 @@ class QMakeStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QMakeStepFactory(QObject *parent = 0);
virtual ~QMakeStepFactory();
bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString & id) const;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id);
bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *bs) const;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *bs);
bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map);
QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const;
bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QString & id) const;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QString &id);
bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,ProjectExplorer::BuildStep *bs) const;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,ProjectExplorer::BuildStep *bs);
bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QVariantMap &map) const;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QVariantMap &map);
QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, ProjectExplorer::StepType type) const;
QString displayNameForId(const QString &id) const;
};

View File

@@ -362,7 +362,7 @@ void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUser
QMakeStep *Qt4BuildConfiguration::qmakeStep() const
{
QMakeStep *qs = 0;
foreach(BuildStep *bs, buildSteps())
foreach(BuildStep *bs, steps(ProjectExplorer::Build))
if ((qs = qobject_cast<QMakeStep *>(bs)) != 0)
return qs;
return 0;
@@ -371,7 +371,7 @@ QMakeStep *Qt4BuildConfiguration::qmakeStep() const
MakeStep *Qt4BuildConfiguration::makeStep() const
{
MakeStep *qs = 0;
foreach(BuildStep *bs, buildSteps())
foreach(BuildStep *bs, steps(ProjectExplorer::Build))
if ((qs = qobject_cast<MakeStep *>(bs)) != 0)
return qs;
return 0;

View File

@@ -244,15 +244,15 @@ Qt4BuildConfiguration *Qt4Target::addQt4BuildConfiguration(QString displayName,
bc->setDisplayName(displayName);
QMakeStep *qmakeStep = new QMakeStep(bc);
bc->insertBuildStep(0, qmakeStep);
bc->insertStep(ProjectExplorer::Build, 0, qmakeStep);
MakeStep *makeStep = new MakeStep(bc);
bc->insertBuildStep(1, makeStep);
bc->insertStep(ProjectExplorer::Build, 1, makeStep);
MakeStep* cleanStep = new MakeStep(bc);
cleanStep->setClean(true);
cleanStep->setUserArguments(QStringList() << "clean");
bc->insertCleanStep(0, cleanStep);
bc->insertStep(ProjectExplorer::Clean, 0, cleanStep);
if (!additionalArguments.isEmpty())
qmakeStep->setUserArguments(additionalArguments);