From 3a5388267503a4d25e6a6c4246b45bdb87f13e3c Mon Sep 17 00:00:00 2001 From: cg2121 Date: Wed, 8 Feb 2023 03:57:51 -0600 Subject: [PATCH] UI: Add scene grid mode to view menu Makes toggling of the scene list grid mode also available in the view menu. --- UI/data/locale/en-US.ini | 3 +++ UI/forms/OBSBasic.ui | 24 ++++++++++++++++++++++++ UI/window-basic-main.cpp | 27 +++++++++++++++++++++++++++ UI/window-basic-main.hpp | 2 ++ 4 files changed, 56 insertions(+) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index b5bc2b0ff..ac7c5607a 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -113,6 +113,8 @@ SourceProperties="Open Source Properties" SourceFilters="Open Source Filters" MixerToolbarMenu="Audio Mixer Menu" SceneFilters="Open Scene Filters" +List="List" +Grid="Grid" # warning for plugin load failures PluginsFailedToLoad.Title="Plugin Load Error" @@ -794,6 +796,7 @@ Basic.MainMenu.View.StatusBar="&Status Bar" Basic.MainMenu.View.Fullscreen.Interface="Fullscreen Interface" Basic.MainMenu.View.ResetUI="&Reset UI" Basic.MainMenu.View.AlwaysOnTop="&Always On Top" +Basic.MainMenu.View.SceneListMode="Scene List Mode" #basic mode docks menu diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui index 89d7c97ce..ddb942d54 100644 --- a/UI/forms/OBSBasic.ui +++ b/UI/forms/OBSBasic.ui @@ -667,6 +667,13 @@ Basic.MainMenu.View + + + Basic.MainMenu.View.SceneListMode + + + + Basic.MainMenu.View.ResetUI @@ -683,6 +690,7 @@ + @@ -2300,6 +2308,22 @@ filtersIcon + + + true + + + Grid + + + + + true + + + List + + diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 28a5f2ae6..a5cd7b8d1 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -352,6 +353,11 @@ OBSBasic::OBSBasic(QWidget *parent) "gridMode"); ui->scenes->SetGridMode(sceneGrid); + if (sceneGrid) + ui->actionSceneGridMode->setChecked(true); + else + ui->actionSceneListMode->setChecked(true); + ui->scenes->setItemDelegate(new SceneRenameDelegate(ui->scenes)); auto displayResize = [this]() { @@ -517,6 +523,10 @@ OBSBasic::OBSBasic(QWidget *parent) connect(App(), &OBSApp::StyleChanged, this, &OBSBasic::ResetProxyStyleSliders); + QActionGroup *actionGroup = new QActionGroup(this); + actionGroup->addAction(ui->actionSceneListMode); + actionGroup->addAction(ui->actionSceneGridMode); + UpdatePreviewSafeAreas(); UpdatePreviewSpacingHelpers(); UpdatePreviewOverflowSettings(); @@ -5464,10 +5474,25 @@ void OBSBasic::on_scenes_customContextMenuRequested(const QPoint &pos) popup.exec(QCursor::pos()); } +void OBSBasic::on_actionSceneListMode_triggered() +{ + ui->scenes->SetGridMode(false); +} + +void OBSBasic::on_actionSceneGridMode_triggered() +{ + ui->scenes->SetGridMode(true); +} + void OBSBasic::GridActionClicked() { bool gridMode = !ui->scenes->GetGridMode(); ui->scenes->SetGridMode(gridMode); + + if (gridMode) + ui->actionSceneGridMode->setChecked(true); + else + ui->actionSceneListMode->setChecked(true); } void OBSBasic::on_actionAddScene_triggered() @@ -9346,6 +9371,8 @@ void OBSBasic::on_resetUI_triggered() ui->toggleContextBar->setChecked(true); ui->toggleSourceIcons->setChecked(true); ui->toggleStatusBar->setChecked(true); + ui->scenes->SetGridMode(false); + ui->actionSceneListMode->setChecked(true); } void OBSBasic::on_multiviewProjectorWindowed_triggered() diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 18bc02d04..44c5aa513 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -1062,6 +1062,8 @@ private slots: QListWidgetItem *prev); void on_scenes_customContextMenuRequested(const QPoint &pos); void GridActionClicked(); + void on_actionSceneListMode_triggered(); + void on_actionSceneGridMode_triggered(); void on_actionAddScene_triggered(); void on_actionRemoveScene_triggered(); void on_actionSceneUp_triggered();