diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 4cf0a7439195651ee548ff8037995ca35c9192fa..76c260b40acbcd1a90ca303c81143eed965e8c9c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -33,14 +33,14 @@ using namespace CMakeProjectManager; using namespace Internal; -CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeProject *pro, const QString &name) - : BuildConfiguration(pro, name) +CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeProject *pro) + : BuildConfiguration(pro) { } -CMakeBuildConfiguration::CMakeBuildConfiguration(const QString &name, BuildConfiguration *source) - : BuildConfiguration(name, source) +CMakeBuildConfiguration::CMakeBuildConfiguration(BuildConfiguration *source) + : BuildConfiguration(source) { } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 2152b8bb2383c108abcbc2e00c85f9fabdc51fde..3eb716007796f6956b62016f9b5241f499f97e5f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -40,8 +40,8 @@ class CMakeProject; class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration { public: - CMakeBuildConfiguration(CMakeProject *pro, const QString &name); - CMakeBuildConfiguration(const QString &name, BuildConfiguration *source); + CMakeBuildConfiguration(CMakeProject *pro); + CMakeBuildConfiguration(BuildConfiguration *source); }; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp index ecae63b84113badada6ea0652f77a5879e7d6688..5aa29db27324988a533d0be7ad7e6a1db0662d4a 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp @@ -41,7 +41,7 @@ using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; CMakeBuildEnvironmentWidget::CMakeBuildEnvironmentWidget(CMakeProject *project) - : BuildConfigWidget(), m_pro(project) + : BuildConfigWidget(), m_pro(project), m_buildConfiguration(0) { QVBoxLayout *vbox = new QVBoxLayout(this); vbox->setMargin(0); @@ -63,29 +63,26 @@ QString CMakeBuildEnvironmentWidget::displayName() const return tr("Build Environment"); } -void CMakeBuildEnvironmentWidget::init(const QString &buildConfigurationName) +void CMakeBuildEnvironmentWidget::init(ProjectExplorer::BuildConfiguration *bc) { if (debug) qDebug() << "Qt4BuildConfigWidget::init()"; - m_buildConfiguration = buildConfigurationName; + m_buildConfiguration = bc; - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(buildConfigurationName); - m_clearSystemEnvironmentCheckBox->setChecked(!m_pro->useSystemEnvironment(bc)); - m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(bc)); - m_buildEnvironmentWidget->setUserChanges(m_pro->userEnvironmentChanges(bc)); + m_clearSystemEnvironmentCheckBox->setChecked(!m_pro->useSystemEnvironment(m_buildConfiguration)); + m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(m_buildConfiguration)); + m_buildEnvironmentWidget->setUserChanges(m_pro->userEnvironmentChanges(m_buildConfiguration)); m_buildEnvironmentWidget->updateButtons(); } void CMakeBuildEnvironmentWidget::environmentModelUserChangesUpdated() { - m_pro->setUserEnvironmentChanges( - m_pro->buildConfiguration(m_buildConfiguration), m_buildEnvironmentWidget->userChanges()); + m_pro->setUserEnvironmentChanges(m_buildConfiguration, m_buildEnvironmentWidget->userChanges()); } void CMakeBuildEnvironmentWidget::clearSystemEnvironmentCheckBoxClicked(bool checked) { - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - m_pro->setUseSystemEnvironment(bc, !checked); - m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(bc)); + m_pro->setUseSystemEnvironment(m_buildConfiguration, !checked); + m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(m_buildConfiguration)); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h index e059783849aa26d2e9bc512ef08a27208339f901..c732044b9d479ecacb0583882f15c4de886034f2 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h @@ -51,7 +51,7 @@ public: CMakeBuildEnvironmentWidget(CMakeProject *project); QString displayName() const; - void init(const QString &buildConfiguration); + void init(ProjectExplorer::BuildConfiguration *bc); private slots: void environmentModelUserChangesUpdated(); @@ -61,7 +61,7 @@ private: ProjectExplorer::EnvironmentWidget *m_buildEnvironmentWidget; QCheckBox *m_clearSystemEnvironmentCheckBox; CMakeProject *m_pro; - QString m_buildConfiguration; + ProjectExplorer::BuildConfiguration *m_buildConfiguration; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 9c42cbf1b128894e4223574c51f54475105c4c96..08ea3b45e996921f53508c9e5a778f693718db3e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -104,7 +104,8 @@ BuildConfiguration *CMakeBuildConfigurationFactory::create(const QString &type) &ok); if (!ok || buildConfigurationName.isEmpty()) return false; - BuildConfiguration *bc = new CMakeBuildConfiguration(m_project, buildConfigurationName); + BuildConfiguration *bc = new CMakeBuildConfiguration(m_project); + bc->setDisplayName(buildConfigurationName); MakeStep *makeStep = new MakeStep(bc); bc->insertBuildStep(0, makeStep); @@ -133,17 +134,17 @@ BuildConfiguration *CMakeBuildConfigurationFactory::create(const QString &type) return bc; } -BuildConfiguration *CMakeBuildConfigurationFactory::clone(const QString &name, ProjectExplorer::BuildConfiguration *source) const +BuildConfiguration *CMakeBuildConfigurationFactory::clone(ProjectExplorer::BuildConfiguration *source) const { CMakeBuildConfiguration *old = static_cast<CMakeBuildConfiguration *>(source); - CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(name, old); + CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(old); m_project->addBuildConfiguration(bc); return bc; } -BuildConfiguration *CMakeBuildConfigurationFactory::restore(const QString &name) const +BuildConfiguration *CMakeBuildConfigurationFactory::restore() const { - CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(m_project, name); + CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(m_project); return bc; } @@ -590,7 +591,7 @@ void CMakeProject::setUseSystemEnvironment(BuildConfiguration *configuration, bo if (b == useSystemEnvironment(configuration)) return; configuration->setValue("clearSystemEnvironment", !b); - emit environmentChanged(configuration->name()); + emit environmentChanged(configuration); } bool CMakeProject::useSystemEnvironment(BuildConfiguration *configuration) const @@ -611,7 +612,7 @@ void CMakeProject::setUserEnvironmentChanges(BuildConfiguration *configuration, if (list == configuration->value("userEnvironmentChanges")) return; configuration->setValue("userEnvironmentChanges", list); - emit environmentChanged(configuration->name()); + emit environmentChanged(configuration); } QString CMakeProject::buildDirectory(BuildConfiguration *configuration) const @@ -664,7 +665,8 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader if (copw.exec() != QDialog::Accepted) return false; - CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(this, "all"); + CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(this); + bc->setDisplayName("all"); addBuildConfiguration(bc); bc->setValue("msvcVersion", copw.msvcVersion()); if (!copw.buildDirectory().isEmpty()) @@ -792,7 +794,7 @@ void CMakeFile::modified(ReloadBehavior *behavior) } CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeProject *project) - : m_project(project) + : m_project(project), m_buildConfiguration(0) { QFormLayout *fl = new QFormLayout(this); fl->setContentsMargins(20, -1, 0, -1); @@ -821,10 +823,9 @@ QString CMakeBuildSettingsWidget::displayName() const return "CMake"; } -void CMakeBuildSettingsWidget::init(const QString &buildConfigurationName) +void CMakeBuildSettingsWidget::init(BuildConfiguration *bc) { - m_buildConfiguration = buildConfigurationName; - BuildConfiguration *bc = m_project->buildConfiguration(buildConfigurationName); + m_buildConfiguration = bc; m_pathLineEdit->setText(m_project->buildDirectory(bc)); if (m_project->buildDirectory(bc) == m_project->sourceDirectory()) m_changeButton->setEnabled(false); @@ -834,14 +835,13 @@ void CMakeBuildSettingsWidget::init(const QString &buildConfigurationName) void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog() { - BuildConfiguration *bc = m_project->buildConfiguration(m_buildConfiguration); CMakeOpenProjectWizard copw(m_project->projectManager(), m_project->sourceDirectory(), - m_project->buildDirectory(bc), - m_project->environment(bc)); + m_project->buildDirectory(m_buildConfiguration), + m_project->environment(m_buildConfiguration)); if (copw.exec() == QDialog::Accepted) { - m_project->changeBuildDirectory(bc, copw.buildDirectory()); - m_pathLineEdit->setText(m_project->buildDirectory(bc)); + m_project->changeBuildDirectory(m_buildConfiguration, copw.buildDirectory()); + m_pathLineEdit->setText(m_project->buildDirectory(m_buildConfiguration)); } } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 6e61e7889f81604d86031d5ee43acda498f6d765..f9e694dc6af8a4fd0d0b38a5e5b9bde3804d17b0 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -74,8 +74,8 @@ public: QString displayNameForType(const QString &type) const; ProjectExplorer::BuildConfiguration *create(const QString &type) const; - ProjectExplorer::BuildConfiguration *clone(const QString &name, ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore(const QString &name) const; + ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; + ProjectExplorer::BuildConfiguration *restore() const; private: CMakeProject *m_project; @@ -232,14 +232,14 @@ public: // This is called to set up the config widget before showing it // buildConfiguration is QString::null for the non buildConfiguration specific page - virtual void init(const QString &buildConfiguration); + virtual void init(ProjectExplorer::BuildConfiguration *bc); private slots: void openChangeBuildDirectoryDialog(); private: CMakeProject *m_project; QLineEdit *m_pathLineEdit; QPushButton *m_changeButton; - QString m_buildConfiguration; + ProjectExplorer::BuildConfiguration *m_buildConfiguration; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index da290d66a7199aeb1abc66379d29a05ffcb6cff0..fc4c5868adefdaf9e29a84722cd9be59e01d66d1 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -58,7 +58,7 @@ CMakeRunConfiguration::CMakeRunConfiguration(CMakeProject *pro, const QString &t connect(pro, SIGNAL(activeBuildConfigurationChanged()), this, SIGNAL(baseEnvironmentChanged())); - connect(pro, SIGNAL(environmentChanged(QString)), + connect(pro, SIGNAL(environmentChanged(ProjectExplorer::BuildConfiguration *)), this, SIGNAL(baseEnvironmentChanged())); } diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index e0ea03b4f92f791cbef8ab78ecdbb7277f0e9648..7e49f180c2d0ed30a8c57dfddec01f39e8ca8e89 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -202,7 +202,8 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) fl->addRow(tr("Targets:"), m_targetsList); // TODO update this list also on rescans of the CMakeLists.txt - CMakeProject *pro = m_makeStep->project(); + // TODO shouldn't be accessing project + CMakeProject *pro = static_cast<CMakeProject *>(m_makeStep->buildConfiguration()->project()); foreach(const QString& target, pro->targets()) { QListWidgetItem *item = new QListWidgetItem(target, m_targetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); @@ -251,11 +252,10 @@ void MakeStepConfigWidget::updateDetails() { QStringList arguments = m_makeStep->m_buildTargets; arguments << m_makeStep->additionalArguments(); - m_summaryText = tr("<b>Make:</b> %1 %2") - .arg(m_makeStep->project()->toolChain( - m_makeStep->buildConfiguration()) - ->makeCommand(), - arguments.join(" ")); + + BuildConfiguration *bc = m_makeStep->buildConfiguration(); + CMakeProject *pro = static_cast<CMakeProject *>(bc->project()); + m_summaryText = tr("<b>Make:</b> %1 %2").arg(pro->toolChain(bc)->makeCommand(), arguments.join(" ")); emit updateSummary(); } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 9e1f05a7ea5cfe62e2ca007071a432192fb6f6cf..7a64c538536f13d690ee6cd53c52a910f0acb91e 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -34,14 +34,14 @@ using namespace GenericProjectManager; using namespace GenericProjectManager::Internal; using ProjectExplorer::BuildConfiguration; -GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, const QString &name) - : BuildConfiguration(pro, name) +GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro) + : BuildConfiguration(pro) { } -GenericBuildConfiguration::GenericBuildConfiguration(const QString &name, GenericBuildConfiguration *source) - : BuildConfiguration(name, source) +GenericBuildConfiguration::GenericBuildConfiguration(GenericBuildConfiguration *source) + : BuildConfiguration(source) { } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index 5cfd664032d9bb159de19a6c206a5f476823d5e2..aa812c396d5ec5b80d8487da7c69fd8719f1564a 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -41,8 +41,8 @@ class GenericProject; class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration { public: - GenericBuildConfiguration(GenericProject *pro, const QString &name); - GenericBuildConfiguration(const QString &name, GenericBuildConfiguration *source); + GenericBuildConfiguration(GenericProject *pro); + GenericBuildConfiguration(GenericBuildConfiguration *source); }; } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 676636e002069ed83e9e486861d71ad74aaf7796..fcbc50e7667c42af69e1c5d09e2665ce7be658a3 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -146,7 +146,8 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &type &ok); if (!ok || buildConfigurationName.isEmpty()) return false; - GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project, buildConfigurationName); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project); + bc->setDisplayName(buildConfigurationName); m_project->addBuildConfiguration(bc); // also makes the name unique... GenericMakeStep *makeStep = new GenericMakeStep(bc); @@ -155,17 +156,17 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(const QString &type return bc; } -BuildConfiguration *GenericBuildConfigurationFactory::clone(const QString &name, BuildConfiguration *source) const +BuildConfiguration *GenericBuildConfigurationFactory::clone(BuildConfiguration *source) const { // TODO - GenericBuildConfiguration *bc = new GenericBuildConfiguration(name, static_cast<GenericBuildConfiguration *>(source)); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(static_cast<GenericBuildConfiguration *>(source)); m_project->addBuildConfiguration(bc); return bc; } -BuildConfiguration *GenericBuildConfigurationFactory::restore(const QString &name) const +BuildConfiguration *GenericBuildConfigurationFactory::restore() const { - GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project, name); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(m_project); return bc; } @@ -533,7 +534,8 @@ bool GenericProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsRead Project::restoreSettingsImpl(reader); if (buildConfigurations().isEmpty()) { - GenericBuildConfiguration *bc = new GenericBuildConfiguration(this, "all"); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(this); + bc->setDisplayName("all"); addBuildConfiguration(bc); GenericMakeStep *makeStep = new GenericMakeStep(bc); @@ -589,7 +591,7 @@ void GenericProject::saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter //////////////////////////////////////////////////////////////////////////////////// GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericProject *project) - : m_project(project) + : m_project(project), m_buildConfiguration(0) { QFormLayout *fl = new QFormLayout(this); fl->setContentsMargins(0, -1, 0, -1); @@ -625,15 +627,15 @@ GenericBuildSettingsWidget::~GenericBuildSettingsWidget() QString GenericBuildSettingsWidget::displayName() const { return tr("Generic Manager"); } -void GenericBuildSettingsWidget::init(const QString &buildConfigurationName) +void GenericBuildSettingsWidget::init(BuildConfiguration *bc) { - m_buildConfiguration = buildConfigurationName; - m_pathChooser->setPath(m_project->buildDirectory(m_project->buildConfiguration(buildConfigurationName))); + m_buildConfiguration = bc; + m_pathChooser->setPath(m_project->buildDirectory(bc)); } void GenericBuildSettingsWidget::buildDirectoryChanged() { - m_project->buildConfiguration(m_buildConfiguration)->setValue("buildDirectory", m_pathChooser->path()); + m_buildConfiguration->setValue("buildDirectory", m_pathChooser->path()); } void GenericBuildSettingsWidget::toolChainSelected(int index) diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index 6ad13b2bda81d09e20d90cb2274d60d2810e1d69..cba88fc4abead964bee7cf63ea34564ec7e89290 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -67,8 +67,8 @@ public: QString displayNameForType(const QString &type) const; ProjectExplorer::BuildConfiguration *create(const QString &type) const; - ProjectExplorer::BuildConfiguration *clone(const QString &name, ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore(const QString &name) const; + ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; + ProjectExplorer::BuildConfiguration *restore() const; private: GenericProject *m_project; @@ -195,7 +195,7 @@ public: virtual QString displayName() const; - virtual void init(const QString &buildConfiguration); + virtual void init(ProjectExplorer::BuildConfiguration *bc); private Q_SLOTS: void buildDirectoryChanged(); @@ -204,7 +204,7 @@ private Q_SLOTS: private: GenericProject *m_project; Utils::PathChooser *m_pathChooser; - QString m_buildConfiguration; + ProjectExplorer::BuildConfiguration *m_buildConfiguration; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 3c80b43b5d5f0335cbcd5910f0eaed6c35700c11..fe3b32f05bc09755f230cb6bd3ab522cd391a794 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -44,14 +44,14 @@ IBuildStepFactory *findFactory(const QString &name) return 0; } -BuildConfiguration::BuildConfiguration(Project *pro, const QString &name) - : m_name(name), m_project(pro) +BuildConfiguration::BuildConfiguration(Project *pro) + : m_project(pro) { - setDisplayName(name); + } -BuildConfiguration::BuildConfiguration(const QString &name, BuildConfiguration *source) - : m_values(source->m_values), m_name(name), m_project(source->m_project) +BuildConfiguration::BuildConfiguration(BuildConfiguration *source) + : m_values(source->m_values), m_project(source->m_project) { foreach(BuildStep *originalbs, source->buildSteps()) { IBuildStepFactory *factory = findFactory(originalbs->name()); @@ -71,16 +71,6 @@ BuildConfiguration::~BuildConfiguration() qDeleteAll(m_cleanSteps); } -void BuildConfiguration::setName(const QString &name) -{ - m_name = name; -} - -QString BuildConfiguration::name() const -{ - return m_name; -} - QString BuildConfiguration::displayName() const { QVariant v = value("ProjectExplorer.BuildConfiguration.DisplayName"); diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 2f7f05c1cfc36571f767e4c9678951e0723f4afe..40cb5a4a787e98069038f3fde69c3f68167b0ad6 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -53,7 +53,6 @@ public: // ctors are protected virtual ~BuildConfiguration(); - QString name() const; QString displayName() const; void setDisplayName(const QString &name); @@ -77,19 +76,15 @@ public: Project *project() const; protected: - BuildConfiguration(Project * project, const QString &name); - BuildConfiguration(const QString &name, BuildConfiguration *source); + BuildConfiguration(Project * project); + BuildConfiguration(BuildConfiguration *source); private: - void setName(const QString &name); - QList<BuildStep *> m_buildSteps; QList<BuildStep *> m_cleanSteps; QHash<QString, QVariant> m_values; - QString m_name; Project *m_project; - friend class Project; // for setName }; class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory : public QObject @@ -110,24 +105,21 @@ public: virtual BuildConfiguration *create(const QString &type) const = 0; // clones a given BuildConfiguration and adds it to the project - virtual BuildConfiguration *clone(const QString &name, BuildConfiguration *source) const = 0; + virtual BuildConfiguration *clone(BuildConfiguration *source) const = 0; // restores a BuildConfiguration with the name and adds it to the project - virtual BuildConfiguration *restore(const QString &name) const = 0; + virtual BuildConfiguration *restore() const = 0; // TODO All those methods make the internal name (and display name) unique, // but in different ways - -// to come: -// restore -// clone - signals: void availableCreationTypesChanged(); }; } // namespace ProjectExplorer +Q_DECLARE_METATYPE(ProjectExplorer::BuildConfiguration *); + #endif // BUILDCONFIGURATION_H diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 4f5a27a0192a058ad6306cfdb237c2be2b3468ff..dde844b1fb32539f91f8fa4f50ec9c8281bcf5f5 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -351,20 +351,12 @@ void BuildManager::buildQueueAppend(BuildStep * bs) incrementActiveBuildSteps(bs->buildConfiguration()->project()); } -void BuildManager::buildProjects(const QList<Project *> &projects, const QList<QString> &configurations) +void BuildManager::buildProjects(const QList<BuildConfiguration *> &configurations) { - Q_ASSERT(projects.count() == configurations.count()); - QList<QString>::const_iterator cit = configurations.constBegin(); - QList<Project *>::const_iterator it, end; - end = projects.constEnd(); - - for (it = projects.constBegin(); it != end; ++it, ++cit) { - if (*cit != QString::null) { - BuildConfiguration *bc = (*it)->buildConfiguration(*cit); - QList<BuildStep *> buildSteps = bc->buildSteps(); - foreach (BuildStep *bs, buildSteps) { - buildQueueAppend(bs); - } + foreach(BuildConfiguration *bc, configurations) { + QList<BuildStep *> buildSteps = bc->buildSteps(); + foreach (BuildStep *bs, buildSteps) { + buildQueueAppend(bs); } } if (ProjectExplorerPlugin::instance()->projectExplorerSettings().showCompilerOutput) @@ -372,20 +364,12 @@ void BuildManager::buildProjects(const QList<Project *> &projects, const QList<Q startBuildQueue(); } -void BuildManager::cleanProjects(const QList<Project *> &projects, const QList<QString> &configurations) +void BuildManager::cleanProjects(const QList<BuildConfiguration *> &configurations) { - Q_ASSERT(projects.count() == configurations.count()); - QList<QString>::const_iterator cit = configurations.constBegin(); - QList<Project *>::const_iterator it, end; - end = projects.constEnd(); - - for (it = projects.constBegin(); it != end; ++it, ++cit) { - if (*cit != QString::null) { - BuildConfiguration *bc = (*it)->buildConfiguration(*cit); - QList<BuildStep *> cleanSteps = bc->cleanSteps(); - foreach (BuildStep *bs, cleanSteps) { - buildQueueAppend(bs); - } + foreach(BuildConfiguration *bc, configurations) { + QList<BuildStep *> cleanSteps = bc->cleanSteps(); + foreach (BuildStep *bs, cleanSteps) { + buildQueueAppend(bs); } } if (ProjectExplorerPlugin::instance()->projectExplorerSettings().showCompilerOutput) @@ -393,14 +377,14 @@ void BuildManager::cleanProjects(const QList<Project *> &projects, const QList<Q startBuildQueue(); } -void BuildManager::buildProject(Project *p, const QString &configuration) +void BuildManager::buildProject(BuildConfiguration *configuration) { - buildProjects(QList<Project *>() << p, QList<QString>() << configuration); + buildProjects(QList<BuildConfiguration *>() << configuration); } -void BuildManager::cleanProject(Project *p, const QString &configuration) +void BuildManager::cleanProject(BuildConfiguration *configuration) { - cleanProjects(QList<Project *>() << p, QList<QString>() << configuration); + cleanProjects(QList<BuildConfiguration *>() << configuration); } void BuildManager::appendStep(BuildStep *step) diff --git a/src/plugins/projectexplorer/buildmanager.h b/src/plugins/projectexplorer/buildmanager.h index 1d2da54b5ec86b3f36e6788e0aa24b22d3ff9d31..47e59ec42b3e1d1d7cf8bd3a37962565697376ae 100644 --- a/src/plugins/projectexplorer/buildmanager.h +++ b/src/plugins/projectexplorer/buildmanager.h @@ -49,6 +49,7 @@ namespace Internal { class BuildStep; class Project; class ProjectExplorerPlugin; +class BuildConfiguration; class PROJECTEXPLORER_EXPORT BuildManager : public QObject @@ -70,10 +71,10 @@ public: void gotoTaskWindow(); //TODO these should take buildconfiguration object - void buildProject(Project *p, const QString &configuration); - void buildProjects(const QList<Project *> &projects, const QList<QString> &configurations); - void cleanProject(Project *p, const QString &configuration); - void cleanProjects(const QList<Project *> &projects, const QList<QString> &configurations); + void buildProject(BuildConfiguration *bc); + void buildProjects(const QList<BuildConfiguration *> &configurations); + void cleanProject(BuildConfiguration *configuration); + void cleanProjects(const QList<BuildConfiguration *> &configurations); bool isBuilding(Project *p); // Append any build step to the list of build steps (currently only used to add the QMakeStep) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index bf2fcf13fd0ee3535849dd950b89b4d9f5decb03..d73e2c9790443f77899d929b893e260cfc41ccd8 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -153,7 +153,7 @@ BuildSettingsWidget::~BuildSettingsWidget() } BuildSettingsWidget::BuildSettingsWidget(Project *project) - : m_project(project) + : m_project(project), m_buildConfiguration(0) { QVBoxLayout *vbox = new QVBoxLayout(this); vbox->setContentsMargins(0, -1, 0, -1); @@ -189,7 +189,7 @@ BuildSettingsWidget::BuildSettingsWidget(Project *project) m_addButton->setMenu(m_addButtonMenu); updateAddButtonMenu(); - m_buildConfiguration = m_project->activeBuildConfiguration()->name(); + m_buildConfiguration = m_project->activeBuildConfiguration(); connect(m_makeActiveLabel, SIGNAL(linkActivated(QString)), this, SLOT(makeActive())); @@ -200,8 +200,8 @@ BuildSettingsWidget::BuildSettingsWidget(Project *project) connect(m_removeButton, SIGNAL(clicked()), this, SLOT(deleteConfiguration())); - connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(const QString &)), - this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); + connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *)), + this, SLOT(buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *))); connect(m_project, SIGNAL(activeBuildConfigurationChanged()), this, SLOT(checkMakeActiveLabel())); @@ -214,7 +214,7 @@ BuildSettingsWidget::BuildSettingsWidget(Project *project) void BuildSettingsWidget::makeActive() { - m_project->setActiveBuildConfiguration(m_project->buildConfiguration(m_buildConfiguration)); + m_project->setActiveBuildConfiguration(m_buildConfiguration); } void BuildSettingsWidget::updateAddButtonMenu() @@ -231,11 +231,11 @@ void BuildSettingsWidget::updateAddButtonMenu() } } -void BuildSettingsWidget::buildConfigurationDisplayNameChanged(const QString &buildConfiguration) +void BuildSettingsWidget::buildConfigurationDisplayNameChanged(BuildConfiguration *bc) { for (int i=0; i<m_buildConfigurationComboBox->count(); ++i) { - if (m_buildConfigurationComboBox->itemData(i).toString() == buildConfiguration) { - m_buildConfigurationComboBox->setItemText(i, m_project->buildConfiguration(buildConfiguration)->displayName()); + if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == bc) { + m_buildConfigurationComboBox->setItemText(i, bc->displayName()); break; } } @@ -267,8 +267,8 @@ void BuildSettingsWidget::updateBuildSettings() // Add tree items foreach (const BuildConfiguration *bc, m_project->buildConfigurations()) { - m_buildConfigurationComboBox->addItem(bc->displayName(), bc->name()); - if (bc->name() == m_buildConfiguration) + m_buildConfigurationComboBox->addItem(bc->displayName(), bc); + if (bc == m_buildConfiguration) m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1); } @@ -281,14 +281,14 @@ void BuildSettingsWidget::updateBuildSettings() void BuildSettingsWidget::currentIndexChanged(int index) { - m_buildConfiguration = m_buildConfigurationComboBox->itemData(index).toString(); + m_buildConfiguration = (BuildConfiguration *) m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); activeBuildConfigurationChanged(); } void BuildSettingsWidget::activeBuildConfigurationChanged() { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { - if (m_buildConfigurationComboBox->itemData(i).toString() == m_buildConfiguration) { + if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == m_buildConfiguration) { m_buildConfigurationComboBox->setCurrentIndex(i); break; } @@ -304,10 +304,8 @@ void BuildSettingsWidget::activeBuildConfigurationChanged() void BuildSettingsWidget::checkMakeActiveLabel() { m_makeActiveLabel->setVisible(false); - if (!m_project->activeBuildConfiguration() || m_project->activeBuildConfiguration()->name() != m_buildConfiguration) { - BuildConfiguration *bc = m_project->buildConfiguration(m_buildConfiguration); - QTC_ASSERT(bc, return); - m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(bc->displayName())); + if (!m_project->activeBuildConfiguration() || m_project->activeBuildConfiguration() != m_buildConfiguration) { + m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(m_buildConfiguration->displayName())); m_makeActiveLabel->setVisible(true); } } @@ -316,64 +314,55 @@ void BuildSettingsWidget::createConfiguration() { QAction *action = qobject_cast<QAction *>(sender()); const QString &type = action->data().toString(); - if (m_project->buildConfigurationFactory()->create(type)) { - // TODO switching to last buildconfiguration in list might not be what we want - m_buildConfiguration = m_project->buildConfigurations().last()->name(); + BuildConfiguration *bc = m_project->buildConfigurationFactory()->create(type); + if (bc) { + m_buildConfiguration = bc; updateBuildSettings(); } } void BuildSettingsWidget::cloneConfiguration() { - const QString configuration = m_buildConfigurationComboBox->itemData(m_buildConfigurationComboBox->currentIndex()).toString(); - cloneConfiguration(configuration); + int index = m_buildConfigurationComboBox->currentIndex(); + BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); + cloneConfiguration(bc); } void BuildSettingsWidget::deleteConfiguration() { - const QString configuration = m_buildConfigurationComboBox->itemData(m_buildConfigurationComboBox->currentIndex()).toString(); - deleteConfiguration(configuration); + int index = m_buildConfigurationComboBox->currentIndex(); + BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); + deleteConfiguration(bc); } -void BuildSettingsWidget::cloneConfiguration(const QString &sourceConfiguration) +void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfiguration) { - if (sourceConfiguration.isEmpty()) + if (!sourceConfiguration) return; - QString newBuildConfiguration = QInputDialog::getText(this, tr("Clone configuration"), tr("New Configuration Name:")); - if (newBuildConfiguration.isEmpty()) + QString newDisplayName = QInputDialog::getText(this, tr("Clone configuration"), tr("New Configuration Name:")); + if (newDisplayName.isEmpty()) return; - QString newDisplayName = newBuildConfiguration; QStringList buildConfigurationDisplayNames; foreach(BuildConfiguration *bc, m_project->buildConfigurations()) buildConfigurationDisplayNames << bc->displayName(); newDisplayName = Project::makeUnique(newDisplayName, buildConfigurationDisplayNames); - QStringList buildConfigurationNames; - foreach(BuildConfiguration *bc, m_project->buildConfigurations()) - buildConfigurationNames << bc->name(); - - newBuildConfiguration = Project::makeUnique(newBuildConfiguration, buildConfigurationNames); - - BuildConfiguration *sourceBc = m_project->buildConfiguration(sourceConfiguration); + m_buildConfiguration = m_project->buildConfigurationFactory()->clone(sourceConfiguration); + m_project->setDisplayNameFor(m_buildConfiguration, newDisplayName); - m_project->buildConfigurationFactory()->clone(newBuildConfiguration, sourceBc); - - m_project->setDisplayNameFor(m_project->buildConfiguration(newBuildConfiguration), newDisplayName); - - m_buildConfiguration = newBuildConfiguration; updateBuildSettings(); } -void BuildSettingsWidget::deleteConfiguration(const QString &deleteConfiguration) +void BuildSettingsWidget::deleteConfiguration(BuildConfiguration *deleteConfiguration) { - if (deleteConfiguration.isEmpty() || m_project->buildConfigurations().size() <= 1) + if (!deleteConfiguration || m_project->buildConfigurations().size() <= 1) return; - if (m_project->activeBuildConfiguration()->name() == deleteConfiguration) { + if (m_project->activeBuildConfiguration() == deleteConfiguration) { foreach (BuildConfiguration *bc, m_project->buildConfigurations()) { - if (bc->name() != deleteConfiguration) { + if (bc != deleteConfiguration) { m_project->setActiveBuildConfiguration(bc); break; } @@ -381,15 +370,15 @@ void BuildSettingsWidget::deleteConfiguration(const QString &deleteConfiguration } if (m_buildConfiguration == deleteConfiguration) { - foreach (const BuildConfiguration *bc, m_project->buildConfigurations()) { - if (bc->name() != deleteConfiguration) { - m_buildConfiguration = bc->name(); + foreach (BuildConfiguration *bc, m_project->buildConfigurations()) { + if (bc != deleteConfiguration) { + m_buildConfiguration = bc; break; } } } - m_project->removeBuildConfiguration(m_project->buildConfiguration(deleteConfiguration)); + m_project->removeBuildConfiguration(deleteConfiguration); updateBuildSettings(); } diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index 169feeedf7e01145868e4402675acdd0fc1e4dd8..0026553b77e21f5ef806ed697aa941d05da33692 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -42,6 +42,7 @@ namespace ProjectExplorer { class IBuildStepFactory; +class BuildConfiguration; namespace Internal { @@ -93,7 +94,7 @@ public: ~BuildSettingsWidget(); private slots: - void buildConfigurationDisplayNameChanged(const QString &buildConfiguration); + void buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *bc); void updateBuildSettings(); void currentIndexChanged(int index); void activeBuildConfigurationChanged(); @@ -106,15 +107,15 @@ private slots: void makeActive(); private: - void cloneConfiguration(const QString &toClone); - void deleteConfiguration(const QString &toDelete); + void cloneConfiguration(ProjectExplorer::BuildConfiguration *toClone); + void deleteConfiguration(ProjectExplorer::BuildConfiguration *toDelete); Project *m_project; QPushButton *m_addButton; QPushButton *m_removeButton; QComboBox *m_buildConfigurationComboBox; BuildSettingsSubWidgets *m_subWidgets; - QString m_buildConfiguration; + BuildConfiguration *m_buildConfiguration; QMenu *m_addButtonMenu; QLabel *m_makeActiveLabel; }; diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index 360ad3dc4b2e6bd9875f15979a271639b55edcf5..9fd6925b5164aec3740485f4dec2c5de130c9949 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -44,7 +44,7 @@ BuildStep::BuildStep(BuildConfiguration *bc) BuildStep::BuildStep(BuildStep *bs, BuildConfiguration *bc) : m_buildConfiguration(bc) { - + Q_UNUSED(bs); } BuildStep::~BuildStep() diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index f8a481a556af3d47ea55e9ed4c5f814144adb65a..c210f6af019da61e98a07f28dc3be7530fb0b430 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -155,7 +155,7 @@ public: virtual QString displayName() const = 0; // This is called to set up the config widget before showing it - virtual void init(const QString &buildConfiguration) = 0; + virtual void init(BuildConfiguration *bc) = 0; }; class PROJECTEXPLORER_EXPORT BuildStepConfigWidget diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 35d3ba8c2642b245f633a9905cbcdc4de6ed778f..fc1416000e6ee4379e0731f7b4d9fea98c310b12 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -110,7 +110,7 @@ QString BuildStepsPage::displayName() const return m_clean ? tr("Clean Steps") : tr("Build Steps"); } -void BuildStepsPage::init(const QString &buildConfiguration) +void BuildStepsPage::init(BuildConfiguration *bc) { foreach(BuildStepsWidgetStruct s, m_buildSteps) { delete s.widget; @@ -118,8 +118,7 @@ void BuildStepsPage::init(const QString &buildConfiguration) } m_buildSteps.clear(); - m_configuration = buildConfiguration; - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); + m_configuration = bc; const QList<BuildStep *> &steps = m_clean ? bc->cleanSteps() : bc->buildSteps(); int i = 0; @@ -214,7 +213,7 @@ void BuildStepsPage::addBuildStepWidget(int pos, BuildStep *step) void BuildStepsPage::addBuildStep() { if (QAction *action = qobject_cast<QAction *>(sender())) { - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); + BuildConfiguration *bc = m_configuration; QPair<QString, IBuildStepFactory *> pair = m_addBuildStepHash.value(action); BuildStep *newStep = pair.second->create(bc, pair.first); int pos = m_clean ? bc->cleanSteps().count() : bc->buildSteps().count(); @@ -232,8 +231,7 @@ void BuildStepsPage::updateRemoveBuildStepMenu() { QMenu *menu = m_removeButton->menu(); menu->clear(); - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); - const QList<BuildStep *> &steps = m_clean ? bc->cleanSteps() : bc->buildSteps(); + const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps(); foreach(BuildStep *step, steps) { QAction *action = menu->addAction(step->displayName()); if (step->immutable()) @@ -248,8 +246,7 @@ void BuildStepsPage::removeBuildStep() QAction *action = qobject_cast<QAction *>(sender()); if (action) { int pos = m_removeButton->menu()->actions().indexOf(action); - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); - const QList<BuildStep *> &steps = m_clean ? bc->cleanSteps() : bc->buildSteps(); + const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps(); if (steps.at(pos)->immutable()) return; @@ -257,7 +254,7 @@ void BuildStepsPage::removeBuildStep() delete s.widget; delete s.detailsWidget; m_buildSteps.removeAt(pos); - m_clean ? bc->removeCleanStep(pos) : bc->removeBuildStep(pos); + m_clean ? m_configuration->removeCleanStep(pos) : m_configuration->removeBuildStep(pos); } updateBuildStepButtonsState(); } @@ -304,8 +301,7 @@ void BuildStepsPage::downBuildStep() void BuildStepsPage::stepMoveUp(int pos) { - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); - m_clean ? bc->moveCleanStepUp(pos) : bc->moveBuildStepUp(pos); + m_clean ? m_configuration->moveCleanStepUp(pos) : m_configuration->moveBuildStepUp(pos); m_vbox->insertWidget(pos - 1, m_buildSteps.at(pos).detailsWidget); @@ -316,8 +312,7 @@ void BuildStepsPage::stepMoveUp(int pos) void BuildStepsPage::updateBuildStepButtonsState() { - BuildConfiguration *bc = m_pro->buildConfiguration(m_configuration); - const QList<BuildStep *> &steps = m_clean ? bc->cleanSteps() : bc->buildSteps(); + const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps(); for(int i=0; i<m_buildSteps.count(); ++i) { BuildStepsWidgetStruct s = m_buildSteps.at(i); s.upButton->setEnabled((i>0) && !(steps.at(i)->immutable() && steps.at(i - 1))); diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h index b6c7e0ac099aa53cc35d2d610e1629eeadd97b6b..92e8180218b03de405f1fbfa64ed0f7aea2851ae 100644 --- a/src/plugins/projectexplorer/buildstepspage.h +++ b/src/plugins/projectexplorer/buildstepspage.h @@ -71,7 +71,7 @@ public: virtual ~BuildStepsPage(); QString displayName() const; - void init(const QString &buildConfiguration); + void init(BuildConfiguration *bc); private slots: void updateAddBuildStepMenu(); @@ -88,7 +88,7 @@ private: void addBuildStepWidget(int pos, BuildStep *step); Project *m_pro; - QString m_configuration; + BuildConfiguration *m_configuration; QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash; bool m_clean; diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp index 8d6852d90b8a7d31bebd2fecc4c885bd9c875bf4..dc9caecf6993058f310fb67251f03ca75700e720 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp @@ -251,7 +251,7 @@ CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Project *pro) connect(pro, SIGNAL(activeBuildConfigurationChanged()), this, SIGNAL(baseEnvironmentChanged())); - connect(pro, SIGNAL(environmentChanged(QString)), + connect(pro, SIGNAL(environmentChanged(ProjectExplorer::BuildConfiguration *)), this, SIGNAL(baseEnvironmentChanged())); } diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index a70faf4519b1f3f43ce57247675a0e8642e0a665..6a05b9264dda1193b35c7d5d508a24ff30eb1547 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -74,15 +74,6 @@ QString Project::makeUnique(const QString &preferedName, const QStringList &used void Project::addBuildConfiguration(BuildConfiguration *configuration) { - QStringList buildConfigurationNames; - foreach (const BuildConfiguration *bc, buildConfigurations()) - buildConfigurationNames << bc->name(); - - // Check that the internal name is not taken and use a different one otherwise - QString configurationName = configuration->name(); - configurationName = makeUnique(configurationName, buildConfigurationNames); - configuration->setName(configurationName); - // Check that we don't have a configuration with the same displayName QString configurationDisplayName = configuration->displayName(); QStringList displayNames; @@ -94,7 +85,7 @@ void Project::addBuildConfiguration(BuildConfiguration *configuration) // add it m_buildConfigurationValues.push_back(configuration); - emit addedBuildConfiguration(this, configuration->name()); + emit addedBuildConfiguration(this, configuration); } void Project::removeBuildConfiguration(BuildConfiguration *configuration) @@ -105,7 +96,7 @@ void Project::removeBuildConfiguration(BuildConfiguration *configuration) m_buildConfigurationValues.removeOne(configuration); - emit removedBuildConfiguration(this, configuration->name()); + emit removedBuildConfiguration(this, configuration); delete configuration; } @@ -133,7 +124,7 @@ bool Project::restoreSettings() if (!restoreSettingsImpl(reader)) return false; - if (m_activeBuildConfiguration.isEmpty() && !m_buildConfigurationValues.isEmpty()) + if (m_activeBuildConfiguration && !m_buildConfigurationValues.isEmpty()) setActiveBuildConfiguration(m_buildConfigurationValues.at(0)); if (!m_activeRunConfiguration && !m_runConfigurations.isEmpty()) @@ -148,47 +139,50 @@ QList<BuildConfigWidget*> Project::subConfigWidgets() void Project::saveSettingsImpl(PersistentSettingsWriter &writer) { - writer.saveValue("activebuildconfiguration", m_activeBuildConfiguration); + const QList<BuildConfiguration *> bcs = buildConfigurations(); + + // For compability with older versions the "name" is saved as a string instead of a number + writer.saveValue("activebuildconfiguration", QString::number(bcs.indexOf(m_activeBuildConfiguration))); //save m_values writer.saveValue("project", m_values); //save buildsettings QStringList buildConfigurationNames; - foreach (const BuildConfiguration *bc, buildConfigurations()) { - QMap<QString, QVariant> temp = bc->toMap(); - writer.saveValue("buildConfiguration-" + bc->name(), temp); - buildConfigurationNames << bc->name(); + for(int i=0; i < bcs.size(); ++i) { + QMap<QString, QVariant> temp = bcs.at(i)->toMap(); + writer.saveValue("buildConfiguration-" + QString::number(i), temp); + buildConfigurationNames << QString::number(i); } writer.saveValue("buildconfigurations", buildConfigurationNames); // save each buildstep/buildConfiguration combination - foreach (const BuildConfiguration *bc, buildConfigurations()) { + for(int i=0; i < bcs.size(); ++i) { QStringList buildStepNames; - foreach (BuildStep *buildStep, bc->buildSteps()) + foreach (BuildStep *buildStep, bcs.at(i)->buildSteps()) buildStepNames << buildStep->name(); - writer.saveValue("buildconfiguration-" + bc->name() + "-buildsteps", buildStepNames); + writer.saveValue("buildconfiguration-" + QString::number(i) + "-buildsteps", buildStepNames); int buildstepnr = 0; - foreach (BuildStep *buildStep, bc->buildSteps()) { + foreach (BuildStep *buildStep, bcs.at(i)->buildSteps()) { QMap<QString, QVariant> temp; buildStep->storeIntoLocalMap(temp); - writer.saveValue("buildconfiguration-" + bc->name() + "-buildstep" + QString().setNum(buildstepnr), temp); + writer.saveValue("buildconfiguration-" + QString::number(i) + "-buildstep" + QString().setNum(buildstepnr), temp); ++buildstepnr; } } // save each cleanstep/buildConfiguration combination - foreach (const BuildConfiguration *bc, buildConfigurations()) { + for(int i=0; i < bcs.size(); ++i) { QStringList cleanStepNames; - foreach (BuildStep *cleanStep, bc->cleanSteps()) + foreach (BuildStep *cleanStep, bcs.at(i)->cleanSteps()) cleanStepNames << cleanStep->name(); - writer.saveValue("buildconfiguration-" + bc->name() + "-cleansteps", cleanStepNames); + writer.saveValue("buildconfiguration-" + QString::number(i) + "-cleansteps", cleanStepNames); int cleanstepnr = 0; - foreach (BuildStep *cleanStep, bc->cleanSteps()) { + foreach (BuildStep *cleanStep, bcs.at(i)->cleanSteps()) { QMap<QString, QVariant> temp; cleanStep->storeIntoLocalMap(temp); - writer.saveValue("buildconfiguration-" + bc->name() + "-cleanstep" + QString().setNum(cleanstepnr), temp); + writer.saveValue("buildconfiguration-" + QString::number(i) + "-cleanstep" + QString().setNum(cleanstepnr), temp); ++cleanstepnr; } } @@ -212,8 +206,6 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer) bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) { - m_activeBuildConfiguration = reader.restoreValue("activebuildconfiguration").toString(); - m_values = reader.restoreValue("project").toMap(); const QList<IBuildStepFactory *> buildStepFactories = @@ -221,15 +213,16 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) // restoring BuldConfigurations from settings const QStringList buildConfigurationNames = reader.restoreValue("buildconfigurations").toStringList(); + foreach (const QString &buildConfigurationName, buildConfigurationNames) { - BuildConfiguration *bc = buildConfigurationFactory()->restore(buildConfigurationName); + BuildConfiguration *bc = buildConfigurationFactory()->restore(); QMap<QString, QVariant> temp = reader.restoreValue("buildConfiguration-" + buildConfigurationName).toMap(); bc->setValuesFromMap(temp); // Restore build steps - QVariant buildStepsValueVariant = reader.restoreValue("buildconfiguration-" + bc->name() + "-buildsteps"); + QVariant buildStepsValueVariant = reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-buildsteps"); if(buildStepsValueVariant.isValid()) { int pos = 0; QStringList buildStepNames = buildStepsValueVariant.toStringList(); @@ -248,7 +241,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) QMap<QString, QVariant> buildStepValues = reader.restoreValue("buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->restoreFromGlobalMap(buildStepValues); buildStepValues = - reader.restoreValue("buildconfiguration-" + bc->name() + "-buildstep" + QString().setNum(buildstepnr)).toMap(); + reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->restoreFromLocalMap(buildStepValues); bc->insertBuildStep(pos, buildStep); ++pos; @@ -256,7 +249,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } } // Restore clean steps - QVariant cleanStepsValueVariant = reader.restoreValue("buildconfiguration-" + bc->name() + "-cleansteps"); + QVariant cleanStepsValueVariant = reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-cleansteps"); if(cleanStepsValueVariant.isValid()) { int pos = 0; QStringList cleanStepNames = cleanStepsValueVariant.toStringList(); @@ -275,7 +268,7 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) QMap<QString, QVariant> buildStepValues = reader.restoreValue("cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->restoreFromGlobalMap(buildStepValues); buildStepValues = - reader.restoreValue("buildconfiguration-" + bc->name() + "-cleanstep" + QString().setNum(cleanstepnr)).toMap(); + reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->restoreFromLocalMap(buildStepValues); bc->insertCleanStep(pos, cleanStep); ++pos; @@ -284,6 +277,10 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } } + // Set Active Configuration + QString activeConfigurationName = reader.restoreValue("activebuildconfiguration").toString(); + m_activeBuildConfiguration = buildConfigurations().at(buildConfigurationNames.indexOf(activeConfigurationName)); + //Build Settings QVariant buildStepsVariant = reader.restoreValue("buildsteps"); if (buildStepsVariant.isValid()) { @@ -302,13 +299,14 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } } if (factory) { - foreach(BuildConfiguration *bc, buildConfigurations()) { - buildStep = factory->create(bc, buildStepName); - bc->insertBuildStep(pos, buildStep); + const QList<BuildConfiguration *> &bcs = buildConfigurations(); + for(int i = 0; i < bcs.size(); ++i) { + buildStep = factory->create(bcs.at(i), buildStepName); + bcs.at(i)->insertBuildStep(pos, buildStep); QMap<QString, QVariant> buildStepValues = reader.restoreValue("buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->restoreFromGlobalMap(buildStepValues); buildStepValues = - reader.restoreValue("buildconfiguration-" + bc->name() + "-buildstep" + QString().setNum(buildstepnr)).toMap(); + reader.restoreValue("buildconfiguration-" + QString::number(i) + "-buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->restoreFromLocalMap(buildStepValues); } ++pos; @@ -334,13 +332,14 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } if (factory) { - foreach(BuildConfiguration *bc, buildConfigurations()) { - cleanStep = factory->create(bc, cleanStepName); - bc->insertCleanStep(pos, cleanStep); + const QList<BuildConfiguration *> &bcs = buildConfigurations(); + for (int i = 0; i < bcs.size(); ++i) { + cleanStep = factory->create(bcs.at(i), cleanStepName); + bcs.at(i)->insertCleanStep(pos, cleanStep); QMap<QString, QVariant> cleanStepValues = reader.restoreValue("cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->restoreFromGlobalMap(cleanStepValues); QMap<QString, QVariant> buildStepValues = - reader.restoreValue("buildconfiguration-" + bc->name() + "-cleanstep" + QString().setNum(cleanstepnr)).toMap(); + reader.restoreValue("buildconfiguration-" + QString::number(i) + "-cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->restoreFromLocalMap(buildStepValues); } ++pos; @@ -396,23 +395,15 @@ QVariant Project::value(const QString &name) const return QVariant(); } -BuildConfiguration *Project::buildConfiguration(const QString &name) const -{ - for (int i = 0; i != m_buildConfigurationValues.size(); ++i) - if (m_buildConfigurationValues.at(i)->name() == name) - return m_buildConfigurationValues.at(i); - return 0; -} - BuildConfiguration *Project::activeBuildConfiguration() const { - return buildConfiguration(m_activeBuildConfiguration); //TODO + return m_activeBuildConfiguration; //TODO } void Project::setActiveBuildConfiguration(BuildConfiguration *configuration) { - if (m_activeBuildConfiguration != configuration->name() && m_buildConfigurationValues.contains(configuration)) { - m_activeBuildConfiguration = configuration->name(); + if (m_activeBuildConfiguration != configuration && m_buildConfigurationValues.contains(configuration)) { + m_activeBuildConfiguration = configuration; emit activeBuildConfigurationChanged(); } } @@ -486,7 +477,7 @@ void Project::setDisplayNameFor(BuildConfiguration *configuration, const QString configuration->setDisplayName(displayName); - emit buildConfigurationDisplayNameChanged(configuration->name()); + emit buildConfigurationDisplayNameChanged(configuration); } QByteArray Project::predefinedMacros(const QString &) const diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 2e7e43a6972806a66a38fedeb7cb4475c0e36554..f999527703f31f3f275cd6f9dd8f90eedbf30a93 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -87,7 +87,6 @@ public: void addBuildConfiguration(BuildConfiguration *configuration); void removeBuildConfiguration(BuildConfiguration *configuration); - BuildConfiguration *buildConfiguration(const QString & name) const; QList<BuildConfiguration *> buildConfigurations() const; // remove and add "QString uniqueConfigurationDisplayName(const QString &proposedName) const" instead void setDisplayNameFor(BuildConfiguration *configuration, const QString &displayName); @@ -146,12 +145,12 @@ signals: void removedRunConfiguration(ProjectExplorer::Project *p, const QString &name); void addedRunConfiguration(ProjectExplorer::Project *p, const QString &name); - void removedBuildConfiguration(ProjectExplorer::Project *p, const QString &name); - void addedBuildConfiguration(ProjectExplorer::Project *p, const QString &name); + void removedBuildConfiguration(ProjectExplorer::Project *p, BuildConfiguration *bc); + void addedBuildConfiguration(ProjectExplorer::Project *p, BuildConfiguration *bc); // This signal is jut there for updating the tree list in the buildsettings wizard - void buildConfigurationDisplayNameChanged(const QString &buildConfiguration); - void environmentChanged(const QString &buildConfiguration); + void buildConfigurationDisplayNameChanged(BuildConfiguration *bc); + void environmentChanged(BuildConfiguration *bc); protected: /* This method is called when the project .user file is saved. Simply call @@ -175,7 +174,7 @@ protected: private: QMap<QString, QVariant> m_values; QList<BuildConfiguration *> m_buildConfigurationValues; - QString m_activeBuildConfiguration; + BuildConfiguration *m_activeBuildConfiguration; QList<RunConfiguration *> m_runConfigurations; RunConfiguration* m_activeRunConfiguration; EditorConfiguration *m_editorConfiguration; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 1693c398df759b4883b89b43d4716bc07ae339dd..2f2da8c6e0ad722dc988d4fee973f3a9814a532d 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1424,20 +1424,7 @@ void ProjectExplorerPlugin::buildProjectOnly() qDebug() << "ProjectExplorerPlugin::buildProjectOnly"; if (saveModifiedFiles()) - buildManager()->buildProject(d->m_currentProject, d->m_currentProject->activeBuildConfiguration()->name()); -} - -static QStringList configurations(const QList<Project *> &projects) -{ - QStringList result; - foreach (const Project * pro, projects) { - if (BuildConfiguration *bc = pro->activeBuildConfiguration()) { - result << bc->name(); - } else { - result << QString::null; - } - } - return result; + buildManager()->buildProject(d->m_currentProject->activeBuildConfiguration()); } void ProjectExplorerPlugin::buildProject() @@ -1446,8 +1433,11 @@ void ProjectExplorerPlugin::buildProject() qDebug() << "ProjectExplorerPlugin::buildProject"; if (saveModifiedFiles()) { - const QList<Project *> & projects = d->m_session->projectOrder(d->m_currentProject); - d->m_buildManager->buildProjects(projects, configurations(projects)); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, d->m_session->projectOrder(d->m_currentProject)) + configurations << pro->activeBuildConfiguration(); + + d->m_buildManager->buildProjects(configurations); } } @@ -1457,8 +1447,10 @@ void ProjectExplorerPlugin::buildSession() qDebug() << "ProjectExplorerPlugin::buildSession"; if (saveModifiedFiles()) { - const QList<Project *> & projects = d->m_session->projectOrder(); - d->m_buildManager->buildProjects(projects, configurations(projects)); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, d->m_session->projectOrder()) + configurations << pro->activeBuildConfiguration(); + d->m_buildManager->buildProjects(configurations); } } @@ -1468,8 +1460,8 @@ void ProjectExplorerPlugin::rebuildProjectOnly() qDebug() << "ProjectExplorerPlugin::rebuildProjectOnly"; if (saveModifiedFiles()) { - d->m_buildManager->cleanProject(d->m_currentProject, d->m_currentProject->activeBuildConfiguration()->name()); - d->m_buildManager->buildProject(d->m_currentProject, d->m_currentProject->activeBuildConfiguration()->name()); + d->m_buildManager->cleanProject(d->m_currentProject->activeBuildConfiguration()); + d->m_buildManager->buildProject(d->m_currentProject->activeBuildConfiguration()); } } @@ -1479,11 +1471,13 @@ void ProjectExplorerPlugin::rebuildProject() qDebug() << "ProjectExplorerPlugin::rebuildProject"; if (saveModifiedFiles()) { - const QList<Project *> & projects = d->m_session->projectOrder(d->m_currentProject); - const QStringList configs = configurations(projects); + const QList<Project *> &projects = d->m_session->projectOrder(d->m_currentProject); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, projects) + configurations << pro->activeBuildConfiguration(); - d->m_buildManager->cleanProjects(projects, configs); - d->m_buildManager->buildProjects(projects, configs); + d->m_buildManager->cleanProjects(configurations); + d->m_buildManager->buildProjects(configurations); } } @@ -1494,10 +1488,12 @@ void ProjectExplorerPlugin::rebuildSession() if (saveModifiedFiles()) { const QList<Project *> & projects = d->m_session->projectOrder(); - const QStringList configs = configurations(projects); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, projects) + configurations << pro->activeBuildConfiguration(); - d->m_buildManager->cleanProjects(projects, configs); - d->m_buildManager->buildProjects(projects, configs); + d->m_buildManager->cleanProjects(configurations); + d->m_buildManager->buildProjects(configurations); } } @@ -1507,7 +1503,7 @@ void ProjectExplorerPlugin::cleanProjectOnly() qDebug() << "ProjectExplorerPlugin::cleanProjectOnly"; if (saveModifiedFiles()) - d->m_buildManager->cleanProject(d->m_currentProject, d->m_currentProject->activeBuildConfiguration()->name()); + d->m_buildManager->cleanProject(d->m_currentProject->activeBuildConfiguration()); } void ProjectExplorerPlugin::cleanProject() @@ -1517,7 +1513,10 @@ void ProjectExplorerPlugin::cleanProject() if (saveModifiedFiles()) { const QList<Project *> & projects = d->m_session->projectOrder(d->m_currentProject); - d->m_buildManager->cleanProjects(projects, configurations(projects)); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, projects) + configurations << pro->activeBuildConfiguration(); + d->m_buildManager->cleanProjects(configurations); } } @@ -1528,21 +1527,24 @@ void ProjectExplorerPlugin::cleanSession() if (saveModifiedFiles()) { const QList<Project *> & projects = d->m_session->projectOrder(); - d->m_buildManager->cleanProjects(projects, configurations(projects)); + QList<BuildConfiguration *> configurations; + foreach (Project *pro, projects) + configurations << pro->activeBuildConfiguration(); + d->m_buildManager->cleanProjects(configurations); } } void ProjectExplorerPlugin::runProject() { - runProjectImpl(startupProject()); + runProjectImpl(startupProject(), ProjectExplorer::Constants::RUNMODE); } void ProjectExplorerPlugin::runProjectContextMenu() { - runProjectImpl(d->m_currentProject); + runProjectImpl(d->m_currentProject, ProjectExplorer::Constants::RUNMODE); } -void ProjectExplorerPlugin::runProjectImpl(Project *pro) +void ProjectExplorerPlugin::runProjectImpl(Project *pro, QString mode) { if (!pro) return; @@ -1553,16 +1555,21 @@ void ProjectExplorerPlugin::runProjectImpl(Project *pro) return; } if (saveModifiedFiles()) { - d->m_runMode = ProjectExplorer::Constants::RUNMODE; + d->m_runMode = mode; d->m_delayedRunConfiguration = pro->activeRunConfiguration(); const QList<Project *> & projects = d->m_session->projectOrder(pro); - d->m_buildManager->buildProjects(projects, configurations(projects)); + QList<BuildConfiguration *> configurations; + foreach(Project *pro, projects) + configurations << pro->activeBuildConfiguration(); + d->m_buildManager->buildProjects(configurations); + + updateRunAction(); } } else { // TODO this ignores RunConfiguration::isEnabled() if (saveModifiedFiles()) - executeRunConfiguration(pro->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); + executeRunConfiguration(pro->activeRunConfiguration(), mode); } } @@ -1572,25 +1579,7 @@ void ProjectExplorerPlugin::debugProject() if (!pro || d->m_debuggingRunControl ) return; - if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasBuildSettings()) { - if (!pro->activeRunConfiguration()->isEnabled()) { - if (!showBuildConfigDialog()) - return; - } - if (saveModifiedFiles()) { - d->m_runMode = ProjectExplorer::Constants::DEBUGMODE; - d->m_delayedRunConfiguration = pro->activeRunConfiguration(); - - const QList<Project *> & projects = d->m_session->projectOrder(pro); - d->m_buildManager->buildProjects(projects, configurations(projects)); - - updateRunAction(); - } - } else { - // TODO this ignores RunConfiguration::isEnabled() - if (saveModifiedFiles()) - executeRunConfiguration(pro->activeRunConfiguration(), ProjectExplorer::Constants::DEBUGMODE); - } + runProjectImpl(pro, ProjectExplorer::Constants::DEBUGMODE); } bool ProjectExplorerPlugin::showBuildConfigDialog() @@ -1965,14 +1954,14 @@ void ProjectExplorerPlugin::populateBuildConfigurationMenu() d->m_buildConfigurationMenu->clear(); if (Project *pro = d->m_currentProject) { const BuildConfiguration *activeBC = pro->activeBuildConfiguration(); - foreach (const BuildConfiguration *bc, pro->buildConfigurations()) { + foreach (BuildConfiguration *bc, pro->buildConfigurations()) { QString displayName = bc->displayName(); QAction *act = new QAction(displayName, d->m_buildConfigurationActionGroup); if (debug) - qDebug() << "BuildConfiguration " << bc->name() << "active: " << activeBC->name(); + qDebug() << "BuildConfiguration " << bc->displayName() << "active: " << activeBC->displayName(); act->setCheckable(true); act->setChecked(bc == activeBC); - act->setData(bc->name()); + act->setData(QVariant::fromValue(bc)); d->m_buildConfigurationMenu->addAction(act); } d->m_buildConfigurationMenu->setEnabled(true); @@ -1986,8 +1975,7 @@ void ProjectExplorerPlugin::buildConfigurationMenuTriggered(QAction *action) if (debug) qDebug() << "ProjectExplorerPlugin::buildConfigurationMenuTriggered"; - d->m_currentProject->setActiveBuildConfiguration(d->m_currentProject->buildConfiguration( - action->data().toString())); + d->m_currentProject->setActiveBuildConfiguration(action->data().value<BuildConfiguration *>()); } void ProjectExplorerPlugin::populateRunConfigurationMenu() @@ -2136,9 +2124,6 @@ Internal::ProjectExplorerSettings ProjectExplorerPlugin::projectExplorerSettings return d->m_projectExplorerSettings; } -// ---------- BuildConfigDialog ----------- -Q_DECLARE_METATYPE(BuildConfiguration*); - BuildConfigDialog::BuildConfigDialog(Project *project, QWidget *parent) : QDialog(parent), m_project(project) @@ -2173,7 +2158,7 @@ BuildConfigDialog::BuildConfigDialog(Project *project, QWidget *parent) RunConfiguration *activeRun = m_project->activeRunConfiguration(); foreach (BuildConfiguration *config, m_project->buildConfigurations()) { if (activeRun->isEnabled(config)) { - m_configCombo->addItem(config->name(), qVariantFromValue(config)); + m_configCombo->addItem(config->displayName(), QVariant::fromValue(config)); } } if (m_configCombo->count() == 0) { diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index b8ea2d8d8b837a5adb326c24bab5a12eb85f1179..10dc691e737d57ce939d07a8c95769df1f9b625b 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -215,7 +215,7 @@ private slots: void currentModeChanged(Core::IMode *mode); private: - void runProjectImpl(Project *pro); + void runProjectImpl(Project *pro, QString mode); void executeRunConfiguration(RunConfiguration *, const QString &mode); bool showBuildConfigDialog(); diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 5fc16bafc32279903254c6db04b36421dc7746c2..b67f6be4f3042a9f1f0ca1ad30223d75f947fcb4 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -512,7 +512,7 @@ BuildConfigurationComboBox::BuildConfigurationComboBox(Project *p, QWidget *pare //m_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); foreach(const BuildConfiguration *buildConfiguration, p->buildConfigurations()) - m_comboBox->addItem(buildConfiguration->displayName(), buildConfiguration->name()); + m_comboBox->addItem(buildConfiguration->displayName(), buildConfiguration); if (p->buildConfigurations().count() == 1) { m_label->setText(m_comboBox->itemText(0)); setCurrentWidget(m_label); @@ -522,14 +522,14 @@ BuildConfigurationComboBox::BuildConfigurationComboBox(Project *p, QWidget *pare if (index != -1) m_comboBox->setCurrentIndex(index); - connect(p, SIGNAL(buildConfigurationDisplayNameChanged(QString)), - this, SLOT(nameChanged(QString))); + connect(p, SIGNAL(buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *)), + this, SLOT(nameChanged(ProjectExplorer::BuildConfiguration *))); connect(p, SIGNAL(activeBuildConfigurationChanged()), this, SLOT(activeConfigurationChanged())); - connect(p, SIGNAL(addedBuildConfiguration(ProjectExplorer::Project *, QString)), - this, SLOT(addedBuildConfiguration(ProjectExplorer::Project *, QString))); - connect(p, SIGNAL(removedBuildConfiguration(ProjectExplorer::Project *, QString)), - this, SLOT(removedBuildConfiguration(ProjectExplorer::Project *, QString))); + connect(p, SIGNAL(addedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *)), + this, SLOT(addedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *))); + connect(p, SIGNAL(removedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *)), + this, SLOT(removedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *))); connect(m_comboBox, SIGNAL(activated(int)), this, SLOT(changedIndex(int))); } @@ -539,28 +539,28 @@ BuildConfigurationComboBox::~BuildConfigurationComboBox() } -void BuildConfigurationComboBox::nameChanged(const QString &buildConfiguration) +void BuildConfigurationComboBox::nameChanged(BuildConfiguration *bc) { - int index = nameToIndex(buildConfiguration); + int index = nameToIndex(bc); if (index == -1) return; - const QString &displayName = m_project->buildConfiguration(buildConfiguration)->displayName(); + const QString &displayName = bc->displayName(); m_comboBox->setItemText(index, displayName); if (m_comboBox->count() == 1) m_label->setText(displayName); } -int BuildConfigurationComboBox::nameToIndex(const QString &buildConfiguration) +int BuildConfigurationComboBox::nameToIndex(BuildConfiguration *bc) { for (int i=0; i < m_comboBox->count(); ++i) - if (m_comboBox->itemData(i) == buildConfiguration) + if (m_comboBox->itemData(i).value<BuildConfiguration *>() == bc) return i; return -1; } void BuildConfigurationComboBox::activeConfigurationChanged() { - int index = nameToIndex(m_project->activeBuildConfiguration()->name()); + int index = nameToIndex(m_project->activeBuildConfiguration()); if (index == -1) return; ignoreIndexChange = true; @@ -568,20 +568,20 @@ void BuildConfigurationComboBox::activeConfigurationChanged() ignoreIndexChange = false; } -void BuildConfigurationComboBox::addedBuildConfiguration(ProjectExplorer::Project *,const QString &buildConfiguration) +void BuildConfigurationComboBox::addedBuildConfiguration(ProjectExplorer::Project *,BuildConfiguration *bc) { ignoreIndexChange = true; - m_comboBox->addItem(m_project->buildConfiguration(buildConfiguration)->displayName(), buildConfiguration); + m_comboBox->addItem(bc->displayName(), QVariant::fromValue(bc)); if (m_comboBox->count() == 2) setCurrentWidget(m_comboBox); ignoreIndexChange = false; } -void BuildConfigurationComboBox::removedBuildConfiguration(ProjectExplorer::Project *, const QString &buildConfiguration) +void BuildConfigurationComboBox::removedBuildConfiguration(ProjectExplorer::Project *, BuildConfiguration *bc) { ignoreIndexChange = true; - int index = nameToIndex(buildConfiguration); + int index = nameToIndex(bc); m_comboBox->removeItem(index); if (m_comboBox->count() == 1) { m_label->setText(m_comboBox->itemText(0)); @@ -594,8 +594,7 @@ void BuildConfigurationComboBox::changedIndex(int newIndex) { if (newIndex == -1) return; - m_project->setActiveBuildConfiguration( - m_project->buildConfiguration(m_comboBox->itemData(newIndex).toString())); + m_project->setActiveBuildConfiguration(m_comboBox->itemData(newIndex).value<BuildConfiguration *>()); } /// diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index a99e9fb66c6bb1d5e935bed0614b517fd0017894..70c58890b9ca626c12c9db867e19b0e200a1ce5c 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -56,6 +56,7 @@ class IPropertiesPanel; class Project; class ProjectExplorerPlugin; class SessionManager; +class BuildConfiguration; namespace Internal { @@ -100,13 +101,13 @@ public: BuildConfigurationComboBox(ProjectExplorer::Project *p, QWidget *parent = 0); ~BuildConfigurationComboBox(); private slots: - void nameChanged(const QString &buildConfiguration); + void nameChanged(ProjectExplorer::BuildConfiguration *bc); void activeConfigurationChanged(); - void addedBuildConfiguration(ProjectExplorer::Project *, const QString &buildConfiguration); - void removedBuildConfiguration(ProjectExplorer::Project *, const QString &buildConfiguration); + void addedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *bc); + void removedBuildConfiguration(ProjectExplorer::Project *, ProjectExplorer::BuildConfiguration *bc); void changedIndex(int newIndex); private: - int nameToIndex(const QString &buildConfiguration); + int nameToIndex(ProjectExplorer::BuildConfiguration *bc); bool ignoreIndexChange; ProjectExplorer::Project *m_project; QComboBox *m_comboBox; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 05d90274633624921990a7e1f00975e5ad5934fb..91e4846f98774bb88039f1dd7548b6065d8b8c9f 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -34,14 +34,14 @@ using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; using ProjectExplorer::BuildConfiguration; -Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Project *pro, const QString &name) - : BuildConfiguration(pro, name) +Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Project *pro) + : BuildConfiguration(pro) { } -Qt4BuildConfiguration::Qt4BuildConfiguration(const QString &name, Qt4BuildConfiguration *source) - : BuildConfiguration(name, source) +Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4BuildConfiguration *source) + : BuildConfiguration(source) { } diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 8ea2cd81160b03e0d996e0ded10f68f49449b050..ad66b4f177f0f782742f6417c305eebf1a2d97ee 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -41,9 +41,9 @@ namespace Internal { class Qt4BuildConfiguration : public ProjectExplorer::BuildConfiguration { public: - Qt4BuildConfiguration(Qt4Project *pro, const QString &name); + Qt4BuildConfiguration(Qt4Project *pro); // copy ctor - Qt4BuildConfiguration(const QString &name, Qt4BuildConfiguration *source); + Qt4BuildConfiguration(Qt4BuildConfiguration *source); ~Qt4BuildConfiguration(); }; diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp index 2edd8cfeb77c455d4ec94c407be89a8fafa7e226..16d64842ae76e5038f78dce2af1a779feed0a4f9 100644 --- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp @@ -42,7 +42,7 @@ using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; Qt4BuildEnvironmentWidget::Qt4BuildEnvironmentWidget(Qt4Project *project) - : BuildConfigWidget(), m_pro(project) + : BuildConfigWidget(), m_pro(project), m_buildConfiguration(0) { QVBoxLayout *vbox = new QVBoxLayout(this); vbox->setMargin(0); @@ -65,28 +65,25 @@ QString Qt4BuildEnvironmentWidget::displayName() const return tr("Build Environment"); } -void Qt4BuildEnvironmentWidget::init(const QString &buildConfiguration) +void Qt4BuildEnvironmentWidget::init(ProjectExplorer::BuildConfiguration *bc) { if (debug) qDebug() << "Qt4BuildConfigWidget::init()"; - m_buildConfiguration = buildConfiguration; - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(buildConfiguration); - m_clearSystemEnvironmentCheckBox->setChecked(!m_pro->useSystemEnvironment(bc)); - m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(bc)); - m_buildEnvironmentWidget->setUserChanges(m_pro->userEnvironmentChanges(bc)); + m_buildConfiguration = bc; + m_clearSystemEnvironmentCheckBox->setChecked(!m_pro->useSystemEnvironment(m_buildConfiguration)); + m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(m_buildConfiguration)); + m_buildEnvironmentWidget->setUserChanges(m_pro->userEnvironmentChanges(m_buildConfiguration)); m_buildEnvironmentWidget->updateButtons(); } void Qt4BuildEnvironmentWidget::environmentModelUserChangesUpdated() { - m_pro->setUserEnvironmentChanges(m_pro->buildConfiguration(m_buildConfiguration), - m_buildEnvironmentWidget->userChanges()); + m_pro->setUserEnvironmentChanges(m_buildConfiguration, m_buildEnvironmentWidget->userChanges()); } void Qt4BuildEnvironmentWidget::clearSystemEnvironmentCheckBoxClicked(bool checked) { - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - m_pro->setUseSystemEnvironment(bc, !checked); - m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(bc)); + m_pro->setUseSystemEnvironment(m_buildConfiguration, !checked); + m_buildEnvironmentWidget->setBaseEnvironment(m_pro->baseEnvironment(m_buildConfiguration)); } diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h index c6c9d259e007cdbd958d177ce868d5d52a2c9ce3..7f565e73a28c987c486d7ea3d02cdc25328d6f8c 100644 --- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h +++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h @@ -53,7 +53,7 @@ public: Qt4BuildEnvironmentWidget(Qt4Project *project); QString displayName() const; - void init(const QString &buildConfiguration); + void init(ProjectExplorer::BuildConfiguration *bc); private slots: void environmentModelUserChangesUpdated(); @@ -63,7 +63,7 @@ private: ProjectExplorer::EnvironmentWidget *m_buildEnvironmentWidget; QCheckBox *m_clearSystemEnvironmentCheckBox; Qt4Project *m_pro; - QString m_buildConfiguration; + ProjectExplorer::BuildConfiguration *m_buildConfiguration; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index fdfa6ff5512f3175cc5628f1e7c73b0db1e7e9e1..d5f986e9dd82b3396aa5a280ac857313c5aa55aa 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -297,17 +297,17 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(const QString &type) co return bc; } -BuildConfiguration *Qt4BuildConfigurationFactory::clone(const QString &name, BuildConfiguration *source) const +BuildConfiguration *Qt4BuildConfigurationFactory::clone(BuildConfiguration *source) const { Qt4BuildConfiguration *oldbc = static_cast<Qt4BuildConfiguration *>(source); - Qt4BuildConfiguration *newbc = new Qt4BuildConfiguration(name, oldbc); + Qt4BuildConfiguration *newbc = new Qt4BuildConfiguration(oldbc); m_project->addBuildConfiguration(newbc); return newbc; } -BuildConfiguration *Qt4BuildConfigurationFactory::restore(const QString &name) const +BuildConfiguration *Qt4BuildConfigurationFactory::restore() const { - Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(m_project, name); + Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(m_project); return bc; } @@ -459,7 +459,8 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString buildConfigu bool debug = qmakeBuildConfiguration & QtVersion::DebugBuild; // Add the buildconfiguration - Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this, buildConfigurationName); + Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this); + bc->setDisplayName(buildConfigurationName); addBuildConfiguration(bc); QMakeStep *qmakeStep = new QMakeStep(bc); @@ -890,7 +891,7 @@ void Qt4Project::setUseSystemEnvironment(BuildConfiguration *configuration, bool if (useSystemEnvironment(configuration) == b) return; configuration->setValue("clearSystemEnvironment", !b); - emit environmentChanged(configuration->name()); + emit environmentChanged(configuration); } bool Qt4Project::useSystemEnvironment(BuildConfiguration *configuration) const @@ -911,7 +912,7 @@ void Qt4Project::setUserEnvironmentChanges(BuildConfiguration *configuration, co if (list == configuration->value("userEnvironmentChanges").toStringList()) return; configuration->setValue("userEnvironmentChanges", list); - emit environmentChanged(configuration->name()); + emit environmentChanged(configuration); } QString Qt4Project::qtDir(BuildConfiguration *configuration) const @@ -931,7 +932,7 @@ int Qt4Project::qtVersionId(BuildConfiguration *configuration) const { QtVersionManager *vm = QtVersionManager::instance(); if (debug) - qDebug()<<"Looking for qtVersion ID of "<<configuration->name(); + qDebug()<<"Looking for qtVersion ID of "<<configuration->displayName(); int id = 0; QVariant vid = configuration->value(KEY_QT_VERSION_ID); if (vid.isValid()) { diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index e0faac766c3156e0c2635357d0affdcac7f603f0..78494cde3f82aa923912005fc6db29fa952c3494 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -132,8 +132,8 @@ public: QString displayNameForType(const QString &type) const; ProjectExplorer::BuildConfiguration *create(const QString &type) const; - ProjectExplorer::BuildConfiguration *clone(const QString &name, ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *restore(const QString &name) const; + ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::BuildConfiguration *source) const; + ProjectExplorer::BuildConfiguration *restore() const; void update(); diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index fdafc76416fe21493073626984e069aa4c972471..1a80dc1f1a7969d632ec639393b8bc58e0d70ba3 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -53,7 +53,8 @@ using namespace Qt4ProjectManager::Internal; Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4Project *project) : BuildConfigWidget(), - m_pro(project) + m_pro(project), + m_buildConfiguration(0) { QVBoxLayout *vbox = new QVBoxLayout(this); vbox->setMargin(0); @@ -111,10 +112,9 @@ Qt4ProjectConfigWidget::~Qt4ProjectConfigWidget() void Qt4ProjectConfigWidget::updateDetails() { - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - QtVersion *version = m_pro->qtVersion(bc); + QtVersion *version = m_pro->qtVersion(m_buildConfiguration); QString versionString; - if (m_pro->qtVersionId(bc) == 0) { + if (m_pro->qtVersionId(m_buildConfiguration) == 0) { versionString = tr("Default Qt Version (%1)").arg(version->name()); } else if(version){ versionString = version->name(); @@ -126,8 +126,8 @@ void Qt4ProjectConfigWidget::updateDetails() "with tool chain <b>%2</b><br>" "building in <b>%3</b>") .arg(versionString, - ProjectExplorer::ToolChain::toolChainName(m_pro->toolChainType(bc)), - QDir::toNativeSeparators(m_pro->buildDirectory(bc)))); + ProjectExplorer::ToolChain::toolChainName(m_pro->toolChainType(m_buildConfiguration)), + QDir::toNativeSeparators(m_pro->buildDirectory(m_buildConfiguration)))); } void Qt4ProjectConfigWidget::manageQtVersions() @@ -142,22 +142,21 @@ QString Qt4ProjectConfigWidget::displayName() const return tr("General"); } -void Qt4ProjectConfigWidget::init(const QString &buildConfiguration) +void Qt4ProjectConfigWidget::init(ProjectExplorer::BuildConfiguration *bc) { if (debug) - qDebug() << "Qt4ProjectConfigWidget::init() for"<<buildConfiguration; + qDebug() << "Qt4ProjectConfigWidget::init() for"<<bc->displayName(); - m_buildConfiguration = buildConfiguration; - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(buildConfiguration); - m_ui->nameLineEdit->setText(bc->displayName()); + m_buildConfiguration = bc; + m_ui->nameLineEdit->setText(m_buildConfiguration->displayName()); setupQtVersionsComboBox(); - bool shadowBuild = bc->value("useShadowBuild").toBool(); + bool shadowBuild = m_buildConfiguration->value("useShadowBuild").toBool(); m_ui->shadowBuildCheckBox->setChecked(shadowBuild); m_ui->shadowBuildDirEdit->setEnabled(shadowBuild); m_browseButton->setEnabled(shadowBuild); - m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(bc)); + m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(m_buildConfiguration)); updateImportLabel(); updateToolChainCombo(); updateDetails(); @@ -165,12 +164,12 @@ void Qt4ProjectConfigWidget::init(const QString &buildConfiguration) void Qt4ProjectConfigWidget::changeConfigName(const QString &newName) { - m_pro->setDisplayNameFor(m_pro->buildConfiguration(m_buildConfiguration), newName); + m_pro->setDisplayNameFor(m_buildConfiguration, newName); } void Qt4ProjectConfigWidget::setupQtVersionsComboBox() { - if (m_buildConfiguration.isEmpty()) // not yet initialized + if (!m_buildConfiguration) // not yet initialized return; disconnect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)), @@ -181,7 +180,7 @@ void Qt4ProjectConfigWidget::setupQtVersionsComboBox() m_ui->qtVersionComboBox->clear(); m_ui->qtVersionComboBox->addItem(tr("Default Qt Version (%1)").arg(vm->defaultVersion()->name()), 0); - int qtVersionId = m_pro->qtVersionId(m_pro->buildConfiguration(m_buildConfiguration)); + int qtVersionId = m_pro->qtVersionId(m_buildConfiguration); if (qtVersionId == 0) { m_ui->qtVersionComboBox->setCurrentIndex(0); @@ -215,12 +214,11 @@ void Qt4ProjectConfigWidget::shadowBuildCheckBoxClicked(bool checked) m_ui->shadowBuildDirEdit->setEnabled(checked); m_browseButton->setEnabled(checked); bool b = m_ui->shadowBuildCheckBox->isChecked(); - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - bc->setValue("useShadowBuild", b); + m_buildConfiguration->setValue("useShadowBuild", b); if (b) - bc->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path()); + m_buildConfiguration->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path()); else - bc->setValue("buildDirectory", QVariant(QString::null)); + m_buildConfiguration->setValue("buildDirectory", QVariant(QString::null)); updateDetails(); m_pro->invalidateCachedTargetInformation(); updateImportLabel(); @@ -231,10 +229,9 @@ void Qt4ProjectConfigWidget::updateImportLabel() bool visible = false; // we only show if we actually have a qmake and makestep - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - if (m_pro->qmakeStep(bc) && m_pro->makeStep(bc)) { - QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(m_pro->buildDirectory(bc)); - QtVersion *version = m_pro->qtVersion(bc); + if (m_pro->qmakeStep(m_buildConfiguration) && m_pro->makeStep(m_buildConfiguration)) { + QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(m_pro->buildDirectory(m_buildConfiguration)); + QtVersion *version = m_pro->qtVersion(m_buildConfiguration); // check that there's a makefile if (!qmakePath.isEmpty()) { // and that the qmake path is different from the current version @@ -243,7 +240,7 @@ void Qt4ProjectConfigWidget::updateImportLabel() visible = true; } else { // check that the qmake flags, arguments match - visible = !m_pro->compareBuildConfigurationToImportFrom(bc, m_pro->buildDirectory(bc)); + visible = !m_pro->compareBuildConfigurationToImportFrom(m_buildConfiguration, m_pro->buildDirectory(m_buildConfiguration)); } } else { visible = false; @@ -255,10 +252,9 @@ void Qt4ProjectConfigWidget::updateImportLabel() void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged() { - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - if (bc->value("buildDirectory").toString() == m_ui->shadowBuildDirEdit->path()) + if (m_buildConfiguration->value("buildDirectory").toString() == m_ui->shadowBuildDirEdit->path()) return; - bc->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path()); + m_buildConfiguration->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path()); // if the directory already exists // check if we have a build in there and // offer to import it @@ -270,10 +266,9 @@ void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged() void Qt4ProjectConfigWidget::importLabelClicked() { - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - if (!m_pro->qmakeStep(bc) || !m_pro->makeStep(bc)) + if (!m_pro->qmakeStep(m_buildConfiguration) || !m_pro->makeStep(m_buildConfiguration)) return; - QString directory = m_pro->buildDirectory(bc); + QString directory = m_pro->buildDirectory(m_buildConfiguration); if (!directory.isEmpty()) { QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(directory); if (!qmakePath.isEmpty()) { @@ -298,14 +293,14 @@ void Qt4ProjectConfigWidget::importLabelClicked() } // So we got all the information now apply it... - m_pro->setQtVersion(bc, version->uniqueId()); + m_pro->setQtVersion(m_buildConfiguration, version->uniqueId()); // Combo box will be updated at the end - QMakeStep *qmakeStep = m_pro->qmakeStep(bc); + QMakeStep *qmakeStep = m_pro->qmakeStep(m_buildConfiguration); qmakeStep->setQMakeArguments(additionalArguments); - MakeStep *makeStep = m_pro->makeStep(bc); + MakeStep *makeStep = m_pro->makeStep(m_buildConfiguration); - bc->setValue("buildConfiguration", int(qmakeBuildConfig)); + m_buildConfiguration->setValue("buildConfiguration", int(qmakeBuildConfig)); // Adjust command line arguments, this is ugly as hell // If we are switching to BuildAll we want "release" in there and no "debug" // or "debug" in there and no "release" @@ -340,8 +335,8 @@ void Qt4ProjectConfigWidget::qtVersionComboBoxCurrentIndexChanged(const QString QtVersionManager *vm = QtVersionManager::instance(); bool isValid = vm->version(newQtVersion)->isValid(); m_ui->invalidQtWarningLabel->setVisible(!isValid); - if (newQtVersion != m_pro->qtVersionId(m_pro->buildConfiguration(m_buildConfiguration))) { - m_pro->setQtVersion(m_pro->buildConfiguration(m_buildConfiguration), newQtVersion); + if (newQtVersion != m_pro->qtVersionId(m_buildConfiguration)) { + m_pro->setQtVersion(m_buildConfiguration, newQtVersion); updateToolChainCombo(); m_pro->update(); } @@ -351,14 +346,13 @@ void Qt4ProjectConfigWidget::qtVersionComboBoxCurrentIndexChanged(const QString void Qt4ProjectConfigWidget::updateToolChainCombo() { m_ui->toolChainComboBox->clear(); - ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration); - QList<ProjectExplorer::ToolChain::ToolChainType> toolchains = m_pro->qtVersion(bc)->possibleToolChainTypes(); + QList<ProjectExplorer::ToolChain::ToolChainType> toolchains = m_pro->qtVersion(m_buildConfiguration)->possibleToolChainTypes(); using namespace ProjectExplorer; foreach (ToolChain::ToolChainType toolchain, toolchains) { m_ui->toolChainComboBox->addItem(ToolChain::toolChainName(toolchain), qVariantFromValue(toolchain)); } m_ui->toolChainComboBox->setEnabled(toolchains.size() > 1); - setToolChain(toolchains.indexOf(m_pro->toolChainType(bc))); + setToolChain(toolchains.indexOf(m_pro->toolChainType(m_buildConfiguration))); } void Qt4ProjectConfigWidget::selectToolChain(int index) @@ -372,7 +366,7 @@ void Qt4ProjectConfigWidget::setToolChain(int index) ProjectExplorer::ToolChain::ToolChainType selectedToolChainType = m_ui->toolChainComboBox->itemData(index, Qt::UserRole).value<ProjectExplorer::ToolChain::ToolChainType>(); - m_pro->setToolChainType(m_pro->buildConfiguration(m_buildConfiguration), selectedToolChainType); + m_pro->setToolChainType(m_buildConfiguration, selectedToolChainType); if (m_ui->toolChainComboBox->currentIndex() != index) m_ui->toolChainComboBox->setCurrentIndex(index); updateDetails(); diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h index 5590c29fd64616de521c7cb55605d454765d5937..4abbee93ed86f9ce18aabd2e397fdb0199256a83 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h @@ -52,7 +52,7 @@ public: ~Qt4ProjectConfigWidget(); QString displayName() const; - void init(const QString &buildConfiguration); + void init(ProjectExplorer::BuildConfiguration *bc); private slots: void changeConfigName(const QString &newName); @@ -72,8 +72,8 @@ private: void setToolChain(int index); Ui::Qt4ProjectConfigWidget *m_ui; QAbstractButton *m_browseButton; - Qt4Project *m_pro; - QString m_buildConfiguration; + Qt4Project *m_pro; // TODO remove + ProjectExplorer::BuildConfiguration *m_buildConfiguration; Utils::DetailsWidget *m_detailsContainer; }; diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 40759947d647c0648fbf2e0144565fb8531bb7d3..8994ee9bd2e6bc574301a84612662d6137e801a4 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -80,7 +80,7 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Project *pro, const QString &proFile connect(pro, SIGNAL(activeBuildConfigurationChanged()), this, SIGNAL(baseEnvironmentChanged())); - connect(pro, SIGNAL(environmentChanged(QString)), + connect(pro, SIGNAL(environmentChanged(ProjectExplorer::BuildConfiguration *)), this, SIGNAL(baseEnvironmentChanged())); }