aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/toolchainoptionspage.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2016-07-12 14:46:43 +0200
committerTobias Hunger <tobias.hunger@qt.io>2016-07-14 15:33:56 +0000
commitc071f68942d2fcdf5955db516404a79d346c6135 (patch)
tree84eac6b4ba5d9b8f5ad85ddb451e4f54e613e98c /src/plugins/projectexplorer/toolchainoptionspage.cpp
parentd4624b92970ebe216f1f8fb6da4c7861acfd19df (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.cpp25
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);