Browse Source

UI: Add scene grid mode to view menu

Makes toggling of the scene list grid mode also available in the
view menu.
cg2121 2 years ago
parent
commit
3a53882675
4 changed files with 56 additions and 0 deletions
  1. 3 0
      UI/data/locale/en-US.ini
  2. 24 0
      UI/forms/OBSBasic.ui
  3. 27 0
      UI/window-basic-main.cpp
  4. 2 0
      UI/window-basic-main.hpp

+ 3 - 0
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

+ 24 - 0
UI/forms/OBSBasic.ui

@@ -667,6 +667,13 @@
     <property name="title">
      <string>Basic.MainMenu.View</string>
     </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">
      <property name="text">
       <string>Basic.MainMenu.View.ResetUI</string>
@@ -683,6 +690,7 @@
     <addaction name="resetUI"/>
     <addaction name="actionFullscreenInterface"/>
     <addaction name="separator"/>
+    <addaction name="sceneListModeMenu"/>
     <addaction name="toggleListboxToolbars"/>
     <addaction name="toggleContextBar"/>
     <addaction name="toggleSourceIcons"/>
@@ -2300,6 +2308,22 @@
     <string>filtersIcon</string>
    </property>
   </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>
  <customwidgets>
   <customwidget>

+ 27 - 0
UI/window-basic-main.cpp

@@ -34,6 +34,7 @@
 #include <QSizePolicy>
 #include <QScrollBar>
 #include <QTextStream>
+#include <QActionGroup>
 
 #include <util/dstr.h>
 #include <util/util.hpp>
@@ -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()

+ 2 - 0
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();