From 7b6eb2c47e6eba094802d8a45dfbc2d170cd92b5 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 12 Mar 2009 13:50:43 +0100 Subject: [PATCH] Added a way to change the tool chain. --- .../genericprojectmanager/genericproject.cpp | 35 ++++++++++++------- .../genericprojectmanager/genericproject.h | 10 ++++-- .../genericprojectnodes.cpp | 6 ---- .../genericprojectnodes.h | 4 --- src/plugins/projectexplorer/toolchain.cpp | 8 +++++ src/plugins/projectexplorer/toolchain.h | 1 + 6 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index f6e33ee5cad..2c473b9ec6d 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -40,13 +40,14 @@ #include <cpptools/cppmodelmanagerinterface.h> -#include <QtDebug> -#include <QDir> -#include <QSettings> +#include <QtCore/QtDebug> +#include <QtCore/QDir> +#include <QtCore/QSettings> +#include <QtCore/QProcess> -#include <QProcess> -#include <QFormLayout> -#include <QMainWindow> +#include <QtGui/QFormLayout> +#include <QtGui/QMainWindow> +#include <QtGui/QComboBox> using namespace GenericProjectManager; using namespace GenericProjectManager::Internal; @@ -81,8 +82,6 @@ void GenericProject::refresh() _rootNode->refresh(); - setToolChain(_rootNode->toolChainId()); - CppTools::CppModelManagerInterface *modelManager = ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>(); @@ -123,6 +122,8 @@ void GenericProject::setToolChain(const QString &toolChainId) qDebug() << Q_FUNC_INFO; + _toolChainId = toolChainId; + delete _toolChain; _toolChain = 0; @@ -143,7 +144,6 @@ void GenericProject::setToolChain(const QString &toolChainId) } else if (toolChainId == QLatin1String("gcc") || toolChainId == QLatin1String("icc")) { const QLatin1String qmake_cxx("g++"); // ### FIXME _toolChain = ToolChain::createGccToolChain(qmake_cxx); - } } @@ -170,6 +170,9 @@ QString GenericProject::buildParser(const QString &buildConfiguration) const return QString(); } +QString GenericProject::toolChainId() const +{ return _toolChainId; } + QString GenericProject::name() const { qDebug() << Q_FUNC_INFO; @@ -248,7 +251,7 @@ QList<ProjectExplorer::BuildStepConfigWidget*> GenericProject::subConfigWidgets( makeStep()->setBuildTarget(buildConfiguration, "all", true); } -ProjectExplorer::ProjectNode *GenericProject::rootProjectNode() const +GenericProjectNode *GenericProject::rootProjectNode() const { qDebug() << Q_FUNC_INFO; @@ -306,8 +309,7 @@ void GenericProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsRead if (toolChainId.isEmpty()) toolChainId = QLatin1String("gcc"); - toolChainId = toolChainId.toLower(); // ### move - _rootNode->setToolChainId(toolChainId); + setToolChain(toolChainId.toLower()); // ### move const QStringList includePaths = reader.restoreValue(QLatin1String("includePaths")).toStringList(); _rootNode->setIncludePaths(includePaths); @@ -319,7 +321,7 @@ void GenericProject::saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter Project::saveSettingsImpl(writer); - writer.saveValue("toolChain", _rootNode->toolChainId()); + writer.saveValue("toolChain", _toolChainId); writer.saveValue("includePaths", _rootNode->includePaths()); } @@ -339,6 +341,13 @@ GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericProject *project) fl->addRow("Build directory:", _pathChooser); connect(_pathChooser, SIGNAL(changed()), this, SLOT(buildDirectoryChanged())); + + QComboBox *toolChainChooser = new QComboBox; + toolChainChooser->addItems(ProjectExplorer::ToolChain::supportedToolChains()); + toolChainChooser->setCurrentIndex(toolChainChooser->findText(_project->toolChainId())); + fl->addRow("Tool chain:", toolChainChooser); + + connect(toolChainChooser, SIGNAL(activated(QString)), _project, SLOT(setToolChain(QString))); } GenericBuildSettingsWidget::~GenericBuildSettingsWidget() diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index 3a9bcb2bf82..1673a494f67 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -69,15 +69,18 @@ public: virtual QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets(); virtual void newBuildConfiguration(const QString &buildConfiguration); - virtual ProjectExplorer::ProjectNode *rootProjectNode() const; + virtual GenericProjectNode *rootProjectNode() const; virtual QStringList files(FilesMode fileMode) const; - void setToolChain(const QString &toolChainId); - QStringList targets() const; MakeStep *makeStep() const; QString buildParser(const QString &buildConfiguration) const; + QString toolChainId() const; + +public Q_SLOTS: + void setToolChain(const QString &toolChainId); + private: void refresh(); @@ -93,6 +96,7 @@ private: GenericProjectNode* _rootNode; ProjectExplorer::ToolChain *_toolChain; + QString _toolChainId; }; class GenericProjectFile : public Core::IFile diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 59739982bad..fb1261fd4e5 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -234,12 +234,6 @@ void GenericProjectNode::setIncludePaths(const QStringList &includePaths) QStringList GenericProjectNode::defines() const { return _defines; } -QString GenericProjectNode::toolChainId() const -{ return _toolChainId; } - -void GenericProjectNode::setToolChainId(const QString &toolChainId) -{ _toolChainId = toolChainId; } - bool GenericProjectNode::hasTargets() const { qDebug() << Q_FUNC_INFO; diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index 891debda744..5298cb54389 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -69,9 +69,6 @@ public: void refresh(); - QString toolChainId() const; - void setToolChainId(const QString &toolChainId); - QStringList includePaths() const; void setIncludePaths(const QStringList &includePaths); @@ -89,7 +86,6 @@ private: QStringList _generated; QStringList _includePaths; QStringList _defines; - QString _toolChainId; QHash<QString, FolderNode *> _folderByName; }; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 2d0fcc5dc25..0d3a2d850d9 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -59,6 +59,14 @@ QStringList ToolChain::availableMSVCVersions() return versions; } +QStringList ToolChain::supportedToolChains() +{ + return QStringList() << QLatin1String("gcc") + << QLatin1String("mingw") + << QLatin1String("msvc") + << QLatin1String("wince"); +} + GccToolChain::GccToolChain(const QString &gcc) : m_gcc(gcc) { diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 0e7e16c5ffd..aeaa45fe7df 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -62,6 +62,7 @@ public: static ToolChain *createMSVCToolChain(const QString &name); static ToolChain *createWinCEToolChain(const QString &name, const QString &platform); static QStringList availableMSVCVersions(); + static QStringList supportedToolChains(); protected: virtual bool equals(ToolChain *other) const = 0; -- GitLab