Make it possible to actually select a tool chain.

This commit is contained in:
con
2009-06-10 15:39:16 +02:00
parent dc5fcfcc13
commit 7b04fc45e8
5 changed files with 46 additions and 10 deletions

View File

@@ -181,4 +181,6 @@ private:
} }
} }
Q_DECLARE_METATYPE(ProjectExplorer::ToolChain::ToolChainType);
#endif // TOOLCHAIN_H #endif // TOOLCHAIN_H

View File

@@ -288,10 +288,12 @@ void Qt4Project::restoreSettingsImpl(PersistentSettingsReader &settingsReader)
addDefaultBuild(); addDefaultBuild();
// Ensure that the qt version in each build configuration is valid // Ensure that the qt version and tool chain in each build configuration is valid
// or if not, is reset to the default // or if not, is reset to the default
foreach (const QString &bc, buildConfigurations()) foreach (const QString &bc, buildConfigurations()) {
qtVersionId(bc); qtVersionId(bc);
toolChainType(bc);
}
m_rootProjectNode = new Qt4ProFileNode(this, m_fileInfo->fileName(), this); m_rootProjectNode = new Qt4ProFileNode(this, m_fileInfo->fileName(), this);
m_rootProjectNode->registerWatcher(m_nodesWatcher); m_rootProjectNode->registerWatcher(m_nodesWatcher);
@@ -377,7 +379,7 @@ void Qt4Project::scheduleUpdateCodeModel(Qt4ProjectManager::Internal::Qt4ProFile
ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfiguration) const ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfiguration) const
{ {
return qtVersion(buildConfiguration)->toolChain(qtVersion(buildConfiguration)->defaultToolchainType()); return qtVersion(buildConfiguration)->toolChain(toolChainType(buildConfiguration));
} }
QString Qt4Project::makeCommand(const QString &buildConfiguration) const QString Qt4Project::makeCommand(const QString &buildConfiguration) const
@@ -817,6 +819,22 @@ void Qt4Project::setQtVersion(const QString &buildConfiguration, int id)
setValue(buildConfiguration, "QtVersionId", id); setValue(buildConfiguration, "QtVersionId", id);
} }
void Qt4Project::setToolChainType(const QString &buildConfiguration, ProjectExplorer::ToolChain::ToolChainType type)
{
setValue(buildConfiguration, "ToolChain", (int)type);
}
ProjectExplorer::ToolChain::ToolChainType Qt4Project::toolChainType(const QString &buildConfiguration) const
{
ProjectExplorer::ToolChain::ToolChainType type =
(ProjectExplorer::ToolChain::ToolChainType)value(buildConfiguration, "ToolChain").toInt();
const QtVersion *version = qtVersion(buildConfiguration);
if (!version->possibleToolChainTypes().contains(type)) // use default tool chain
type = version->defaultToolchainType();
const_cast<Qt4Project *>(this)->setToolChainType(buildConfiguration, type);
return type;
}
BuildStepConfigWidget *Qt4Project::createConfigWidget() BuildStepConfigWidget *Qt4Project::createConfigWidget()
{ {
return new Qt4ProjectConfigWidget(this); return new Qt4ProjectConfigWidget(this);

View File

@@ -163,6 +163,8 @@ public:
// qtVersion is in general the better method to use // qtVersion is in general the better method to use
QString qtVersionName(const QString &buildConfiguration) const; QString qtVersionName(const QString &buildConfiguration) const;
ProjectExplorer::ToolChain *toolChain(const QString &buildConfiguration) const; ProjectExplorer::ToolChain *toolChain(const QString &buildConfiguration) const;
void setToolChainType(const QString &buildConfiguration, ProjectExplorer::ToolChain::ToolChainType type);
ProjectExplorer::ToolChain::ToolChainType toolChainType(const QString &buildConfiguration) const;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets(); QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets();

View File

@@ -75,6 +75,9 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4Project *project)
connect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)), connect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)),
this, SLOT(qtVersionComboBoxCurrentIndexChanged(QString))); this, SLOT(qtVersionComboBoxCurrentIndexChanged(QString)));
connect(m_ui->toolChainComboBox, SIGNAL(activated(int)),
this, SLOT(selectToolChain(int)));
connect(m_ui->importLabel, SIGNAL(linkActivated(QString)), connect(m_ui->importLabel, SIGNAL(linkActivated(QString)),
this, SLOT(importLabelClicked())); this, SLOT(importLabelClicked()));
@@ -120,6 +123,7 @@ void Qt4ProjectConfigWidget::init(const QString &buildConfiguration)
m_ui->shadowBuildDirEdit->setEnabled(shadowBuild); m_ui->shadowBuildDirEdit->setEnabled(shadowBuild);
m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(buildConfiguration)); m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(buildConfiguration));
updateImportLabel(); updateImportLabel();
updateToolChainCombo();
} }
void Qt4ProjectConfigWidget::changeConfigName(const QString &newName) void Qt4ProjectConfigWidget::changeConfigName(const QString &newName)
@@ -282,29 +286,38 @@ void Qt4ProjectConfigWidget::updateToolChainCombo()
foreach (ProjectExplorer::ToolChain::ToolChainType toolchain, toolchains) { foreach (ProjectExplorer::ToolChain::ToolChainType toolchain, toolchains) {
switch (toolchain) { switch (toolchain) {
case ProjectExplorer::ToolChain::GCC: case ProjectExplorer::ToolChain::GCC:
m_ui->toolChainComboBox->addItem(tr("gcc"), ProjectExplorer::ToolChain::GCC); m_ui->toolChainComboBox->addItem(tr("gcc"), qVariantFromValue(ProjectExplorer::ToolChain::GCC));
break; break;
case ProjectExplorer::ToolChain::LinuxICC: case ProjectExplorer::ToolChain::LinuxICC:
m_ui->toolChainComboBox->addItem(tr("icc"), ProjectExplorer::ToolChain::LinuxICC); m_ui->toolChainComboBox->addItem(tr("icc"), qVariantFromValue(ProjectExplorer::ToolChain::LinuxICC));
break; break;
case ProjectExplorer::ToolChain::MinGW: case ProjectExplorer::ToolChain::MinGW:
m_ui->toolChainComboBox->addItem(tr("mingw"), ProjectExplorer::ToolChain::MinGW); m_ui->toolChainComboBox->addItem(tr("mingw"), qVariantFromValue(ProjectExplorer::ToolChain::MinGW));
break; break;
case ProjectExplorer::ToolChain::MSVC: case ProjectExplorer::ToolChain::MSVC:
m_ui->toolChainComboBox->addItem(tr("msvc"), ProjectExplorer::ToolChain::MSVC); m_ui->toolChainComboBox->addItem(tr("msvc"), qVariantFromValue(ProjectExplorer::ToolChain::MSVC));
break; break;
case ProjectExplorer::ToolChain::WINCE: case ProjectExplorer::ToolChain::WINCE:
m_ui->toolChainComboBox->addItem(tr("wince"), ProjectExplorer::ToolChain::WINCE); m_ui->toolChainComboBox->addItem(tr("wince"), qVariantFromValue(ProjectExplorer::ToolChain::WINCE));
break; break;
#ifdef QTCREATOR_WITH_S60 #ifdef QTCREATOR_WITH_S60
case ProjectExplorer::ToolChain::WINSCW: case ProjectExplorer::ToolChain::WINSCW:
m_ui->toolChainComboBox->addItem(tr("winscw"), ProjectExplorer::ToolChain::WINSCW); m_ui->toolChainComboBox->addItem(tr("winscw"), qVariantFromValue(ProjectExplorer::ToolChain::WINSCW));
break; break;
case ProjectExplorer::ToolChain::GCCE: case ProjectExplorer::ToolChain::GCCE:
m_ui->toolChainComboBox->addItem(tr("gcce"), ProjectExplorer::ToolChain::GCCE); m_ui->toolChainComboBox->addItem(tr("gcce"), qVariantFromValue(ProjectExplorer::ToolChain::GCCE));
break; break;
#endif #endif
} }
} }
m_ui->toolChainComboBox->setEnabled(toolchains.size() > 1); m_ui->toolChainComboBox->setEnabled(toolchains.size() > 1);
selectToolChain(toolchains.indexOf(m_pro->toolChainType(m_buildConfiguration)));
}
void Qt4ProjectConfigWidget::selectToolChain(int index)
{
m_pro->setToolChainType(m_buildConfiguration, m_ui->toolChainComboBox->itemData(index,
Qt::UserRole).value<ProjectExplorer::ToolChain::ToolChainType>());
if (m_ui->toolChainComboBox->currentIndex() != index)
m_ui->toolChainComboBox->setCurrentIndex(index);
} }

View File

@@ -61,6 +61,7 @@ private slots:
void importLabelClicked(); void importLabelClicked();
void qtVersionComboBoxCurrentIndexChanged(const QString &); void qtVersionComboBoxCurrentIndexChanged(const QString &);
void manageQtVersions(); void manageQtVersions();
void selectToolChain(int index);
private: private:
void updateToolChainCombo(); void updateToolChainCombo();