Support launching profiler in offline mode
This commit adds the necessary GUI controls to let the user choose whether they want to launch Minecraft in offline mode with a configured profiler.
This commit is contained in:
parent
70ed30f9e6
commit
0ce637bf0e
@ -902,15 +902,21 @@ void MainWindow::showInstanceContextMenu(const QPoint &pos)
|
||||
void MainWindow::updateToolsMenu()
|
||||
{
|
||||
QToolButton *launchButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstance));
|
||||
QToolButton* launchOfflineButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstanceOffline));
|
||||
|
||||
if(!m_selectedInstance || m_selectedInstance->isRunning())
|
||||
{
|
||||
ui->actionLaunchInstance->setMenu(nullptr);
|
||||
ui->actionLaunchInstanceOffline->setMenu(nullptr);
|
||||
launchButton->setPopupMode(QToolButton::InstantPopup);
|
||||
launchOfflineButton->setPopupMode(QToolButton::InstantPopup);
|
||||
return;
|
||||
}
|
||||
|
||||
QMenu *launchMenu = ui->actionLaunchInstance->menu();
|
||||
QMenu* launchOfflineMenu = ui->actionLaunchInstanceOffline->menu();
|
||||
launchButton->setPopupMode(QToolButton::MenuButtonPopup);
|
||||
launchOfflineButton->setPopupMode(QToolButton::MenuButtonPopup);
|
||||
if (launchMenu)
|
||||
{
|
||||
launchMenu->clear();
|
||||
@ -919,21 +925,37 @@ void MainWindow::updateToolsMenu()
|
||||
{
|
||||
launchMenu = new QMenu(this);
|
||||
}
|
||||
if (launchOfflineMenu) {
|
||||
launchOfflineMenu->clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
launchOfflineMenu = new QMenu(this);
|
||||
}
|
||||
|
||||
QAction *normalLaunch = launchMenu->addAction(tr("Launch"));
|
||||
QAction* normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch"));
|
||||
connect(normalLaunch, &QAction::triggered, [this]()
|
||||
{
|
||||
MMC->launch(m_selectedInstance);
|
||||
MMC->launch(m_selectedInstance, true);
|
||||
});
|
||||
connect(normalLaunchOffline, &QAction::triggered, [this]()
|
||||
{
|
||||
MMC->launch(m_selectedInstance, false);
|
||||
});
|
||||
launchMenu->addSeparator()->setText(tr("Profilers"));
|
||||
launchOfflineMenu->addSeparator()->setText(tr("Profilers"));
|
||||
for (auto profiler : MMC->profilers().values())
|
||||
{
|
||||
QAction *profilerAction = launchMenu->addAction(profiler->name());
|
||||
QAction* profilerOfflineAction = launchOfflineMenu->addAction(profiler->name());
|
||||
QString error;
|
||||
if (!profiler->check(&error))
|
||||
{
|
||||
profilerAction->setDisabled(true);
|
||||
profilerOfflineAction->setDisabled(true);
|
||||
profilerAction->setToolTip(tr("Profiler not setup correctly. Go into settings, \"External Tools\"."));
|
||||
profilerOfflineAction->setToolTip(tr("Profiler not setup correctly. Go into settings, \"External Tools\"."));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -941,9 +963,14 @@ void MainWindow::updateToolsMenu()
|
||||
{
|
||||
MMC->launch(m_selectedInstance, true, profiler.get());
|
||||
});
|
||||
connect(profilerOfflineAction, &QAction::triggered, [this, profiler]()
|
||||
{
|
||||
MMC->launch(m_selectedInstance, false, profiler.get());
|
||||
});
|
||||
}
|
||||
}
|
||||
ui->actionLaunchInstance->setMenu(launchMenu);
|
||||
ui->actionLaunchInstanceOffline->setMenu(launchOfflineMenu);
|
||||
}
|
||||
|
||||
QString profileInUseFilter(const QString & profile, bool used)
|
||||
|
Loading…
Reference in New Issue
Block a user