aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/ui')
-rw-r--r--launcher/ui/MainWindow.cpp673
-rw-r--r--launcher/ui/MainWindow.h2
2 files changed, 279 insertions, 396 deletions
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index 1c694484..27763387 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -247,38 +247,20 @@ public:
QMenuBar *menuBar = nullptr;
QMenu *fileMenu;
QMenu *editMenu;
+ QMenu *viewMenu;
QMenu *profileMenu;
- QAction *newAct;
- QAction *openAct;
- QAction *openOfflineAct;
- QAction *editInstanceAct;
- QAction *editNotesAct;
- QAction *editModsAct;
- QAction *editWorldsAct;
- QAction *manageScreenshotsAct;
- QAction *changeGroupAct;
- QAction *openMCFolderAct;
- QAction *openConfigFolderAct;
- QAction *openInstanceFolderAct;
- QAction *exportInstanceAct;
- QAction *deleteInstanceAct;
- QAction *duplicateInstanceAct;
- QAction *closeAct;
- QAction *undoAct;
- QAction *redoAct;
- QAction *cutAct;
- QAction *copyAct;
- QAction *pasteAct;
- QAction *selectAllAct;
- QAction *manageAccountAct;
- QAction *aboutAct;
- QAction *settingsAct;
- QAction *wikiAct;
- QAction *newsAct;
- QAction *reportBugAct;
- QAction *matrixAct;
- QAction *discordAct;
- QAction *redditAct;
+
+ QAction *actionCloseWindow;
+
+ QAction *actionUndo;
+ QAction *actionRedo;
+ QAction *actionCut;
+ QAction *actionCopy;
+ QAction *actionPaste;
+ QAction *actionSelectAll;
+
+ QAction *actionWiki;
+ QAction *actionNewsMenuBar;
TranslatedToolbar mainToolBar;
TranslatedToolbar instanceToolBar;
@@ -290,12 +272,12 @@ public:
{
if(m_kill)
{
- actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Kill"));
+ actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Kill"));
actionLaunchInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Kill the running instance"));
}
else
{
- actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Launch"));
+ actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Launch"));
actionLaunchInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Launch the selected instance."));
}
actionLaunchInstance.retranslate();
@@ -306,29 +288,16 @@ public:
updateLaunchAction();
}
- void createMainToolbar(QMainWindow *MainWindow)
+ void createMainToolbarActions(QMainWindow *MainWindow)
{
- mainToolBar = TranslatedToolbar(MainWindow);
- mainToolBar->setVisible(menuBar->isNativeMenuBar() || !APPLICATION->settings()->get("MenuBarInsteadOfToolBar").toBool());
- mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
- mainToolBar->setMovable(true);
- mainToolBar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
- mainToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- mainToolBar->setFloatable(false);
- mainToolBar.setWindowTitleId(QT_TRANSLATE_NOOP("MainWindow", "Main Toolbar"));
-
actionAddInstance = TranslatedAction(MainWindow);
actionAddInstance->setObjectName(QStringLiteral("actionAddInstance"));
actionAddInstance->setIcon(APPLICATION->getThemedIcon("new"));
- actionAddInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Add Instance"));
+ actionAddInstance->setIconVisibleInMenu(false);
+ actionAddInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Add Instanc&e..."));
actionAddInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Add a new instance."));
+ actionAddInstance->setShortcut(QKeySequence::New);
all_actions.append(&actionAddInstance);
- mainToolBar->addAction(actionAddInstance);
-
- mainToolBar->addSeparator();
-
- foldersMenu = new QMenu(MainWindow);
- foldersMenu->setToolTipsVisible(true);
actionViewInstanceFolder = TranslatedAction(MainWindow);
actionViewInstanceFolder->setObjectName(QStringLiteral("actionViewInstanceFolder"));
@@ -336,7 +305,6 @@ public:
actionViewInstanceFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Instance Folder"));
actionViewInstanceFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the instance folder in a file browser."));
all_actions.append(&actionViewInstanceFolder);
- foldersMenu->addAction(actionViewInstanceFolder);
actionViewCentralModsFolder = TranslatedAction(MainWindow);
actionViewCentralModsFolder->setObjectName(QStringLiteral("actionViewCentralModsFolder"));
@@ -344,10 +312,16 @@ public:
actionViewCentralModsFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Central Mods Folder"));
actionViewCentralModsFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the central mods folder in a file browser."));
all_actions.append(&actionViewCentralModsFolder);
+
+ foldersMenu = new QMenu(MainWindow);
+ foldersMenu->setTitle(tr("F&olders"));
+ foldersMenu->setToolTipsVisible(true);
+
+ foldersMenu->addAction(actionViewInstanceFolder);
foldersMenu->addAction(actionViewCentralModsFolder);
foldersMenuButton = TranslatedToolButton(MainWindow);
- foldersMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Folders"));
+ foldersMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "F&olders"));
foldersMenuButton.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open one of the folders shared between instances."));
foldersMenuButton->setMenu(foldersMenu);
foldersMenuButton->setPopupMode(QToolButton::InstantPopup);
@@ -355,115 +329,153 @@ public:
foldersMenuButton->setIcon(APPLICATION->getThemedIcon("viewfolder"));
foldersMenuButton->setFocusPolicy(Qt::NoFocus);
all_toolbuttons.append(&foldersMenuButton);
- QWidgetAction* foldersButtonAction = new QWidgetAction(MainWindow);
- foldersButtonAction->setDefaultWidget(foldersMenuButton);
- mainToolBar->addAction(foldersButtonAction);
actionSettings = TranslatedAction(MainWindow);
actionSettings->setObjectName(QStringLiteral("actionSettings"));
actionSettings->setIcon(APPLICATION->getThemedIcon("settings"));
actionSettings->setMenuRole(QAction::PreferencesRole);
- actionSettings.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Settings"));
+ actionSettings.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Settings..."));
actionSettings.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change settings."));
+ actionSettings->setShortcut(QKeySequence::Preferences);
all_actions.append(&actionSettings);
- mainToolBar->addAction(actionSettings);
-
- helpMenu = new QMenu(MainWindow);
- helpMenu->setToolTipsVisible(true);
if (!BuildConfig.BUG_TRACKER_URL.isEmpty()) {
actionReportBug = TranslatedAction(MainWindow);
actionReportBug->setObjectName(QStringLiteral("actionReportBug"));
actionReportBug->setIcon(APPLICATION->getThemedIcon("bug"));
- actionReportBug.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Report a Bug"));
+ actionReportBug.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Report a &Bug..."));
actionReportBug.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the bug tracker to report a bug with %1."));
all_actions.append(&actionReportBug);
- helpMenu->addAction(actionReportBug);
}
-
+
if(!BuildConfig.MATRIX_URL.isEmpty()) {
actionMATRIX = TranslatedAction(MainWindow);
actionMATRIX->setObjectName(QStringLiteral("actionMATRIX"));
actionMATRIX->setIcon(APPLICATION->getThemedIcon("matrix"));
- actionMATRIX.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Matrix space"));
+ actionMATRIX.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Matrix Space"));
actionMATRIX.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open %1 Matrix space"));
all_actions.append(&actionMATRIX);
- helpMenu->addAction(actionMATRIX);
}
if (!BuildConfig.DISCORD_URL.isEmpty()) {
actionDISCORD = TranslatedAction(MainWindow);
actionDISCORD->setObjectName(QStringLiteral("actionDISCORD"));
actionDISCORD->setIcon(APPLICATION->getThemedIcon("discord"));
- actionDISCORD.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Discord guild"));
+ actionDISCORD.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Discord Guild"));
actionDISCORD.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open %1 Discord guild."));
all_actions.append(&actionDISCORD);
- helpMenu->addAction(actionDISCORD);
}
if (!BuildConfig.SUBREDDIT_URL.isEmpty()) {
actionREDDIT = TranslatedAction(MainWindow);
actionREDDIT->setObjectName(QStringLiteral("actionREDDIT"));
actionREDDIT->setIcon(APPLICATION->getThemedIcon("reddit-alien"));
- actionREDDIT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Subreddit"));
+ actionREDDIT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Sub&reddit"));
actionREDDIT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open %1 subreddit."));
all_actions.append(&actionREDDIT);
- helpMenu->addAction(actionREDDIT);
}
actionAbout = TranslatedAction(MainWindow);
actionAbout->setObjectName(QStringLiteral("actionAbout"));
actionAbout->setIcon(APPLICATION->getThemedIcon("about"));
actionAbout->setMenuRole(QAction::AboutRole);
- actionAbout.setTextId(QT_TRANSLATE_NOOP("MainWindow", "About %1"));
+ actionAbout.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&About %1"));
actionAbout.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View information about %1."));
all_actions.append(&actionAbout);
- helpMenu->addAction(actionAbout);
-
- helpMenuButton = TranslatedToolButton(MainWindow);
- helpMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Help"));
- helpMenuButton.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Get help with %1 or Minecraft."));
- helpMenuButton->setMenu(helpMenu);
- helpMenuButton->setPopupMode(QToolButton::InstantPopup);
- helpMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- helpMenuButton->setIcon(APPLICATION->getThemedIcon("help"));
- helpMenuButton->setFocusPolicy(Qt::NoFocus);
- all_toolbuttons.append(&helpMenuButton);
- QWidgetAction* helpButtonAction = new QWidgetAction(MainWindow);
- helpButtonAction->setDefaultWidget(helpMenuButton);
- mainToolBar->addAction(helpButtonAction);
if(BuildConfig.UPDATER_ENABLED)
{
actionCheckUpdate = TranslatedAction(MainWindow);
actionCheckUpdate->setObjectName(QStringLiteral("actionCheckUpdate"));
actionCheckUpdate->setIcon(APPLICATION->getThemedIcon("checkupdate"));
- actionCheckUpdate.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Update"));
+ actionCheckUpdate.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Update..."));
actionCheckUpdate.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Check for new updates for %1."));
+ actionCheckUpdate->setMenuRole(QAction::ApplicationSpecificRole);
all_actions.append(&actionCheckUpdate);
- mainToolBar->addAction(actionCheckUpdate);
}
- mainToolBar->addSeparator();
-
actionCAT = TranslatedAction(MainWindow);
actionCAT->setObjectName(QStringLiteral("actionCAT"));
actionCAT->setCheckable(true);
actionCAT->setIcon(APPLICATION->getThemedIcon("cat"));
- actionCAT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Meow"));
+ actionCAT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Meow"));
actionCAT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "It's a fluffy kitty :3"));
actionCAT->setPriority(QAction::LowPriority);
all_actions.append(&actionCAT);
- mainToolBar->addAction(actionCAT);
// profile menu and its actions
actionManageAccounts = TranslatedAction(MainWindow);
actionManageAccounts->setObjectName(QStringLiteral("actionManageAccounts"));
- actionManageAccounts.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Manage Accounts"));
+ actionManageAccounts.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Manage Accounts..."));
// FIXME: no tooltip!
actionManageAccounts->setCheckable(false);
actionManageAccounts->setIcon(APPLICATION->getThemedIcon("accounts"));
all_actions.append(&actionManageAccounts);
+ }
+
+ void createMainToolbar(QMainWindow *MainWindow)
+ {
+ mainToolBar = TranslatedToolbar(MainWindow);
+ mainToolBar->setVisible(menuBar->isNativeMenuBar() || !APPLICATION->settings()->get("MenuBarInsteadOfToolBar").toBool());
+ mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
+ mainToolBar->setMovable(true);
+ mainToolBar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
+ mainToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ mainToolBar->setFloatable(false);
+ mainToolBar.setWindowTitleId(QT_TRANSLATE_NOOP("MainWindow", "Main Toolbar"));
+
+ mainToolBar->addAction(actionAddInstance);
+
+ mainToolBar->addSeparator();
+
+ QWidgetAction* foldersButtonAction = new QWidgetAction(MainWindow);
+ foldersButtonAction->setDefaultWidget(foldersMenuButton);
+ mainToolBar->addAction(foldersButtonAction);
+
+ mainToolBar->addAction(actionSettings);
+
+ helpMenu = new QMenu(MainWindow);
+ helpMenu->setToolTipsVisible(true);
+
+ if (!BuildConfig.BUG_TRACKER_URL.isEmpty()) {
+ helpMenu->addAction(actionReportBug);
+ }
+
+ if(!BuildConfig.MATRIX_URL.isEmpty()) {
+ helpMenu->addAction(actionMATRIX);
+ }
+
+ if (!BuildConfig.DISCORD_URL.isEmpty()) {
+ helpMenu->addAction(actionDISCORD);
+ }
+
+ if (!BuildConfig.SUBREDDIT_URL.isEmpty()) {
+ helpMenu->addAction(actionREDDIT);
+ }
+
+ helpMenu->addAction(actionAbout);
+
+ helpMenuButton = TranslatedToolButton(MainWindow);
+ helpMenuButton.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Help"));
+ helpMenuButton.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Get help with %1 or Minecraft."));
+ helpMenuButton->setMenu(helpMenu);
+ helpMenuButton->setPopupMode(QToolButton::InstantPopup);
+ helpMenuButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ helpMenuButton->setIcon(APPLICATION->getThemedIcon("help"));
+ helpMenuButton->setFocusPolicy(Qt::NoFocus);
+ all_toolbuttons.append(&helpMenuButton);
+ QWidgetAction* helpButtonAction = new QWidgetAction(MainWindow);
+ helpButtonAction->setDefaultWidget(helpMenuButton);
+ mainToolBar->addAction(helpButtonAction);
+
+ if(BuildConfig.UPDATER_ENABLED)
+ {
+ mainToolBar->addAction(actionCheckUpdate);
+ }
+
+ mainToolBar->addSeparator();
+
+ mainToolBar->addAction(actionCAT);
all_toolbars.append(&mainToolBar);
MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
@@ -475,233 +487,132 @@ public:
menuBar->setVisible(APPLICATION->settings()->get("MenuBarInsteadOfToolBar").toBool());
createMenuActions(MainWindow);
- // TODO: only enable options while an instance is selected (if applicable)
fileMenu = menuBar->addMenu(tr("&File"));
- fileMenu->addAction(newAct);
- fileMenu->addAction(openAct);
- fileMenu->addAction(openOfflineAct);
- fileMenu->addAction(closeAct);
+ fileMenu->addAction(actionAddInstance);
+ fileMenu->addAction(actionLaunchInstance);
+ fileMenu->addAction(actionLaunchInstanceOffline);
+ fileMenu->addAction(actionCloseWindow);
fileMenu->addSeparator();
- fileMenu->addAction(editInstanceAct);
- fileMenu->addAction(editNotesAct);
- fileMenu->addAction(editModsAct);
- fileMenu->addAction(editWorldsAct);
- fileMenu->addAction(manageScreenshotsAct);
- fileMenu->addAction(changeGroupAct);
+ fileMenu->addAction(actionEditInstance);
+ fileMenu->addAction(actionEditInstNotes);
+ fileMenu->addAction(actionMods);
+ fileMenu->addAction(actionWorlds);
+ fileMenu->addAction(actionScreenshots);
+ fileMenu->addAction(actionChangeInstGroup);
fileMenu->addSeparator();
- fileMenu->addAction(openMCFolderAct);
- fileMenu->addAction(openConfigFolderAct);
- fileMenu->addAction(openInstanceFolderAct);
+ fileMenu->addAction(actionViewSelectedMCFolder);
+ fileMenu->addAction(actionConfig_Folder);
+ fileMenu->addAction(actionViewSelectedInstFolder);
fileMenu->addSeparator();
- fileMenu->addAction(exportInstanceAct);
- fileMenu->addAction(deleteInstanceAct);
- fileMenu->addAction(duplicateInstanceAct);
+ fileMenu->addAction(actionExportInstance);
+ fileMenu->addAction(actionDeleteInstance);
+ fileMenu->addAction(actionCopyInstance);
fileMenu->addSeparator();
// TODO: functionality for edit actions. They're intended to be used where you can type text, e.g. notes.
editMenu = menuBar->addMenu(tr("&Edit"));
- editMenu->addAction(undoAct);
- editMenu->addAction(redoAct);
+ editMenu->addAction(actionUndo);
+ editMenu->addAction(actionRedo);
editMenu->addSeparator();
- editMenu->addAction(cutAct);
- editMenu->addAction(copyAct);
- editMenu->addAction(pasteAct);
- editMenu->addAction(selectAllAct);
+ editMenu->addAction(actionCut);
+ editMenu->addAction(actionCopy);
+ editMenu->addAction(actionPaste);
+ editMenu->addAction(actionSelectAll);
editMenu->addSeparator();
- editMenu->addAction(settingsAct);
+ editMenu->addAction(actionSettings);
+
+ viewMenu = menuBar->addMenu(tr("&View"));
+ viewMenu->addAction(actionCAT);
+ viewMenu->addSeparator();
+
+ menuBar->addMenu(foldersMenu);
profileMenu = menuBar->addMenu(tr("&Profiles"));
- profileMenu->addAction(manageAccountAct);
+ profileMenu->addAction(actionManageAccounts);
helpMenu = menuBar->addMenu(tr("&Help"));
- helpMenu->addAction(aboutAct);
- helpMenu->addAction(wikiAct);
- helpMenu->addAction(newsAct);
+ helpMenu->addAction(actionAbout);
+ helpMenu->addAction(actionWiki);
+ helpMenu->addAction(actionNewsMenuBar);
helpMenu->addSeparator();
- helpMenu->addAction(reportBugAct);
- helpMenu->addAction(matrixAct);
- helpMenu->addAction(discordAct);
- helpMenu->addAction(redditAct);
+ if (!BuildConfig.BUG_TRACKER_URL.isEmpty())
+ helpMenu->addAction(actionReportBug);
+ if (!BuildConfig.MATRIX_URL.isEmpty())
+ helpMenu->addAction(actionMATRIX);
+ if (!BuildConfig.DISCORD_URL.isEmpty())
+ helpMenu->addAction(actionDISCORD);
+ if (!BuildConfig.SUBREDDIT_URL.isEmpty())
+ helpMenu->addAction(actionREDDIT);
+ helpMenu->addSeparator();
+ if(BuildConfig.UPDATER_ENABLED)
+ helpMenu->addAction(actionCheckUpdate);
MainWindow->setMenuBar(menuBar);
}
- // If a keyboard shortcut is changed here, it must be changed below in keyPressEvent as well
void createMenuActions(MainWindow *MainWindow)
{
- newAct = new QAction(tr("&New Instance..."), MainWindow);
- newAct->setShortcuts(QKeySequence::New);
- newAct->setStatusTip(tr("Create a new instance"));
- connect(newAct, &QAction::triggered, MainWindow, &MainWindow::on_actionAddInstance_triggered);
-
- openAct = new QAction(tr("&Launch"), MainWindow);
- openAct->setShortcuts(QKeySequence::Open);
- openAct->setStatusTip(tr("Launch the selected instance"));
- openAct->setEnabled(false);
- connect(openAct, &QAction::triggered, MainWindow, &MainWindow::on_actionLaunchInstance_triggered);
-
- openOfflineAct = new QAction(tr("Launch &Offline"), MainWindow);
- openOfflineAct->setShortcut(QKeySequence(tr("Ctrl+Shift+O")));
- openOfflineAct->setStatusTip(tr("Launch the selected instance in offline mode"));
- openOfflineAct->setEnabled(false);
- connect(openOfflineAct, &QAction::triggered, MainWindow, &MainWindow::on_actionLaunchInstanceOffline_triggered);
-
- editInstanceAct = new QAction(tr("Edit Inst&ance..."), MainWindow);
- editInstanceAct->setShortcut(QKeySequence(tr("Ctrl+I")));
- editInstanceAct->setStatusTip(tr("Edit the selected instance"));
- editInstanceAct->setEnabled(false);
- connect(editInstanceAct, &QAction::triggered, MainWindow, &MainWindow::on_actionEditInstance_triggered);
-
- editNotesAct = new QAction(tr("E&dit Notes..."), MainWindow);
- editNotesAct->setStatusTip(tr("Edit the selected instance's notes"));
- editNotesAct->setEnabled(false);
- connect(editNotesAct, &QAction::triggered, MainWindow, &MainWindow::on_actionEditInstNotes_triggered);
-
- editModsAct = new QAction(tr("View &Mods"), MainWindow);
- editModsAct->setStatusTip(tr("View the selected instance's mods"));
- editModsAct->setEnabled(false);
- connect(editModsAct, &QAction::triggered, MainWindow, &MainWindow::on_actionMods_triggered);
-
- editWorldsAct = new QAction(tr("&View Worlds"), MainWindow);
- editWorldsAct->setStatusTip(tr("View the selected instance's worlds"));
- editWorldsAct->setEnabled(false);
- connect(editWorldsAct, &QAction::triggered, MainWindow, &MainWindow::on_actionWorlds_triggered);
-
- manageScreenshotsAct = new QAction(tr("Manage &Screenshots"), MainWindow);
- manageScreenshotsAct->setStatusTip(tr("Manage the selected instance's screenshots"));
- manageScreenshotsAct->setEnabled(false);
- connect(manageScreenshotsAct, &QAction::triggered, MainWindow, &MainWindow::on_actionScreenshots_triggered);
-
- changeGroupAct = new QAction(tr("&Change Group..."), MainWindow);
- changeGroupAct->setShortcut(QKeySequence(tr("Ctrl+G")));
- changeGroupAct->setStatusTip(tr("Change the selected instance's group"));
- changeGroupAct->setEnabled(false);
- connect(changeGroupAct, &QAction::triggered, MainWindow, &MainWindow::on_actionChangeInstGroup_triggered);
-
- openMCFolderAct = new QAction(tr("Open Minec&raft Folder"), MainWindow);
- openMCFolderAct->setShortcut(QKeySequence(tr("Ctrl+M")));
- openMCFolderAct->setStatusTip(tr("Open the selected instance's Minecraft folder"));
- openMCFolderAct->setEnabled(false);
- connect(openMCFolderAct, &QAction::triggered, MainWindow, &MainWindow::on_actionViewSelectedMCFolder_triggered);
-
- openConfigFolderAct = new QAction(tr("&Open Confi&g Folder"), MainWindow);
- openConfigFolderAct->setStatusTip(tr("Open the selected instance's config folder"));
- openConfigFolderAct->setEnabled(false);
- connect(openConfigFolderAct, &QAction::triggered, MainWindow, &MainWindow::on_actionConfig_Folder_triggered);
-
- openInstanceFolderAct = new QAction(tr("&Open &Instance Folder"), MainWindow);
- openInstanceFolderAct->setStatusTip(tr("Open the selected instance's main folder"));
- openInstanceFolderAct->setEnabled(false);
- connect(openInstanceFolderAct, &QAction::triggered, MainWindow, &MainWindow::on_actionViewInstanceFolder_triggered);
-
- exportInstanceAct = new QAction(tr("E&xport Instance..."), MainWindow);
- exportInstanceAct->setShortcut(QKeySequence(tr("Ctrl+E")));
- exportInstanceAct->setStatusTip(tr("Export the selected instance"));
- exportInstanceAct->setEnabled(false);
- connect(exportInstanceAct, &QAction::triggered, MainWindow, &MainWindow::on_actionExportInstance_triggered);
-
- deleteInstanceAct = new QAction(tr("Dele&te Instance..."), MainWindow);
- deleteInstanceAct->setShortcuts({QKeySequence(tr("Backspace")), QKeySequence::Delete});
- deleteInstanceAct->setStatusTip(tr("Delete the selected instance"));
- deleteInstanceAct->setEnabled(false);
- connect(deleteInstanceAct, &QAction::triggered, MainWindow, &MainWindow::on_actionDeleteInstance_triggered);
-
- duplicateInstanceAct = new QAction(tr("Cop&y Instance..."), MainWindow);
- duplicateInstanceAct->setShortcut(QKeySequence(tr("Ctrl+D")));
- duplicateInstanceAct->setStatusTip(tr("Duplicate the selected instance"));
- duplicateInstanceAct->setEnabled(false);
- connect(duplicateInstanceAct, &QAction::triggered, MainWindow, &MainWindow::on_actionCopyInstance_triggered);
-
- closeAct = new QAction(tr("Close &Window"), MainWindow);
- closeAct->setShortcut(QKeySequence::Close);
- closeAct->setStatusTip(tr("Close the current window"));
- connect(closeAct, &QAction::triggered, APPLICATION, &Application::closeCurrentWindow);
-
- undoAct = new QAction(tr("&Undo"), MainWindow);
- undoAct->setShortcuts(QKeySequence::Undo);
- undoAct->setStatusTip(tr("Undo"));
- undoAct->setEnabled(false);
-
- redoAct = new QAction(tr("&Redo"), MainWindow);
- redoAct->setShortcuts(QKeySequence::Redo);
- redoAct->setStatusTip(tr("Redo"));
- redoAct->setEnabled(false);
-
- cutAct = new QAction(tr("Cu&t"), MainWindow);
- cutAct->setShortcuts(QKeySequence::Cut);
- cutAct->setStatusTip(tr("Cut"));
- cutAct->setEnabled(false);
-
- copyAct = new QAction(tr("&Copy"), MainWindow);
- copyAct->setShortcuts(QKeySequence::Copy);
- copyAct->setStatusTip(tr("Copy"));
- copyAct->setEnabled(false);
-
- pasteAct = new QAction(tr("&Paste"), MainWindow);
- pasteAct->setShortcuts(QKeySequence::Paste);
- pasteAct->setStatusTip(tr("Paste"));
- pasteAct->setEnabled(false);
-
- selectAllAct = new QAction(tr("Select &All"), MainWindow);
- selectAllAct->setShortcuts(QKeySequence::SelectAll);
- selectAllAct->setStatusTip(tr("Select all"));
- selectAllAct->setEnabled(false);
-
- settingsAct = new QAction(tr("&Settings..."), MainWindow);
- settingsAct->setShortcut(QKeySequence::Preferences);
- settingsAct->setStatusTip(tr("Change %1 settings").arg(BuildConfig.LAUNCHER_NAME));
- connect(settingsAct, &QAction::triggered, MainWindow, &MainWindow::on_actionSettings_triggered);
-
- manageAccountAct = new QAction(tr("&Manage Accounts..."), MainWindow);
- manageAccountAct->setStatusTip(tr("Open account manager"));
- connect(manageAccountAct, &QAction::triggered, MainWindow, &MainWindow::on_actionManageAccounts_triggered);
-
- aboutAct = new QAction(tr("&About"), MainWindow);
- aboutAct->setStatusTip(tr("About %1").arg(BuildConfig.LAUNCHER_NAME));
- connect(aboutAct, &QAction::triggered, MainWindow, &MainWindow::on_actionAbout_triggered);
-
- wikiAct = new QAction(tr("%1 He&lp").arg(BuildConfig.LAUNCHER_NAME), MainWindow);
- wikiAct->setStatusTip(tr("Open %1's wiki").arg(BuildConfig.LAUNCHER_NAME));
- connect(wikiAct, &QAction::triggered, MainWindow, &MainWindow::on_actionOpenWiki_triggered);
-
- newsAct = new QAction(tr("&%1 &News").arg(BuildConfig.LAUNCHER_NAME), MainWindow);
- newsAct->setStatusTip(tr("Open %1's news").arg(BuildConfig.LAUNCHER_NAME));
- connect(newsAct, &QAction::triggered, MainWindow, &MainWindow::on_actionMoreNews_triggered);
-
- reportBugAct = new QAction(tr("Report &Bugs..."), MainWindow);
- reportBugAct->setStatusTip(tr("Report bugs to the developers"));
- connect(reportBugAct, &QAction::triggered, MainWindow, &MainWindow::on_actionReportBug_triggered);
-
- matrixAct = new QAction(tr("&Matrix"), MainWindow);
- matrixAct->setStatusTip(tr("Open %1's Matrix space").arg(BuildConfig.LAUNCHER_NAME));
- connect(matrixAct, &QAction::triggered, MainWindow, &MainWindow::on_actionMATRIX_triggered);
-
- discordAct = new QAction(tr("&Discord"), MainWindow);
- discordAct->setStatusTip(tr("Open %1's Discord guild").arg(BuildConfig.LAUNCHER_NAME));
- connect(discordAct, &QAction::triggered, MainWindow, &MainWindow::on_actionDISCORD_triggered);
-
- redditAct = new QAction(tr("&Reddit"), MainWindow);
- redditAct->setStatusTip(tr("Open %1's subreddit").arg(BuildConfig.LAUNCHER_NAME));
- connect(redditAct, &QAction::triggered, MainWindow, &MainWindow::on_actionREDDIT_triggered);
+ actionCloseWindow = new QAction(tr("Close &Window"), MainWindow);
+ actionCloseWindow->setShortcut(QKeySequence::Close);
+ actionCloseWindow->setStatusTip(tr("Close the current window"));
+ connect(actionCloseWindow, &QAction::triggered, APPLICATION, &Application::closeCurrentWindow);
+
+ actionUndo = new QAction(tr("&Undo"), MainWindow);
+ actionUndo->setShortcuts(QKeySequence::Undo);
+ actionUndo->setStatusTip(tr("Undo"));
+ actionUndo->setEnabled(false);
+
+ actionRedo = new QAction(tr("&Redo"), MainWindow);
+ actionRedo->setShortcuts(QKeySequence::Redo);
+ actionRedo->setStatusTip(tr("Redo"));
+ actionRedo->setEnabled(false);
+
+ actionCut = new QAction(tr("Cu&t"), MainWindow);
+ actionCut->setShortcuts(QKeySequence::Cut);
+ actionCut->setStatusTip(tr("Cut"));
+ actionCut->setEnabled(false);
+
+ actionCopy = new QAction(tr("&Copy"), MainWindow);
+ actionCopy->setShortcuts(QKeySequence::Copy);
+ actionCopy->setStatusTip(tr("Copy"));
+ actionCopy->setEnabled(false);
+
+ actionPaste = new QAction(tr("&Paste"), MainWindow);
+ actionPaste->setShortcuts(QKeySequence::Paste);
+ actionPaste->setStatusTip(tr("Paste"));
+ actionPaste->setEnabled(false);
+
+ actionSelectAll = new QAction(tr("Select &All"), MainWindow);
+ actionSelectAll->setShortcuts(QKeySequence::SelectAll);
+ actionSelectAll->setStatusTip(tr("Select all"));
+ actionSelectAll->setEnabled(false);
+
+ actionWiki = new QAction(tr("%1 He&lp").arg(BuildConfig.LAUNCHER_NAME), MainWindow);
+ actionWiki->setStatusTip(tr("Open the %1 wiki").arg(BuildConfig.LAUNCHER_NAME));
+ connect(actionWiki, &QAction::triggered, MainWindow, &MainWindow::on_actionOpenWiki_triggered);
+
+ actionNewsMenuBar = new QAction(tr("&%1 &News").arg(BuildConfig.LAUNCHER_NAME), MainWindow);
+ actionNewsMenuBar->setStatusTip(tr("Open the development blog to read more news about %1.").arg(BuildConfig.LAUNCHER_NAME));
+ connect(actionNewsMenuBar, &QAction::triggered, MainWindow, &MainWindow::on_actionMoreNews_triggered);
}
// "Instance actions" are actions that require an instance to be selected (i.e. "new instance" is not here)
- void setInstanceActionsEnabled(bool enabled) const
- {
- openAct->setEnabled(enabled);
- openOfflineAct->setEnabled(enabled);
- editInstanceAct->setEnabled(enabled);
- editNotesAct->setEnabled(enabled);
- editModsAct->setEnabled(enabled);
- editWorldsAct->setEnabled(enabled);
- manageScreenshotsAct->setEnabled(enabled);
- changeGroupAct->setEnabled(enabled);
- openMCFolderAct->setEnabled(enabled);
- openConfigFolderAct->setEnabled(enabled);
- openInstanceFolderAct->setEnabled(enabled);
- exportInstanceAct->setEnabled(enabled);
- deleteInstanceAct->setEnabled(enabled);
- duplicateInstanceAct->setEnabled(enabled);
+ void setInstanceActionsEnabled(bool enabled)
+ {
+ actionLaunchInstance->setEnabled(enabled);
+ actionLaunchInstanceOffline->setEnabled(enabled);
+ actionEditInstance->setEnabled(enabled);
+ actionEditInstNotes->setEnabled(enabled);
+ actionMods->setEnabled(enabled);
+ actionWorlds->setEnabled(enabled);
+ actionScreenshots->setEnabled(enabled);
+ actionChangeInstGroup->setEnabled(enabled);
+ actionViewSelectedMCFolder->setEnabled(enabled);
+ actionConfig_Folder->setEnabled(enabled);
+ actionViewSelectedInstFolder->setEnabled(enabled);
+ actionExportInstance->setEnabled(enabled);
+ actionDeleteInstance->setEnabled(enabled);
+ actionCopyInstance->setEnabled(enabled);
}
void createStatusBar(QMainWindow *MainWindow)
@@ -734,18 +645,8 @@ public:
MainWindow->addToolBar(Qt::BottomToolBarArea, newsToolBar);
}
- void createInstanceToolbar(QMainWindow *MainWindow)
+ void createInstanceActions(QMainWindow *MainWindow)
{
- instanceToolBar = TranslatedToolbar(MainWindow);
- instanceToolBar->setObjectName(QStringLiteral("instanceToolBar"));
- // disabled until we have an instance selected
- instanceToolBar->setEnabled(false);
- instanceToolBar->setMovable(true);
- instanceToolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
- instanceToolBar->setToolButtonStyle(Qt::ToolButtonTextOnly);
- instanceToolBar->setFloatable(false);
- instanceToolBar->setWindowTitle(QT_TRANSLATE_NOOP("MainWindow", "Instance Toolbar"));
-
// NOTE: not added to toolbar, but used for instance context menu (right click)
actionChangeInstIcon = TranslatedAction(MainWindow);
actionChangeInstIcon->setObjectName(QStringLiteral("actionChangeInstIcon"));
@@ -760,7 +661,6 @@ public:
changeIconButton->setIcon(APPLICATION->getThemedIcon("news"));
changeIconButton->setToolTip(actionChangeInstIcon->toolTip());
changeIconButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- instanceToolBar->addWidget(changeIconButton);
// NOTE: not added to toolbar, but used for instance context menu (right click)
actionRenameInstance = TranslatedAction(MainWindow);
@@ -774,74 +674,61 @@ public:
renameButton->setObjectName(QStringLiteral("renameButton"));
renameButton->setToolTip(actionRenameInstance->toolTip());
renameButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- instanceToolBar->addWidget(renameButton);
-
- instanceToolBar->addSeparator();
actionLaunchInstance = TranslatedAction(MainWindow);
actionLaunchInstance->setObjectName(QStringLiteral("actionLaunchInstance"));
all_actions.append(&actionLaunchInstance);
- instanceToolBar->addAction(actionLaunchInstance);
actionLaunchInstanceOffline = TranslatedAction(MainWindow);
actionLaunchInstanceOffline->setObjectName(QStringLiteral("actionLaunchInstanceOffline"));
- actionLaunchInstanceOffline.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Launch Offline"));
+ actionLaunchInstanceOffline.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Launch &Offline"));
actionLaunchInstanceOffline.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Launch the selected instance in offline mode."));
all_actions.append(&actionLaunchInstanceOffline);
- instanceToolBar->addAction(actionLaunchInstanceOffline);
-
- instanceToolBar->addSeparator();
actionEditInstance = TranslatedAction(MainWindow);
actionEditInstance->setObjectName(QStringLiteral("actionEditInstance"));
- actionEditInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Edit Instance"));
+ actionEditInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Edit Inst&ance..."));
actionEditInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the instance settings, mods and versions."));
+ actionEditInstance->setShortcut(QKeySequence(tr("Ctrl+I")));
all_actions.append(&actionEditInstance);
- instanceToolBar->addAction(actionEditInstance);
actionEditInstNotes = TranslatedAction(MainWindow);
actionEditInstNotes->setObjectName(QStringLiteral("actionEditInstNotes"));
- actionEditInstNotes.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Edit Notes"));
+ actionEditInstNotes.setTextId(QT_TRANSLATE_NOOP("MainWindow", "E&dit Notes..."));
actionEditInstNotes.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Edit the notes for the selected instance."));
all_actions.append(&actionEditInstNotes);
- instanceToolBar->addAction(actionEditInstNotes);
actionMods = TranslatedAction(MainWindow);
actionMods->setObjectName(QStringLiteral("actionMods"));
- actionMods.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Mods"));
+ actionMods.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View &Mods"));
actionMods.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View the mods of this instance."));
all_actions.append(&actionMods);
- instanceToolBar->addAction(actionMods);
actionWorlds = TranslatedAction(MainWindow);
actionWorlds->setObjectName(QStringLiteral("actionWorlds"));
- actionWorlds.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Worlds"));
+ actionWorlds.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&View Worlds"));
actionWorlds.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View the worlds of this instance."));
all_actions.append(&actionWorlds);
- instanceToolBar->addAction(actionWorlds);
actionScreenshots = TranslatedAction(MainWindow);
actionScreenshots->setObjectName(QStringLiteral("actionScreenshots"));
- actionScreenshots.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Manage Screenshots"));
+ actionScreenshots.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Manage &Screenshots"));
actionScreenshots.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View and upload screenshots for this instance."));
all_actions.append(&actionScreenshots);
- instanceToolBar->addAction(actionScreenshots);
actionChangeInstGroup = TranslatedAction(MainWindow);
actionChangeInstGroup->setObjectName(QStringLiteral("actionChangeInstGroup"));
- actionChangeInstGroup.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Change Group"));
+ actionChangeInstGroup.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Change Group..."));
actionChangeInstGroup.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Change the selected instance's group."));
+ actionChangeInstGroup->setShortcut(QKeySequence(tr("Ctrl+G")));
all_actions.append(&actionChangeInstGroup);
- instanceToolBar->addAction(actionChangeInstGroup);
-
- instanceToolBar->addSeparator();
actionViewSelectedMCFolder = TranslatedAction(MainWindow);
actionViewSelectedMCFolder->setObjectName(QStringLiteral("actionViewSelectedMCFolder"));
- actionViewSelectedMCFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Minecraft Folder"));
+ actionViewSelectedMCFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Minec&raft Folder"));
actionViewSelectedMCFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's Minecraft folder in a file browser."));
+ actionViewSelectedMCFolder->setShortcut(QKeySequence(tr("Ctrl+M")));
all_actions.append(&actionViewSelectedMCFolder);
- instanceToolBar->addAction(actionViewSelectedMCFolder);
/*
actionViewSelectedModsFolder = TranslatedAction(MainWindow);
@@ -849,45 +736,89 @@ public:
actionViewSelectedModsFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Mods Folder"));
actionViewSelectedModsFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's mods folder in a file browser."));
all_actions.append(&actionViewSelectedModsFolder);
- instanceToolBar->addAction(actionViewSelectedModsFolder);
*/
actionConfig_Folder = TranslatedAction(MainWindow);
actionConfig_Folder->setObjectName(QStringLiteral("actionConfig_Folder"));
- actionConfig_Folder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Config Folder"));
+ actionConfig_Folder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Confi&g Folder"));
actionConfig_Folder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the instance's config folder."));
+ // Qt on macOS is "smart" and will eat up this action when added to the menu bar because it starts with the word "config"...
+ // Docs: https://doc.qt.io/qt-5/qmenubar.html#qmenubar-as-a-global-menu-bar
+ actionConfig_Folder->setMenuRole(QAction::NoRole);
all_actions.append(&actionConfig_Folder);
- instanceToolBar->addAction(actionConfig_Folder);
actionViewSelectedInstFolder = TranslatedAction(MainWindow);
actionViewSelectedInstFolder->setObjectName(QStringLiteral("actionViewSelectedInstFolder"));
- actionViewSelectedInstFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Instance Folder"));
+ actionViewSelectedInstFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Instance Folder"));
actionViewSelectedInstFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's root folder in a file browser."));
all_actions.append(&actionViewSelectedInstFolder);
- instanceToolBar->addAction(actionViewSelectedInstFolder);
-
- instanceToolBar->addSeparator();
actionExportInstance = TranslatedAction(MainWindow);
actionExportInstance->setObjectName(QStringLiteral("actionExportInstance"));
- actionExportInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Export Instance"));
+ actionExportInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "E&xport Instance..."));
actionExportInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Export the selected instance as a zip file."));
+ actionExportInstance->setShortcut(QKeySequence(tr("Ctrl+E")));
all_actions.append(&actionExportInstance);
- instanceToolBar->addAction(actionExportInstance);
actionDeleteInstance = TranslatedAction(MainWindow);
actionDeleteInstance->setObjectName(QStringLiteral("actionDeleteInstance"));
- actionDeleteInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Delete Instance"));
+ actionDeleteInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Dele&te Instance..."));
actionDeleteInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Delete the selected instance."));
+ actionDeleteInstance->setShortcuts({QKeySequence(tr("Backspace")), QKeySequence::Delete});
all_actions.append(&actionDeleteInstance);
- instanceToolBar->addAction(actionDeleteInstance);
actionCopyInstance = TranslatedAction(MainWindow);
actionCopyInstance->setObjectName(QStringLiteral("actionCopyInstance"));
actionCopyInstance->setIcon(APPLICATION->getThemedIcon("copy"));
- actionCopyInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Copy Instance"));
+ actionCopyInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Cop&y Instance..."));
actionCopyInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Copy the selected instance."));
+ actionCopyInstance->setShortcut(QKeySequence(tr("Ctrl+D")));
all_actions.append(&actionCopyInstance);
+
+ }
+
+ void createInstanceToolbar(QMainWindow *MainWindow)
+ {
+ instanceToolBar = TranslatedToolbar(MainWindow);
+ instanceToolBar->setObjectName(QStringLiteral("instanceToolBar"));
+ // disabled until we have an instance selected
+ instanceToolBar->setEnabled(false);
+ instanceToolBar->setMovable(true);
+ instanceToolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
+ instanceToolBar->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ instanceToolBar->setFloatable(false);
+ instanceToolBar->setWindowTitle(QT_TRANSLATE_NOOP("MainWindow", "Instance Toolbar"));
+
+ instanceToolBar->addWidget(changeIconButton);
+ instanceToolBar->addWidget(renameButton);
+
+ instanceToolBar->addSeparator();
+
+ instanceToolBar->addAction(actionLaunchInstance);
+ instanceToolBar->addAction(actionLaunchInstanceOffline);
+
+ instanceToolBar->addSeparator();
+
+ instanceToolBar->addAction(actionEditInstance);
+ instanceToolBar->addAction(actionEditInstNotes);
+ instanceToolBar->addAction(actionMods);
+ instanceToolBar->addAction(actionWorlds);
+ instanceToolBar->addAction(actionScreenshots);
+ instanceToolBar->addAction(actionChangeInstGroup);
+
+ instanceToolBar->addSeparator();
+
+ instanceToolBar->addAction(actionViewSelectedMCFolder);
+ /*
+ instanceToolBar->addAction(actionViewSelectedModsFolder);
+ */
+ instanceToolBar->addAction(actionConfig_Folder);
+ instanceToolBar->addAction(actionViewSelectedInstFolder);
+
+ instanceToolBar->addSeparator();
+
+ instanceToolBar->addAction(actionExportInstance);
+ instanceToolBar->addAction(actionDeleteInstance);
instanceToolBar->addAction(actionCopyInstance);
all_toolbars.append(&instanceToolBar);
@@ -907,6 +838,9 @@ public:
MainWindow->setAccessibleName(BuildConfig.LAUNCHER_NAME);
#endif
+ createMainToolbarActions(MainWindow);
+ createInstanceActions(MainWindow);
+
createMenuBar(dynamic_cast<class MainWindow *>(MainWindow));
createMainToolbar(MainWindow);
@@ -1138,57 +1072,6 @@ void MainWindow::keyReleaseEvent(QKeyEvent *event)
else
QMainWindow::keyReleaseEvent(event);
}
-
-// FIXME: This is a hack because keyboard shortcuts do nothing while menu bar is hidden on systems without native menu bar
-// If a keyboard shortcut is changed above in `createMenuActions`, it must be changed here as well
-void MainWindow::keyPressEvent(QKeyEvent *event)
-{
- if(ui->menuBar->isVisible() || ui->menuBar->isNativeMenuBar())
- {
- QMainWindow::keyPressEvent(event);
- return; // let the menu bar handle the keyboard shortcuts
- }
-
- if(event->modifiers().testFlag(Qt::ControlModifier))
- {
- switch(event->key())
- {
- case Qt::Key_N:
- on_actionAddInstance_triggered();
- return;
- case Qt::Key_O:
- if(event->modifiers().testFlag(Qt::ShiftModifier))
- on_actionLaunchInstanceOffline_triggered();
- else
- on_actionLaunchInstance_triggered();
- return;
- case Qt::Key_I:
- on_actionEditInstance_triggered();
- return;
- case Qt::Key_G:
- on_actionChangeInstGroup_triggered();
- return;
- case Qt::Key_M:
- on_actionViewSelectedMCFolder_triggered();
- return;
- case Qt::Key_E:
- on_actionExportInstance_triggered();
- return;
- case Qt::Key_Delete:
- on_actionDeleteInstance_triggered();
- return;
- case Qt::Key_D:
- on_actionCopyInstance_triggered();
- return;
- case Qt::Key_W:
- close();
- return;
- // Text editing shortcuts are handled by the OS, so they do not need to be implemented here again
- default:
- return;
- }
- }
-}
#endif
void MainWindow::retranslateUi()
@@ -1333,7 +1216,9 @@ void MainWindow::updateToolsMenu()
}
QAction *normalLaunch = launchMenu->addAction(tr("Launch"));
+ normalLaunch->setShortcut(QKeySequence::Open);
QAction *normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch Offline"));
+ normalLaunchOffline->setShortcut(QKeySequence(tr("Ctrl+Shift+O")));
connect(normalLaunch, &QAction::triggered, [this]()
{
APPLICATION->launch(m_selectedInstance, true);
@@ -1454,7 +1339,7 @@ void MainWindow::repopulateAccountsMenu()
accountMenu->addSeparator();
ui->profileMenu->addSeparator();
accountMenu->addAction(ui->actionManageAccounts);
- ui->profileMenu->addAction(ui->manageAccountAct);
+ ui->profileMenu->addAction(ui->actionManageAccounts);
}
void MainWindow::updatesAllowedChanged(bool allowed)
diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h
index 5424a4a9..2032acba 100644
--- a/launcher/ui/MainWindow.h
+++ b/launcher/ui/MainWindow.h
@@ -190,8 +190,6 @@ private slots:
#ifndef Q_OS_MAC
void keyReleaseEvent(QKeyEvent *event) override;
-
- void keyPressEvent(QKeyEvent *event) override;
#endif
private: