UI: Add scene grid mode to view menu

Makes toggling of the scene list grid mode also available in the
view menu.
This commit is contained in:
cg2121 2023-02-08 03:57:51 -06:00 committed by Lain
parent 17cb966c62
commit 3a53882675
4 changed files with 56 additions and 0 deletions

View file

@ -113,6 +113,8 @@ SourceProperties="Open Source Properties"
SourceFilters="Open Source Filters" SourceFilters="Open Source Filters"
MixerToolbarMenu="Audio Mixer Menu" MixerToolbarMenu="Audio Mixer Menu"
SceneFilters="Open Scene Filters" SceneFilters="Open Scene Filters"
List="List"
Grid="Grid"
# warning for plugin load failures # warning for plugin load failures
PluginsFailedToLoad.Title="Plugin Load Error" 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.Fullscreen.Interface="Fullscreen Interface"
Basic.MainMenu.View.ResetUI="&Reset UI" Basic.MainMenu.View.ResetUI="&Reset UI"
Basic.MainMenu.View.AlwaysOnTop="&Always On Top" Basic.MainMenu.View.AlwaysOnTop="&Always On Top"
Basic.MainMenu.View.SceneListMode="Scene List Mode"
#basic mode docks menu #basic mode docks menu

View file

@ -667,6 +667,13 @@
<property name="title"> <property name="title">
<string>Basic.MainMenu.View</string> <string>Basic.MainMenu.View</string>
</property> </property>
<widget class="QMenu" name="sceneListModeMenu">
<property name="title">
<string>Basic.MainMenu.View.SceneListMode</string>
</property>
<addaction name="actionSceneListMode"/>
<addaction name="actionSceneGridMode"/>
</widget>
<action name="resetUI"> <action name="resetUI">
<property name="text"> <property name="text">
<string>Basic.MainMenu.View.ResetUI</string> <string>Basic.MainMenu.View.ResetUI</string>
@ -683,6 +690,7 @@
<addaction name="resetUI"/> <addaction name="resetUI"/>
<addaction name="actionFullscreenInterface"/> <addaction name="actionFullscreenInterface"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="sceneListModeMenu"/>
<addaction name="toggleListboxToolbars"/> <addaction name="toggleListboxToolbars"/>
<addaction name="toggleContextBar"/> <addaction name="toggleContextBar"/>
<addaction name="toggleSourceIcons"/> <addaction name="toggleSourceIcons"/>
@ -2300,6 +2308,22 @@
<string>filtersIcon</string> <string>filtersIcon</string>
</property> </property>
</action> </action>
<action name="actionSceneGridMode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Grid</string>
</property>
</action>
<action name="actionSceneListMode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>List</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View file

@ -34,6 +34,7 @@
#include <QSizePolicy> #include <QSizePolicy>
#include <QScrollBar> #include <QScrollBar>
#include <QTextStream> #include <QTextStream>
#include <QActionGroup>
#include <util/dstr.h> #include <util/dstr.h>
#include <util/util.hpp> #include <util/util.hpp>
@ -352,6 +353,11 @@ OBSBasic::OBSBasic(QWidget *parent)
"gridMode"); "gridMode");
ui->scenes->SetGridMode(sceneGrid); ui->scenes->SetGridMode(sceneGrid);
if (sceneGrid)
ui->actionSceneGridMode->setChecked(true);
else
ui->actionSceneListMode->setChecked(true);
ui->scenes->setItemDelegate(new SceneRenameDelegate(ui->scenes)); ui->scenes->setItemDelegate(new SceneRenameDelegate(ui->scenes));
auto displayResize = [this]() { auto displayResize = [this]() {
@ -517,6 +523,10 @@ OBSBasic::OBSBasic(QWidget *parent)
connect(App(), &OBSApp::StyleChanged, this, connect(App(), &OBSApp::StyleChanged, this,
&OBSBasic::ResetProxyStyleSliders); &OBSBasic::ResetProxyStyleSliders);
QActionGroup *actionGroup = new QActionGroup(this);
actionGroup->addAction(ui->actionSceneListMode);
actionGroup->addAction(ui->actionSceneGridMode);
UpdatePreviewSafeAreas(); UpdatePreviewSafeAreas();
UpdatePreviewSpacingHelpers(); UpdatePreviewSpacingHelpers();
UpdatePreviewOverflowSettings(); UpdatePreviewOverflowSettings();
@ -5464,10 +5474,25 @@ void OBSBasic::on_scenes_customContextMenuRequested(const QPoint &pos)
popup.exec(QCursor::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() void OBSBasic::GridActionClicked()
{ {
bool gridMode = !ui->scenes->GetGridMode(); bool gridMode = !ui->scenes->GetGridMode();
ui->scenes->SetGridMode(gridMode); ui->scenes->SetGridMode(gridMode);
if (gridMode)
ui->actionSceneGridMode->setChecked(true);
else
ui->actionSceneListMode->setChecked(true);
} }
void OBSBasic::on_actionAddScene_triggered() void OBSBasic::on_actionAddScene_triggered()
@ -9346,6 +9371,8 @@ void OBSBasic::on_resetUI_triggered()
ui->toggleContextBar->setChecked(true); ui->toggleContextBar->setChecked(true);
ui->toggleSourceIcons->setChecked(true); ui->toggleSourceIcons->setChecked(true);
ui->toggleStatusBar->setChecked(true); ui->toggleStatusBar->setChecked(true);
ui->scenes->SetGridMode(false);
ui->actionSceneListMode->setChecked(true);
} }
void OBSBasic::on_multiviewProjectorWindowed_triggered() void OBSBasic::on_multiviewProjectorWindowed_triggered()

View file

@ -1062,6 +1062,8 @@ private slots:
QListWidgetItem *prev); QListWidgetItem *prev);
void on_scenes_customContextMenuRequested(const QPoint &pos); void on_scenes_customContextMenuRequested(const QPoint &pos);
void GridActionClicked(); void GridActionClicked();
void on_actionSceneListMode_triggered();
void on_actionSceneGridMode_triggered();
void on_actionAddScene_triggered(); void on_actionAddScene_triggered();
void on_actionRemoveScene_triggered(); void on_actionRemoveScene_triggered();
void on_actionSceneUp_triggered(); void on_actionSceneUp_triggered();