Remove BuildConfiguration::name()

The pointers can be used to distinguish BuildConfigurations
This commit is contained in:
dt
2009-11-24 15:36:31 +01:00
parent 60a1ee12ba
commit 7904544b84
38 changed files with 343 additions and 425 deletions

View File

@@ -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)
{
}

View File

@@ -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);
};

View File

@@ -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));
}

View File

@@ -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

View File

@@ -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));
}
}

View File

@@ -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

View File

@@ -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()));
}

View File

@@ -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();
}