diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2016-07-12 14:46:43 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2016-07-14 15:33:56 +0000 |
commit | c071f68942d2fcdf5955db516404a79d346c6135 (patch) | |
tree | 84eac6b4ba5d9b8f5ad85ddb451e4f54e613e98c /src/plugins/projectexplorer/toolchainoptionspage.cpp | |
parent | d4624b92970ebe216f1f8fb6da4c7861acfd19df (diff) |
ToolChainOptionsPage: Enabling adding toolchains for different languages
Change-Id: I7e0984c6229c8583433a9efe0063337a18c5f716
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Diffstat (limited to 'src/plugins/projectexplorer/toolchainoptionspage.cpp')
-rw-r--r-- | src/plugins/projectexplorer/toolchainoptionspage.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index b9ec5bca34..2ff25cbf4b 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -147,10 +147,27 @@ public: m_addButton = new QPushButton(ToolChainOptionsPage::tr("Add"), this); auto addMenu = new QMenu; foreach (ToolChainFactory *factory, m_factories) { - QAction *action = new QAction(addMenu); - action->setText(factory->displayName()); - connect(action, &QAction::triggered, [this, factory] { createToolChain(factory); }); - addMenu->addAction(action); + QList<ToolChain::Language> languages = factory->supportedLanguages().toList(); + if (languages.isEmpty()) + continue; + + if (languages.count() == 1) { + QAction *action = new QAction(addMenu); + action->setText(factory->displayName()); + connect(action, &QAction::triggered, [this, factory] { createToolChain(factory); }); + addMenu->addAction(action); + } else { + Utils::sort(languages, [](ToolChain::Language l1, ToolChain::Language l2) { + return ToolChain::languageDisplayName(l1) < ToolChain::languageDisplayName(l2); + }); + auto subMenu = addMenu->addMenu(factory->displayName()); + foreach (ToolChain::Language l, languages) { + auto action = new QAction(subMenu); + action->setText(ToolChain::languageDisplayName(l)); + connect(action, &QAction::triggered, [this, factory] { createToolChain(factory); }); + subMenu->addAction(action); + } + } } m_addButton->setMenu(addMenu); |