Profile introduction

Introduce Profiles to store sets of values that describe a system/device.

These profiles are held by a target, getting rid of much of the information
stored in the Build-/Run-/DeployConfigurations, greatly simplifying those.

This is a squash of the wip/profile branch which has been on gerrit for a
while, rebased to current master.

Change-Id: I25956c8dd4d1962b2134bfaa8a8076ae3909460f
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Tobias Hunger
2012-04-24 15:49:09 +02:00
parent 8c77b8c9d7
commit 2431456216
379 changed files with 12690 additions and 14437 deletions

View File

@@ -80,7 +80,7 @@ int BuildSettingsPanelFactory::priority() const
bool BuildSettingsPanelFactory::supports(Target *target)
{
return target->buildConfigurationFactory();
return IBuildConfigurationFactory::find(target);
}
PropertiesPanel *BuildSettingsPanelFactory::createPanel(Target *target)
@@ -120,7 +120,7 @@ void BuildSettingsWidget::setupUi()
QVBoxLayout *vbox = new QVBoxLayout(this);
vbox->setContentsMargins(0, 0, 0, 0);
if (!m_target->buildConfigurationFactory()) {
if (!IBuildConfigurationFactory::find(m_target)) {
QLabel *noSettingsLabel = new QLabel(this);
noSettingsLabel->setText(tr("No build settings available"));
QFont f = noSettingsLabel->font();
@@ -179,9 +179,7 @@ void BuildSettingsWidget::setupUi()
connect(m_target, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
this, SLOT(updateActiveConfiguration()));
if (m_target->buildConfigurationFactory())
connect(m_target->buildConfigurationFactory(), SIGNAL(availableCreationIdsChanged()),
SLOT(updateAddButtonMenu()));
connect(m_target, SIGNAL(profileChanged()), this, SLOT(updateAddButtonMenu()));
}
void BuildSettingsWidget::addSubWidget(BuildConfigWidget *widget)
@@ -227,12 +225,10 @@ void BuildSettingsWidget::updateAddButtonMenu()
m_addButtonMenu->addAction(tr("&Clone Selected"),
this, SLOT(cloneConfiguration()));
}
IBuildConfigurationFactory *factory = m_target->buildConfigurationFactory();
if (factory) {
foreach (Core::Id id, factory->availableCreationIds(m_target)) {
QAction *action = m_addButtonMenu->addAction(factory->displayNameForId(id), this, SLOT(createConfiguration()));
action->setData(QVariant::fromValue(id));
}
IBuildConfigurationFactory * factory = IBuildConfigurationFactory::find(m_target);
foreach (Core::Id id, factory->availableCreationIds(m_target)) {
QAction *action = m_addButtonMenu->addAction(factory->displayNameForId(id), this, SLOT(createConfiguration()));
action->setData(QVariant::fromValue(id));
}
}
}
@@ -245,7 +241,7 @@ void BuildSettingsWidget::updateBuildSettings()
m_removeButton->setEnabled(m_target->buildConfigurations().size() > 1);
// Add pages
BuildConfigWidget *generalConfigWidget = m_target->createConfigWidget();
BuildConfigWidget *generalConfigWidget = m_buildConfiguration->createConfigWidget();
addSubWidget(generalConfigWidget);
addSubWidget(new BuildStepsPage(m_target, Core::Id(Constants::BUILDSTEPS_BUILD)));
@@ -285,16 +281,22 @@ void BuildSettingsWidget::updateActiveConfiguration()
void BuildSettingsWidget::createConfiguration()
{
if (!m_target->buildConfigurationFactory())
return;
QAction *action = qobject_cast<QAction *>(sender());
Core::Id id = action->data().value<Core::Id>();
BuildConfiguration *bc = m_target->buildConfigurationFactory()->create(m_target, id);
if (bc) {
m_target->setActiveBuildConfiguration(bc);
updateBuildSettings();
}
IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target);
if (!factory)
return;
BuildConfiguration *bc = factory->create(m_target, id);
if (!bc)
return;
m_target->addBuildConfiguration(bc);
QTC_CHECK(bc->id() == id);
m_target->setActiveBuildConfiguration(bc);
updateBuildSettings();
}
void BuildSettingsWidget::cloneConfiguration()
@@ -343,8 +345,10 @@ void BuildSettingsWidget::renameConfiguration()
void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfiguration)
{
if (!sourceConfiguration ||
!m_target->buildConfigurationFactory())
if (!sourceConfiguration)
return;
IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target);
if (!factory)
return;
//: Title of a the cloned BuildConfiguration window, text of the window
@@ -352,7 +356,7 @@ void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfigura
if (name.isEmpty())
return;
BuildConfiguration * bc(m_target->buildConfigurationFactory()->clone(m_target, sourceConfiguration));
BuildConfiguration *bc = factory->clone(m_target, sourceConfiguration);
if (!bc)
return;