diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index f6e33ee5cadd8d30a2fb2ff0b0879527ba0f0283..2c473b9ec6d313e660cab741a2cada3b597da7d4 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 3a9bcb2bf825a581d51ccc9a5ef50b5165295a41..1673a494f6767d21a7d9b5bda6e2c1c976251afe 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 59739982bad11a6d905dd61f3080cfc951abcc91..fb1261fd4e5d12ae6afcb173ea394da4346d1755 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 891debda7443a54a3f460728bef7d25ca3d0f87e..5298cb543896f2462a1a388894663e2864dcadde 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 2d0fcc5dc254bc0a3bff735293caa5f89e9a6b74..0d3a2d850d9e803ecb6f2ad787a456d14beb97ed 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 0e7e16c5ffd4cc53195696b6ed89638fa9daf309..aeaa45fe7dfc2ad83964c9899d11b8756f663199 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;