| 947 | } |
| 948 | |
| 949 | void MainWindow::updateToolsMenu() |
| 950 | { |
| 951 | QToolButton *launchButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstance)); |
| 952 | QToolButton *launchOfflineButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstanceOffline)); |
| 953 | |
| 954 | if(!m_selectedInstance || m_selectedInstance->isRunning()) |
| 955 | { |
| 956 | ui->actionLaunchInstance->setMenu(nullptr); |
| 957 | ui->actionLaunchInstanceOffline->setMenu(nullptr); |
| 958 | launchButton->setPopupMode(QToolButton::InstantPopup); |
| 959 | launchOfflineButton->setPopupMode(QToolButton::InstantPopup); |
| 960 | return; |
| 961 | } |
| 962 | |
| 963 | QMenu *launchMenu = ui->actionLaunchInstance->menu(); |
| 964 | QMenu *launchOfflineMenu = ui->actionLaunchInstanceOffline->menu(); |
| 965 | launchButton->setPopupMode(QToolButton::MenuButtonPopup); |
| 966 | launchOfflineButton->setPopupMode(QToolButton::MenuButtonPopup); |
| 967 | if (launchMenu) |
| 968 | { |
| 969 | launchMenu->clear(); |
| 970 | } |
| 971 | else |
| 972 | { |
| 973 | launchMenu = new QMenu(this); |
| 974 | } |
| 975 | if (launchOfflineMenu) { |
| 976 | launchOfflineMenu->clear(); |
| 977 | } |
| 978 | else |
| 979 | { |
| 980 | launchOfflineMenu = new QMenu(this); |
| 981 | } |
| 982 | |
| 983 | QAction *normalLaunch = launchMenu->addAction(tr("Launch")); |
| 984 | QAction *normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch Offline")); |
| 985 | connect(normalLaunch, &QAction::triggered, [this]() |
| 986 | { |
| 987 | APPLICATION->launch(m_selectedInstance, true); |
| 988 | }); |
| 989 | connect(normalLaunchOffline, &QAction::triggered, [this]() |
| 990 | { |
| 991 | APPLICATION->launch(m_selectedInstance, false); |
| 992 | }); |
| 993 | QString profilersTitle = tr("Profilers"); |
| 994 | launchMenu->addSeparator()->setText(profilersTitle); |
| 995 | launchOfflineMenu->addSeparator()->setText(profilersTitle); |
| 996 | for (auto profiler : APPLICATION->profilers().values()) |
| 997 | { |
| 998 | QAction *profilerAction = launchMenu->addAction(profiler->name()); |
| 999 | QAction *profilerOfflineAction = launchOfflineMenu->addAction(profiler->name()); |
| 1000 | QString error; |
| 1001 | if (!profiler->check(&error)) |
| 1002 | { |
| 1003 | profilerAction->setDisabled(true); |
| 1004 | profilerOfflineAction->setDisabled(true); |
| 1005 | QString profilerToolTip = tr("Profiler not setup correctly. Go into settings, \"External Tools\"."); |
| 1006 | profilerAction->setToolTip(profilerToolTip); |