From 60a1ee12ba09085f9e14e1a4f6e915705a4c4b48 Mon Sep 17 00:00:00 2001 From: dt Date: Mon, 23 Nov 2009 15:47:26 +0100 Subject: [PATCH] Remove project() from BuildStep The project() should in most cases not matter, instead the BuildConfiguration should. This shows all the information that needs to move into the BuildConfiguration classes. --- .../cmakeprojectmanager/cmakeproject.cpp | 8 ++-- src/plugins/cmakeprojectmanager/makestep.cpp | 26 ++++------ src/plugins/cmakeprojectmanager/makestep.h | 6 +-- .../genericprojectmanager/genericmakestep.cpp | 34 ++++++------- .../genericprojectmanager/genericmakestep.h | 7 +-- .../genericprojectmanager/genericproject.cpp | 4 +- .../projectexplorer/abstractmakestep.cpp | 7 +-- .../projectexplorer/abstractmakestep.h | 2 +- .../projectexplorer/abstractprocessstep.cpp | 4 +- .../projectexplorer/abstractprocessstep.h | 2 +- src/plugins/projectexplorer/buildmanager.cpp | 22 +++++---- src/plugins/projectexplorer/buildstep.cpp | 11 ++--- src/plugins/projectexplorer/buildstep.h | 9 ++-- .../projectexplorer/buildstepspage.cpp | 2 +- src/plugins/projectexplorer/processstep.cpp | 13 ++--- src/plugins/projectexplorer/processstep.h | 4 +- src/plugins/projectexplorer/project.cpp | 8 ++-- src/plugins/qt4projectmanager/makestep.cpp | 21 ++++---- src/plugins/qt4projectmanager/makestep.h | 4 +- src/plugins/qt4projectmanager/qmakestep.cpp | 48 +++++++++++-------- src/plugins/qt4projectmanager/qmakestep.h | 5 +- src/plugins/qt4projectmanager/qt4project.cpp | 6 +-- 22 files changed, 120 insertions(+), 133 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 56f321603fc..9c42cbf1b12 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -106,10 +106,10 @@ BuildConfiguration *CMakeBuildConfigurationFactory::create(const QString &type) return false; BuildConfiguration *bc = new CMakeBuildConfiguration(m_project, buildConfigurationName); - MakeStep *makeStep = new MakeStep(m_project, bc); + MakeStep *makeStep = new MakeStep(bc); bc->insertBuildStep(0, makeStep); - MakeStep *cleanMakeStep = new MakeStep(m_project, bc); + MakeStep *cleanMakeStep = new MakeStep(bc); bc->insertCleanStep(0, cleanMakeStep); cleanMakeStep->setClean(true); @@ -671,11 +671,11 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader bc->setValue("buildDirectory", copw.buildDirectory()); // Now create a standard build configuration - makeStep = new MakeStep(this, bc); + makeStep = new MakeStep(bc); bc->insertBuildStep(0, makeStep); //TODO save arguments somewhere copw.arguments() - MakeStep *cleanMakeStep = new MakeStep(this, bc); + MakeStep *cleanMakeStep = new MakeStep(bc); bc->insertCleanStep(0, cleanMakeStep); cleanMakeStep->setClean(true); setActiveBuildConfiguration(bc); diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 242a7493d26..e0ea03b4f92 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -42,15 +42,14 @@ using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; using namespace ProjectExplorer; -MakeStep::MakeStep(CMakeProject *pro, BuildConfiguration *bc) - : AbstractMakeStep(pro, bc), m_pro(pro), m_clean(false), m_futureInterface(0) +MakeStep::MakeStep(BuildConfiguration *bc) + : AbstractMakeStep(bc), m_clean(false), m_futureInterface(0) { m_percentProgress = QRegExp("^\\[\\s*(\\d*)%\\]"); } MakeStep::MakeStep(MakeStep *bs, BuildConfiguration *bc) : AbstractMakeStep(bs, bc), - m_pro(bs->m_pro), m_clean(bs->m_clean), m_futureInterface(0), m_buildTargets(bs->m_buildTargets), @@ -97,17 +96,19 @@ void MakeStep::storeIntoLocalMap(QMap &map) bool MakeStep::init() { BuildConfiguration *bc = buildConfiguration(); - setBuildParser(m_pro->buildParser(bc)); + // TODO, we should probably have a member cmakeBuildConfiguration(); + CMakeProject *pro = static_cast(buildConfiguration()->project()); + setBuildParser(pro->buildParser(bc)); setEnabled(true); - setWorkingDirectory(m_pro->buildDirectory(bc)); + setWorkingDirectory(pro->buildDirectory(bc)); - setCommand(m_pro->toolChain(bc)->makeCommand()); + setCommand(pro->toolChain(bc)->makeCommand()); QStringList arguments = m_buildTargets; arguments << additionalArguments(); setArguments(arguments); - setEnvironment(m_pro->environment(bc)); + setEnvironment(pro->environment(bc)); setIgnoreReturnValue(m_clean); return AbstractMakeStep::init(); @@ -154,11 +155,6 @@ void MakeStep::stdOut(const QString &line) AbstractMakeStep::stdOut(line); } -CMakeProject *MakeStep::project() const -{ - return m_pro; -} - bool MakeStep::buildsTarget(const QString &target) const { return m_buildTargets.contains(target); @@ -277,12 +273,10 @@ bool MakeStepFactory::canCreate(const QString &name) const return (Constants::MAKESTEP == name); } -BuildStep *MakeStepFactory::create(Project *project, BuildConfiguration *bc, const QString &name) const +BuildStep *MakeStepFactory::create(BuildConfiguration *bc, const QString &name) const { Q_ASSERT(name == Constants::MAKESTEP); - CMakeProject *pro = qobject_cast(project); - Q_ASSERT(pro); - return new MakeStep(pro, bc); + return new MakeStep(bc); } BuildStep *MakeStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) const diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h index 43103252511..f01bb1d6141 100644 --- a/src/plugins/cmakeprojectmanager/makestep.h +++ b/src/plugins/cmakeprojectmanager/makestep.h @@ -49,7 +49,7 @@ class MakeStep : public ProjectExplorer::AbstractMakeStep friend class MakeStepConfigWidget; // TODO remove // This is for modifying internal data public: - MakeStep(CMakeProject *pro, ProjectExplorer::BuildConfiguration *bc); + MakeStep(ProjectExplorer::BuildConfiguration *bc); MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc); ~MakeStep(); virtual bool init(); @@ -60,7 +60,6 @@ public: virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; - CMakeProject *project() const; bool buildsTarget(const QString &target) const; void setBuildTarget(const QString &target, bool on); QStringList additionalArguments() const; @@ -77,7 +76,6 @@ protected: // For parsing [ 76%] virtual void stdOut(const QString &line); private: - CMakeProject *m_pro; bool m_clean; QRegExp m_percentProgress; QFutureInterface *m_futureInterface; @@ -107,7 +105,7 @@ private: class MakeStepFactory : public ProjectExplorer::IBuildStepFactory { virtual bool canCreate(const QString &name) const; - virtual ProjectExplorer::BuildStep *create(ProjectExplorer::Project *pro, ProjectExplorer::BuildConfiguration *bc, const QString &name) const; + virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &name) const; virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; virtual QStringList canCreateForProject(ProjectExplorer::Project *pro) const; virtual QString displayNameForName(const QString &name) const; diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 6fbb3d700f7..eb1debd8f47 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -47,13 +47,13 @@ using namespace GenericProjectManager; using namespace GenericProjectManager::Internal; -GenericMakeStep::GenericMakeStep(GenericProject *pro, ProjectExplorer::BuildConfiguration *bc) - : AbstractMakeStep(pro, bc), m_pro(pro) +GenericMakeStep::GenericMakeStep(ProjectExplorer::BuildConfiguration *bc) + : AbstractMakeStep(bc) { } GenericMakeStep::GenericMakeStep(GenericMakeStep *bs, ProjectExplorer::BuildConfiguration *bc) - : AbstractMakeStep(bs, bc), m_pro(bs->project()) + : AbstractMakeStep(bs, bc) { m_buildTargets = bs->m_buildTargets; m_makeArguments = bs->m_makeArguments; @@ -67,20 +67,21 @@ GenericMakeStep::~GenericMakeStep() bool GenericMakeStep::init() { ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); - const QString buildParser = m_pro->buildParser(bc); + //TODO + GenericProject *pro = static_cast(buildConfiguration()->project()); + const QString buildParser = pro->buildParser(bc); setBuildParser(buildParser); - qDebug() << "*** build parser:" << buildParser; setEnabled(true); Core::VariableManager *vm = Core::VariableManager::instance(); - const QString rawBuildDir = m_pro->buildDirectory(bc); + const QString rawBuildDir = buildConfiguration()->project()->buildDirectory(bc); const QString buildDir = vm->resolve(rawBuildDir); setWorkingDirectory(buildDir); setCommand(makeCommand()); setArguments(replacedArguments()); - setEnvironment(m_pro->environment(bc)); + setEnvironment(buildConfiguration()->project()->environment(bc)); return AbstractMakeStep::init(); } @@ -119,7 +120,9 @@ QString GenericMakeStep::makeCommand() const { QString command = m_makeCommand; if (command.isEmpty()) { - if (ProjectExplorer::ToolChain *toolChain = m_pro->toolChain()) + // TODO + GenericProject *pro = static_cast(buildConfiguration()->project()); + if (ProjectExplorer::ToolChain *toolChain = pro->toolChain()) command = toolChain->makeCommand(); else command = QLatin1String("make"); @@ -152,11 +155,6 @@ bool GenericMakeStep::immutable() const return true; } -GenericProject *GenericMakeStep::project() const -{ - return m_pro; -} - bool GenericMakeStep::buildsTarget(const QString &target) const { return m_buildTargets.contains(target); @@ -184,7 +182,8 @@ GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeSt m_ui->setupUi(this); // TODO update this list also on rescans of the GenericLists.txt - GenericProject *pro = m_makeStep->project(); + //TODO + GenericProject *pro = static_cast(m_makeStep->buildConfiguration()->project()); foreach (const QString &target, pro->targets()) { QListWidgetItem *item = new QListWidgetItem(target, m_ui->targetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); @@ -280,14 +279,11 @@ bool GenericMakeStepFactory::canCreate(const QString &name) const return (Constants::MAKESTEP == name); } -ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::Project *project, - ProjectExplorer::BuildConfiguration *bc, +ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::BuildConfiguration *bc, const QString &name) const { Q_ASSERT(name == Constants::MAKESTEP); - GenericProject *pro = qobject_cast(project); - Q_ASSERT(pro); - return new GenericMakeStep(pro, bc); + return new GenericMakeStep(bc); } ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::BuildStep *bs, diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h index a9cc5bd18b5..c8c059a3501 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.h +++ b/src/plugins/genericprojectmanager/genericmakestep.h @@ -56,7 +56,7 @@ class GenericMakeStep : public ProjectExplorer::AbstractMakeStep Q_OBJECT friend class GenericMakeStepConfigWidget; // TODO remove again? public: - GenericMakeStep(GenericProject *pro, ProjectExplorer::BuildConfiguration *bc); + GenericMakeStep(ProjectExplorer::BuildConfiguration *bc); GenericMakeStep(GenericMakeStep *bs, ProjectExplorer::BuildConfiguration *bc); ~GenericMakeStep(); virtual bool init(); @@ -67,7 +67,6 @@ public: virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; - GenericProject *project() const; bool buildsTarget(const QString &target) const; void setBuildTarget(const QString &target, bool on); QStringList replacedArguments() const; @@ -76,7 +75,6 @@ public: virtual void restoreFromLocalMap(const QMap &map); virtual void storeIntoLocalMap(QMap &map); private: - GenericProject *m_pro; QStringList m_buildTargets; QStringList m_makeArguments; QString m_makeCommand; @@ -105,8 +103,7 @@ private: class GenericMakeStepFactory : public ProjectExplorer::IBuildStepFactory { virtual bool canCreate(const QString &name) const; - virtual ProjectExplorer::BuildStep *create(ProjectExplorer::Project *pro, - ProjectExplorer::BuildConfiguration *bc, + virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &name) const; virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 40bf9fee978..676636e0020 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -149,7 +149,7 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &type GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project, buildConfigurationName); m_project->addBuildConfiguration(bc); // also makes the name unique... - GenericMakeStep *makeStep = new GenericMakeStep(m_project, bc); + GenericMakeStep *makeStep = new GenericMakeStep(bc); bc->insertBuildStep(0, makeStep); makeStep->setBuildTarget("all", /* on = */ true); return bc; @@ -536,7 +536,7 @@ bool GenericProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsRead GenericBuildConfiguration *bc = new GenericBuildConfiguration(this, "all"); addBuildConfiguration(bc); - GenericMakeStep *makeStep = new GenericMakeStep(this, bc); + GenericMakeStep *makeStep = new GenericMakeStep(bc); bc->insertBuildStep(0, makeStep); makeStep->setBuildTarget("all", /* on = */ true); diff --git a/src/plugins/projectexplorer/abstractmakestep.cpp b/src/plugins/projectexplorer/abstractmakestep.cpp index 56e41862f78..6a3573ba839 100644 --- a/src/plugins/projectexplorer/abstractmakestep.cpp +++ b/src/plugins/projectexplorer/abstractmakestep.cpp @@ -31,6 +31,7 @@ #include "projectexplorerconstants.h" #include "project.h" +#include "buildconfiguration.h" #include #include @@ -46,8 +47,8 @@ namespace { bool debug = false; } -AbstractMakeStep::AbstractMakeStep(Project *project, BuildConfiguration *bc) - : AbstractProcessStep(project, bc), +AbstractMakeStep::AbstractMakeStep(BuildConfiguration *bc) + : AbstractProcessStep(bc), m_buildParser(0) { } @@ -144,7 +145,7 @@ void AbstractMakeStep::slotAddToTaskWindow(const TaskWindow::Task &task) if (debug) qDebug() << "No success. Trying all files in project ..."; QString fileName = QFileInfo(filePath).fileName(); - foreach (const QString &file, project()->files(ProjectExplorer::Project::AllFiles)) { + foreach (const QString &file, buildConfiguration()->project()->files(ProjectExplorer::Project::AllFiles)) { QFileInfo candidate(file); if (candidate.fileName() == fileName) { if (debug) diff --git a/src/plugins/projectexplorer/abstractmakestep.h b/src/plugins/projectexplorer/abstractmakestep.h index de15f380c25..4d8f9268bfa 100644 --- a/src/plugins/projectexplorer/abstractmakestep.h +++ b/src/plugins/projectexplorer/abstractmakestep.h @@ -46,7 +46,7 @@ class PROJECTEXPLORER_EXPORT AbstractMakeStep : public ProjectExplorer::Abstract { Q_OBJECT public: - AbstractMakeStep(Project * project, BuildConfiguration *bc); + AbstractMakeStep(BuildConfiguration *bc); AbstractMakeStep(AbstractMakeStep *bs, BuildConfiguration *bc); ~AbstractMakeStep(); virtual bool init(); diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 399fd8ab423..af92a62ec67 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -39,8 +39,8 @@ using namespace ProjectExplorer; -AbstractProcessStep::AbstractProcessStep(Project *pro, BuildConfiguration *bc) - : BuildStep(pro, bc), m_timer(0), m_futureInterface(0), m_process(0), m_eventLoop(0) +AbstractProcessStep::AbstractProcessStep(BuildConfiguration *bc) + : BuildStep(bc), m_timer(0), m_futureInterface(0), m_process(0), m_eventLoop(0) { } diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index b1d62a62c5d..2c725f0b01a 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -65,7 +65,7 @@ class PROJECTEXPLORER_EXPORT AbstractProcessStep : public BuildStep { Q_OBJECT public: - AbstractProcessStep(Project *pro, BuildConfiguration *bc); + AbstractProcessStep(BuildConfiguration *bc); AbstractProcessStep(AbstractProcessStep *bs, BuildConfiguration *bc); /// reimplemented from BuildStep::init() /// You need to call this from YourBuildStep::init() diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 9b1fc2fe436..4f5a27a0192 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -136,7 +136,7 @@ void BuildManager::cancel() this, SLOT(addToTaskWindow(ProjectExplorer::TaskWindow::Task))); disconnect(m_currentBuildStep, SIGNAL(addToOutputWindow(QString)), this, SLOT(addToOutputWindow(QString))); - decrementActiveBuildSteps(m_currentBuildStep->project()); + decrementActiveBuildSteps(m_currentBuildStep->buildConfiguration()->project()); m_progressFutureInterface->setProgressValueAndText(m_progress*100, "Build canceled"); //TODO NBS fix in qtconcurrent clearBuildQueue(); @@ -169,7 +169,7 @@ void BuildManager::emitCancelMessage() void BuildManager::clearBuildQueue() { foreach (BuildStep * bs, m_buildQueue) - decrementActiveBuildSteps(bs->project()); + decrementActiveBuildSteps(bs->buildConfiguration()->project()); m_buildQueue.clear(); m_running = false; @@ -280,13 +280,14 @@ void BuildManager::nextBuildQueue() bool result = m_watcher.result(); if (!result) { // Build Failure - addToOutputWindow(tr("Error while building project %1").arg(m_currentBuildStep->project()->name())); + const QString projectName = m_currentBuildStep->buildConfiguration()->project()->name(); + addToOutputWindow(tr("Error while building project %1").arg(projectName)); addToOutputWindow(tr("When executing build step '%1'").arg(m_currentBuildStep->displayName())); // NBS TODO fix in qtconcurrent - m_progressFutureInterface->setProgressValueAndText(m_progress*100, tr("Error while building project %1").arg(m_currentBuildStep->project()->name())); + m_progressFutureInterface->setProgressValueAndText(m_progress*100, tr("Error while building project %1").arg(projectName)); } - decrementActiveBuildSteps(m_currentBuildStep->project()); + decrementActiveBuildSteps(m_currentBuildStep->buildConfiguration()->project()); if (result) nextStep(); else @@ -317,17 +318,18 @@ void BuildManager::nextStep() bool init = m_currentBuildStep->init(); if (!init) { - addToOutputWindow(tr("Error while building project %1").arg(m_currentBuildStep->project()->name())); + const QString projectName = m_currentBuildStep->buildConfiguration()->project()->name(); + addToOutputWindow(tr("Error while building project %1").arg(projectName)); addToOutputWindow(tr("When executing build step '%1'").arg(m_currentBuildStep->displayName())); cancel(); return; } - if (m_currentBuildStep->project() != m_previousBuildStepProject) { - const QString projectName = m_currentBuildStep->project()->name(); + if (m_currentBuildStep->buildConfiguration()->project() != m_previousBuildStepProject) { + const QString projectName = m_currentBuildStep->buildConfiguration()->project()->name(); addToOutputWindow(tr("Running build steps for project %2...") .arg(projectName)); - m_previousBuildStepProject = m_currentBuildStep->project(); + m_previousBuildStepProject = m_currentBuildStep->buildConfiguration()->project(); } m_watcher.setFuture(QtConcurrent::run(&BuildStep::run, m_currentBuildStep)); } else { @@ -346,7 +348,7 @@ void BuildManager::buildQueueAppend(BuildStep * bs) { m_buildQueue.append(bs); ++m_maxProgress; - incrementActiveBuildSteps(bs->project()); + incrementActiveBuildSteps(bs->buildConfiguration()->project()); } void BuildManager::buildProjects(const QList &projects, const QList &configurations) diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index ef0b07c9ffc..360ad3dc4b2 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -36,13 +36,13 @@ using namespace ProjectExplorer; -BuildStep::BuildStep(Project * pro, BuildConfiguration *bc) - : m_project(pro), m_buildConfiguration(bc) +BuildStep::BuildStep(BuildConfiguration *bc) + : m_buildConfiguration(bc) { } BuildStep::BuildStep(BuildStep *bs, BuildConfiguration *bc) - : m_project(bs->m_project), m_buildConfiguration(bc) + : m_buildConfiguration(bc) { } @@ -68,11 +68,6 @@ void BuildStep::storeIntoLocalMap(QMap &map) Q_UNUSED(map) } -Project *BuildStep::project() const -{ - return m_project; -} - BuildConfiguration *BuildStep::buildConfiguration() const { return m_buildConfiguration; diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index aafb119d24f..f8a481a556a 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -37,7 +37,7 @@ #include namespace ProjectExplorer { - +// TODO remove this class Project; class BuildConfiguration; @@ -71,9 +71,8 @@ class BuildStepConfigWidget; class PROJECTEXPLORER_EXPORT BuildStep : public QObject { Q_OBJECT - friend class Project; //for managing BuildConfigurations protected: - BuildStep(Project *p, BuildConfiguration *bc); + BuildStep(BuildConfiguration *bc); BuildStep(BuildStep *bs, BuildConfiguration *bc); public: @@ -110,7 +109,6 @@ public: virtual void restoreFromLocalMap(const QMap &map); virtual void storeIntoLocalMap(QMap &map); - Project *project() const; BuildConfiguration *buildConfiguration() const; Q_SIGNALS: @@ -120,7 +118,6 @@ Q_SIGNALS: void addToOutputWindow(const QString &string); private: - Project *m_project; BuildConfiguration *m_buildConfiguration; }; @@ -135,7 +132,7 @@ public: /// Called to check wheter this factory can restore the named BuildStep virtual bool canCreate(const QString &name) const = 0; /// Called to restore a buildstep - virtual BuildStep *create(Project *pro, BuildConfiguration *bc, const QString &name) const = 0; + virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const = 0; /// Called by the add BuildStep action to check which BuildSteps could be added /// to the project by this factory, should return a list of names virtual QStringList canCreateForProject(Project *pro) const = 0; diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 1e1e71d3fc3..35d3ba8c264 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -216,7 +216,7 @@ void BuildStepsPage::addBuildStep() if (QAction *action = qobject_cast(sender())) { BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); QPair pair = m_addBuildStepHash.value(action); - BuildStep *newStep = pair.second->create(m_pro, bc, pair.first); + BuildStep *newStep = pair.second->create(bc, pair.first); int pos = m_clean ? bc->cleanSteps().count() : bc->buildSteps().count(); m_clean ? bc->insertCleanStep(pos, newStep) : bc->insertBuildStep(pos, newStep); diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index eab3735146c..0add381c24d 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -30,6 +30,7 @@ #include "processstep.h" #include "buildstep.h" #include "project.h" +#include "buildconfiguration.h" #include #include @@ -45,8 +46,8 @@ static const char * const PROCESS_WORKINGDIRECTORY = "abstractProcess.workingDir static const char * const PROCESS_ARGUMENTS = "abstractProcess.arguments"; static const char * const PROCESS_ENABLED = "abstractProcess.enabled"; -ProcessStep::ProcessStep(Project *pro, BuildConfiguration *bc) - : AbstractProcessStep(pro, bc) +ProcessStep::ProcessStep(BuildConfiguration *bc) + : AbstractProcessStep(bc) { } @@ -64,12 +65,12 @@ ProcessStep::ProcessStep(ProcessStep *bs, BuildConfiguration *bc) bool ProcessStep::init() { - setEnvironment(project()->environment(buildConfiguration())); + setEnvironment(buildConfiguration()->project()->environment(buildConfiguration())); QString wd = workingDirectory(); if (wd.isEmpty()) wd = "$BUILDDIR"; - AbstractProcessStep::setWorkingDirectory(wd.replace("$BUILDDIR", project()->buildDirectory(buildConfiguration()))); + AbstractProcessStep::setWorkingDirectory(wd.replace("$BUILDDIR", buildConfiguration()->project()->buildDirectory(buildConfiguration()))); AbstractProcessStep::setCommand(m_command); AbstractProcessStep::setEnabled(m_enabled); AbstractProcessStep::setArguments(m_arguments); @@ -200,10 +201,10 @@ bool ProcessStepFactory::canCreate(const QString &name) const return name == "projectexplorer.processstep"; } -BuildStep *ProcessStepFactory::create(Project *pro, BuildConfiguration *bc, const QString &name) const +BuildStep *ProcessStepFactory::create(BuildConfiguration *bc, const QString &name) const { Q_UNUSED(name) - return new ProcessStep(pro, bc); + return new ProcessStep(bc); } BuildStep *ProcessStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) const diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h index 7b64a07af0b..e7e74d0267b 100644 --- a/src/plugins/projectexplorer/processstep.h +++ b/src/plugins/projectexplorer/processstep.h @@ -45,7 +45,7 @@ class ProcessStepFactory : public IBuildStepFactory public: ProcessStepFactory(); virtual bool canCreate(const QString &name) const; - virtual BuildStep *create(Project *pro, BuildConfiguration *bc, const QString &name) const; + virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const; virtual BuildStep *clone(BuildStep *bs, BuildConfiguration *bc) const; virtual QStringList canCreateForProject(Project *pro) const; virtual QString displayNameForName(const QString &name) const; @@ -55,7 +55,7 @@ class ProcessStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT public: - ProcessStep(Project *pro, BuildConfiguration *bc); + ProcessStep(BuildConfiguration *bc); ProcessStep(ProcessStep *bs, BuildConfiguration *bc); virtual bool init(); virtual void run(QFutureInterface &); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 2ac3d728a3f..a70faf4519b 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -238,7 +238,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) BuildStep *buildStep = 0; foreach (IBuildStepFactory *factory, buildStepFactories) { if (factory->canCreate(buildStepName)) { - buildStep = factory->create(this, bc, buildStepName); + buildStep = factory->create(bc, buildStepName); break; } } @@ -265,7 +265,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) BuildStep *cleanStep = 0; foreach (IBuildStepFactory *factory, buildStepFactories) { if (factory->canCreate(cleanStepName)) { - cleanStep = factory->create(this, bc, cleanStepName); + cleanStep = factory->create(bc, cleanStepName); break; } } @@ -303,7 +303,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } if (factory) { foreach(BuildConfiguration *bc, buildConfigurations()) { - buildStep = factory->create(this, bc, buildStepName); + buildStep = factory->create(bc, buildStepName); bc->insertBuildStep(pos, buildStep); QMap buildStepValues = reader.restoreValue("buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->restoreFromGlobalMap(buildStepValues); @@ -335,7 +335,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) if (factory) { foreach(BuildConfiguration *bc, buildConfigurations()) { - cleanStep = factory->create(this, bc, cleanStepName); + cleanStep = factory->create(bc, cleanStepName); bc->insertCleanStep(pos, cleanStep); QMap cleanStepValues = reader.restoreValue("cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->restoreFromGlobalMap(cleanStepValues); diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 6ec95cbba1e..66e2c0a7532 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -44,8 +44,8 @@ using ExtensionSystem::PluginManager; using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; -MakeStep::MakeStep(Qt4Project * project, ProjectExplorer::BuildConfiguration *bc) - : AbstractMakeStep(project, bc), m_clean(false) +MakeStep::MakeStep(ProjectExplorer::BuildConfiguration *bc) + : AbstractMakeStep(bc), m_clean(false) { } @@ -97,10 +97,11 @@ void MakeStep::storeIntoLocalMap(QMap &map) bool MakeStep::init() { ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); - Environment environment = project()->environment(bc); + Environment environment = buildConfiguration()->project()->environment(bc); setEnvironment(environment); - Qt4Project *qt4project = qobject_cast(project()); + //TODO + Qt4Project *qt4project = static_cast(buildConfiguration()->project()); QString workingDirectory = qt4project->buildDirectory(bc); setWorkingDirectory(workingDirectory); @@ -163,7 +164,7 @@ bool MakeStep::init() void MakeStep::run(QFutureInterface & fi) { - if (qobject_cast(project())->rootProjectNode()->projectType() == ScriptTemplate) { + if (static_cast(buildConfiguration()->project())->rootProjectNode()->projectType() == ScriptTemplate) { fi.reportResult(true); return; } @@ -213,7 +214,7 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) connect(makeStep, SIGNAL(changed()), this, SLOT(update())); - connect(makeStep->project(), SIGNAL(buildDirectoryChanged()), + connect(makeStep->buildConfiguration()->project(), SIGNAL(buildDirectoryChanged()), this, SLOT(updateDetails())); connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), @@ -224,14 +225,14 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) void MakeStepConfigWidget::updateMakeOverrideLabel() { - Qt4Project *qt4project = qobject_cast(m_makeStep->project()); + Qt4Project *qt4project = static_cast(m_makeStep->buildConfiguration()->project()); m_ui.makeLabel->setText(tr("Override %1:").arg(qt4project-> makeCommand(m_makeStep->buildConfiguration()))); } void MakeStepConfigWidget::updateDetails() { - Qt4Project *pro = static_cast(m_makeStep->project()); + Qt4Project *pro = static_cast(m_makeStep->buildConfiguration()->project()); ProjectExplorer::BuildConfiguration *bc = m_makeStep->buildConfiguration(); QString workingDirectory = pro->buildDirectory(bc); @@ -325,10 +326,10 @@ bool MakeStepFactory::canCreate(const QString & name) const return (name == Constants::MAKESTEP); } -ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::Project *pro, ProjectExplorer::BuildConfiguration *bc, const QString & name) const +ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const { Q_UNUSED(name) - return new MakeStep(static_cast(pro), bc); + return new MakeStep(bc); } ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index f605120bc60..471316897de 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -52,7 +52,7 @@ public: MakeStepFactory(); virtual ~MakeStepFactory(); bool canCreate(const QString & name) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::Project * pro, ProjectExplorer::BuildConfiguration *bc, const QString & name) const; + ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const; ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; QStringList canCreateForProject(ProjectExplorer::Project *pro) const; QString displayNameForName(const QString &name) const; @@ -67,7 +67,7 @@ class MakeStep : public ProjectExplorer::AbstractMakeStep friend class MakeStepConfigWidget; // TODO remove this // used to access internal stuff public: - MakeStep(Qt4Project * project, ProjectExplorer::BuildConfiguration *bc); + MakeStep(ProjectExplorer::BuildConfiguration *bc); MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc); ~MakeStep(); virtual bool init(); diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 9b91f4c8dc0..79efdeea8ac 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -49,14 +49,13 @@ using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; using namespace ProjectExplorer; -QMakeStep::QMakeStep(Qt4Project *project, ProjectExplorer::BuildConfiguration *bc) - : AbstractMakeStep(project, bc), m_pro(project), m_forced(false) +QMakeStep::QMakeStep(ProjectExplorer::BuildConfiguration *bc) + : AbstractMakeStep(bc), m_forced(false) { } QMakeStep::QMakeStep(QMakeStep *bs, ProjectExplorer::BuildConfiguration *bc) : AbstractMakeStep(bs, bc), - m_pro(bs->m_pro), m_forced(false), m_qmakeArgs(bs->m_qmakeArgs) { @@ -72,21 +71,23 @@ QStringList QMakeStep::arguments() QStringList additonalArguments = m_qmakeArgs; ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); QStringList arguments; - arguments << project()->file()->fileName(); + arguments << buildConfiguration()->project()->file()->fileName(); arguments << "-r"; + // TODO + Qt4Project *pro = static_cast(buildConfiguration()->project()); if (!additonalArguments.contains("-spec")) - arguments << "-spec" << m_pro->qtVersion(bc)->mkspec(); + arguments << "-spec" << pro->qtVersion(bc)->mkspec(); #ifdef Q_OS_WIN - ToolChain::ToolChainType type = m_pro->toolChainType(bc); + ToolChain::ToolChainType type = pro->toolChainType(bc); if (type == ToolChain::GCC_MAEMO) arguments << QLatin1String("-unix"); #endif if (bc->value("buildConfiguration").isValid()) { QStringList configarguments; - QtVersion::QmakeBuildConfigs defaultBuildConfiguration = m_pro->qtVersion(bc)->defaultBuildConfig(); + QtVersion::QmakeBuildConfigs defaultBuildConfiguration = pro->qtVersion(bc)->defaultBuildConfig(); QtVersion::QmakeBuildConfigs projectBuildConfiguration = QtVersion::QmakeBuildConfig(bc->value("buildConfiguration").toInt()); if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) configarguments << "CONFIG-=debug_and_release"; @@ -111,7 +112,9 @@ QStringList QMakeStep::arguments() bool QMakeStep::init() { ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); - const QtVersion *qtVersion = m_pro->qtVersion(bc); + // TODO + Qt4Project *pro = static_cast(buildConfiguration()->project()); + const QtVersion *qtVersion = pro->qtVersion(bc); if (!qtVersion->isValid()) { #if defined(Q_WS_MAC) @@ -123,7 +126,7 @@ bool QMakeStep::init() } QStringList args = arguments(); - QString workingDirectory = m_pro->buildDirectory(bc); + QString workingDirectory = pro->buildDirectory(bc); QString program = qtVersion->qmakeCommand(); @@ -132,7 +135,7 @@ bool QMakeStep::init() if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) { QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(workingDirectory); if (qtVersion->qmakeCommand() == qmakePath) { - m_needToRunQMake = !m_pro->compareBuildConfigurationToImportFrom(bc, workingDirectory); + m_needToRunQMake = !pro->compareBuildConfigurationToImportFrom(bc, workingDirectory); } } @@ -145,7 +148,7 @@ bool QMakeStep::init() setWorkingDirectory(workingDirectory); setCommand(program); setArguments(args); - setEnvironment(m_pro->environment(bc)); + setEnvironment(pro->environment(bc)); setBuildParser(ProjectExplorer::Constants::BUILD_PARSER_QMAKE); return AbstractMakeStep::init(); @@ -153,7 +156,9 @@ bool QMakeStep::init() void QMakeStep::run(QFutureInterface &fi) { - if (qobject_cast(project())->rootProjectNode()->projectType() == ScriptTemplate) { + //TODO + Qt4Project *pro = static_cast(buildConfiguration()->project()); + if (pro->rootProjectNode()->projectType() == ScriptTemplate) { fi.reportResult(true); return; } @@ -242,7 +247,7 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step) connect(m_ui.buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(buildConfigurationChanged())); connect(step, SIGNAL(changed()), this, SLOT(update())); - connect(step->project(), SIGNAL(qtVersionChanged(ProjectExplorer::BuildConfiguration *)), + connect(step->buildConfiguration()->project(), SIGNAL(qtVersionChanged(ProjectExplorer::BuildConfiguration *)), this, SLOT(qtVersionChanged(ProjectExplorer::BuildConfiguration *))); } @@ -261,7 +266,7 @@ void QMakeStepConfigWidget::qtVersionChanged(ProjectExplorer::BuildConfiguration void QMakeStepConfigWidget::updateTitleLabel() { - Qt4Project *qt4project = qobject_cast(m_step->project()); + Qt4Project *qt4project = static_cast(m_step->buildConfiguration()->project()); const QtVersion *qtVersion = qt4project->qtVersion(m_step->buildConfiguration()); if (!qtVersion) { m_summaryText = tr("QMake: No Qt version set. QMake can not be run."); @@ -271,9 +276,10 @@ void QMakeStepConfigWidget::updateTitleLabel() QStringList args = m_step->arguments(); // We don't want the full path to the .pro file - int index = args.indexOf(m_step->project()->file()->fileName()); + const QString projectFileName = m_step->buildConfiguration()->project()->file()->fileName(); + int index = args.indexOf(projectFileName); if (index != -1) - args[index] = QFileInfo(m_step->project()->file()->fileName()).fileName(); + args[index] = QFileInfo(projectFileName).fileName(); // And we only use the .pro filename not the full path QString program = QFileInfo(qtVersion->qmakeCommand()).fileName(); @@ -287,7 +293,7 @@ void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited() m_step->setQMakeArguments( ProjectExplorer::Environment::parseCombinedArgString(m_ui.qmakeAdditonalArgumentsLineEdit->text())); - static_cast(m_step->project())->invalidateCachedTargetInformation(); + static_cast(m_step->buildConfiguration()->project())->invalidateCachedTargetInformation(); updateTitleLabel(); updateEffectiveQMakeCall(); } @@ -303,7 +309,7 @@ void QMakeStepConfigWidget::buildConfigurationChanged() buildConfiguration = buildConfiguration & ~QtVersion::DebugBuild; } bc->setValue("buildConfiguration", int(buildConfiguration)); - static_cast(m_step->project())->invalidateCachedTargetInformation(); + static_cast(m_step->buildConfiguration()->project())->invalidateCachedTargetInformation(); updateTitleLabel(); updateEffectiveQMakeCall(); // TODO if exact parsing is the default, we need to update the code model @@ -334,7 +340,7 @@ void QMakeStepConfigWidget::init() void QMakeStepConfigWidget::updateEffectiveQMakeCall() { - Qt4Project *qt4project = qobject_cast(m_step->project()); + Qt4Project *qt4project = static_cast(m_step->buildConfiguration()->project()); const QtVersion *qtVersion = qt4project->qtVersion(m_step->buildConfiguration()); if (qtVersion) { QString program = QFileInfo(qtVersion->qmakeCommand()).fileName(); @@ -361,10 +367,10 @@ bool QMakeStepFactory::canCreate(const QString & name) const return (name == Constants::QMAKESTEP); } -ProjectExplorer::BuildStep *QMakeStepFactory::create(ProjectExplorer::Project * pro, BuildConfiguration *bc, const QString & name) const +ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *bc, const QString & name) const { Q_UNUSED(name) - return new QMakeStep(static_cast(pro), bc); + return new QMakeStep(bc); } ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 71ff893e793..05f17477298 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -52,7 +52,7 @@ public: QMakeStepFactory(); virtual ~QMakeStepFactory(); bool canCreate(const QString & name) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::Project * pro, ProjectExplorer::BuildConfiguration *bc, const QString & name) const; + ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const; ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; QStringList canCreateForProject(ProjectExplorer::Project *pro) const; QString displayNameForName(const QString &name) const; @@ -68,7 +68,7 @@ class QMakeStep : public ProjectExplorer::AbstractMakeStep friend class Qt4Project; // TODO remove // Currently used to access qmakeArgs public: - QMakeStep(Qt4Project * project, ProjectExplorer::BuildConfiguration *bc); + QMakeStep(ProjectExplorer::BuildConfiguration *bc); QMakeStep(QMakeStep *bs, ProjectExplorer::BuildConfiguration *bc); ~QMakeStep(); virtual bool init(); @@ -95,7 +95,6 @@ protected: virtual bool processFinished(int exitCode, QProcess::ExitStatus status); private: - Qt4Project *m_pro; // last values QStringList m_lastEnv; bool m_forced; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index c7c5979614b..fdfa6ff5512 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -462,13 +462,13 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString buildConfigu Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this, buildConfigurationName); addBuildConfiguration(bc); - QMakeStep *qmakeStep = new QMakeStep(this, bc); + QMakeStep *qmakeStep = new QMakeStep(bc); bc->insertBuildStep(0, qmakeStep); - MakeStep *makeStep = new MakeStep(this, bc); + MakeStep *makeStep = new MakeStep(bc); bc->insertBuildStep(1, makeStep); - MakeStep* cleanStep = new MakeStep(this, bc); + MakeStep* cleanStep = new MakeStep(bc); cleanStep->setClean(true); bc->insertCleanStep(0, cleanStep); if (!additionalArguments.isEmpty())