From b48c2715ba5c36a9ab47f4acbf1c35e0ae658023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Fri, 21 Aug 2009 15:59:17 +0200 Subject: Fixed problem with changing tool chain type for generic projects Some fixes were needed after the tool chain type was changed from QString to an enum. Task-number: 259939 (cherry picked from commit a5b22b18bdcf57f646f39246367ecfea6acd3ff0) --- .../genericprojectmanager/genericproject.cpp | 52 +++++++++++++--------- src/plugins/genericprojectmanager/genericproject.h | 9 ++-- src/plugins/projectexplorer/toolchain.cpp | 2 +- 3 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 03762dbc95..d012914dd9 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -325,31 +325,30 @@ void GenericProject::setIncludePaths(const QStringList &includePaths) QByteArray GenericProject::defines() const { return m_defines; } -void GenericProject::setToolChainId(int t) +void GenericProject::setToolChainType(ProjectExplorer::ToolChain::ToolChainType type) { - ProjectExplorer::ToolChain::ToolChainType toolChainId = ProjectExplorer::ToolChain::ToolChainType(t); using namespace ProjectExplorer; - m_toolChainId = toolChainId; + m_toolChainType = type; delete m_toolChain; m_toolChain = 0; - if (toolChainId == ToolChain::MinGW) { + if (type == ToolChain::MinGW) { const QLatin1String qmake_cxx("g++"); // ### FIXME const QString mingwDirectory; // ### FIXME m_toolChain = ToolChain::createMinGWToolChain(qmake_cxx, mingwDirectory); - } else if (toolChainId == ToolChain::MSVC) { + } else if (type == ToolChain::MSVC) { const QString msvcVersion; // ### FIXME m_toolChain = ToolChain::createMSVCToolChain(msvcVersion, false); - } else if (toolChainId == ToolChain::WINCE) { + } else if (type == ToolChain::WINCE) { const QString msvcVersion, wincePlatform; // ### FIXME m_toolChain = ToolChain::createWinCEToolChain(msvcVersion, wincePlatform); - } else if (toolChainId == ToolChain::GCC || toolChainId == ToolChain::GCC) { + } else if (type == ToolChain::GCC || type == ToolChain::GCC) { const QLatin1String qmake_cxx("g++"); // ### FIXME m_toolChain = ToolChain::createGccToolChain(qmake_cxx); } @@ -382,8 +381,8 @@ ProjectExplorer::ToolChain *GenericProject::toolChain() const return m_toolChain; } -ProjectExplorer::ToolChain::ToolChainType GenericProject::toolChainId() const -{ return m_toolChainId; } +ProjectExplorer::ToolChain::ToolChainType GenericProject::toolChainType() const +{ return m_toolChainType; } QString GenericProject::name() const { @@ -494,21 +493,20 @@ bool GenericProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsRead using namespace ProjectExplorer; QString toolChainName = reader.restoreValue(QLatin1String("toolChain")).toString(); bool convertible = false; - ToolChain::ToolChainType toolChainId = ToolChain::GCC; - toolChainId = ToolChain::ToolChainType(toolChainName.toInt(&convertible)); + ToolChain::ToolChainType type = ToolChain::ToolChainType(toolChainName.toInt(&convertible)); if (!convertible) { // legacy string values if (toolChainName == QLatin1String("gcc")) - toolChainId = ToolChain::GCC; + type = ToolChain::GCC; else if (toolChainName == QLatin1String("mingw")) - toolChainId = ToolChain::MinGW; + type = ToolChain::MinGW; else if (toolChainName == QLatin1String("msvc")) - toolChainId = ToolChain::MSVC; + type = ToolChain::MSVC; else if (toolChainName == QLatin1String("wince")) - toolChainId = ToolChain::WINCE; + type = ToolChain::WINCE; } - setToolChainId(toolChainId); // ### move + setToolChainType(type); // ### move const QStringList userIncludePaths = reader.restoreValue(QLatin1String("includePaths")).toStringList(); @@ -523,7 +521,7 @@ void GenericProject::saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter { Project::saveSettingsImpl(writer); - writer.saveValue(QLatin1String("toolChain"), m_toolChainId); + writer.saveValue(QLatin1String("toolChain"), m_toolChainType); writer.saveValue(QLatin1String("includePaths"), m_includePaths); } @@ -548,13 +546,18 @@ GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericProject *project) QComboBox *toolChainChooser = new QComboBox; toolChainChooser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); using namespace ProjectExplorer; + int index = 0; + int selectedIndex = -1; foreach (ToolChain::ToolChainType tc, ToolChain::supportedToolChains()) { - toolChainChooser->addItem(ToolChain::toolChainName(tc), tc); + toolChainChooser->addItem(ToolChain::toolChainName(tc), QVariant::fromValue(tc)); + if (m_project->toolChainType() == tc) + selectedIndex = index; + ++index; } - toolChainChooser->setCurrentIndex(toolChainChooser->findData(m_project->toolChainId())); + toolChainChooser->setCurrentIndex(selectedIndex); fl->addRow(tr("Tool Chain:"), toolChainChooser); - connect(toolChainChooser, SIGNAL(activated(QString)), m_project, SLOT(setToolChainId(int))); + connect(toolChainChooser, SIGNAL(activated(int)), this, SLOT(toolChainSelected(int))); } GenericBuildSettingsWidget::~GenericBuildSettingsWidget() @@ -574,6 +577,15 @@ void GenericBuildSettingsWidget::buildDirectoryChanged() m_project->setValue(m_buildConfiguration, "buildDirectory", m_pathChooser->path()); } +void GenericBuildSettingsWidget::toolChainSelected(int index) +{ + using namespace ProjectExplorer; + + QComboBox *toolChainChooser = qobject_cast(sender()); + ToolChain::ToolChainType type = toolChainChooser->itemData(index).value(); + m_project->setToolChainType(type); +} + //////////////////////////////////////////////////////////////////////////////////// // GenericProjectFile //////////////////////////////////////////////////////////////////////////////////// diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index c775d804c6..686ea7b9dd 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -111,10 +111,8 @@ public: QStringList projectIncludePaths() const; QStringList files() const; QStringList generated() const; - ProjectExplorer::ToolChain::ToolChainType toolChainId() const; - -public Q_SLOTS: - void setToolChainId(int); + ProjectExplorer::ToolChain::ToolChainType toolChainType() const; + void setToolChainType(ProjectExplorer::ToolChain::ToolChainType type); protected: virtual void saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter &writer); @@ -140,7 +138,7 @@ private: GenericProjectNode *m_rootNode; ProjectExplorer::ToolChain *m_toolChain; - ProjectExplorer::ToolChain::ToolChainType m_toolChainId; + ProjectExplorer::ToolChain::ToolChainType m_toolChainType; }; class GenericProjectFile : public Core::IFile @@ -183,6 +181,7 @@ public: private Q_SLOTS: void buildDirectoryChanged(); + void toolChainSelected(int index); private: GenericProject *m_project; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index c3beba59f8..1050514816 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -135,7 +135,7 @@ QString ToolChain::toolChainName(ToolChainType tc) return QCoreApplication::translate("ToolChain", ""); case UNKNOWN: break; - default: + default: Q_ASSERT("Missing name for Toolchaintype"); }; return QCoreApplication::translate("ToolChain", ""); -- cgit v1.2.1