| 965 | } |
| 966 | |
| 967 | void MainWindow::updateToolsMenu() |
| 968 | { |
| 969 | QToolButton *launchButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstance)); |
| 970 | QToolButton *launchOfflineButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstanceOffline)); |
| 971 | |
| 972 | if(!m_selectedInstance || m_selectedInstance->isRunning()) |
| 973 | { |
| 974 | ui->actionLaunchInstance->setMenu(nullptr); |
| 975 | ui->actionLaunchInstanceOffline->setMenu(nullptr); |
| 976 | launchButton->setPopupMode(QToolButton::InstantPopup); |
| 977 | launchOfflineButton->setPopupMode(QToolButton::InstantPopup); |
| 978 | return; |
| 979 | } |
| 980 | |
| 981 | QMenu *launchMenu = ui->actionLaunchInstance->menu(); |
| 982 | QMenu *launchOfflineMenu = ui->actionLaunchInstanceOffline->menu(); |
| 983 | launchButton->setPopupMode(QToolButton::MenuButtonPopup); |
| 984 | launchOfflineButton->setPopupMode(QToolButton::MenuButtonPopup); |
| 985 | if (launchMenu) |
| 986 | { |
| 987 | launchMenu->clear(); |
| 988 | } |
| 989 | else |
| 990 | { |
| 991 | launchMenu = new QMenu(this); |
| 992 | } |
| 993 | if (launchOfflineMenu) { |
| 994 | launchOfflineMenu->clear(); |
| 995 | } |
| 996 | else |
| 997 | { |
| 998 | launchOfflineMenu = new QMenu(this); |
| 999 | } |
| 1000 | |
| 1001 | QAction *normalLaunch = launchMenu->addAction(tr("Launch")); |
| 1002 | QAction *normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch Offline")); |
| 1003 | connect(normalLaunch, &QAction::triggered, [this]() |
| 1004 | { |
| 1005 | APPLICATION->launch(m_selectedInstance, true); |
| 1006 | }); |
| 1007 | connect(normalLaunchOffline, &QAction::triggered, [this]() |
| 1008 | { |
| 1009 | APPLICATION->launch(m_selectedInstance, false); |
| 1010 | }); |
| 1011 | QString profilersTitle = tr("Profilers"); |
| 1012 | launchMenu->addSeparator()->setText(profilersTitle); |
| 1013 | launchOfflineMenu->addSeparator()->setText(profilersTitle); |
| 1014 | for (auto profiler : APPLICATION->profilers().values()) |
| 1015 | { |
| 1016 | QAction *profilerAction = launchMenu->addAction(profiler->name()); |
| 1017 | QAction *profilerOfflineAction = launchOfflineMenu->addAction(profiler->name()); |
| 1018 | QString error; |
| 1019 | if (!profiler->check(&error)) |
| 1020 | { |
| 1021 | profilerAction->setDisabled(true); |
| 1022 | profilerOfflineAction->setDisabled(true); |
| 1023 | QString profilerToolTip = tr("Profiler not setup correctly. Go into settings, \"External Tools\"."); |
| 1024 | profilerAction->setToolTip(profilerToolTip); |