From b3c5524a483647ada8d51ec87d63af760d8adb54 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Sat, 18 Jun 2022 02:05:46 -0500 Subject: [PATCH] UI: Add scene names to preview/program labels This makes it easier for users to determine what is the current preview or program scene. --- UI/data/locale/en-US.ini | 2 ++ UI/forms/OBSBasic.ui | 17 ++++++++--- UI/window-basic-main-transitions.cpp | 45 +++++++++++++++++++++------- UI/window-basic-main.cpp | 18 ++--------- UI/window-basic-main.hpp | 2 ++ 5 files changed, 54 insertions(+), 30 deletions(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 14a7092bd..141774a1f 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -86,6 +86,8 @@ HideTransition="Hide Transition" None="None" StudioMode.Preview="Preview" StudioMode.Program="Program" +StudioMode.PreviewSceneName="Preview: %1" +StudioMode.ProgramSceneName="Program: %1" ShowInMultiview="Show in Multiview" VerticalLayout="Vertical Layout" Group="Group" diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui index 9ddce5dcb..514d07aa3 100644 --- a/UI/forms/OBSBasic.ui +++ b/UI/forms/OBSBasic.ui @@ -42,13 +42,13 @@ 0 - 0 + 4 0 - 0 + 4 0 @@ -158,11 +158,20 @@ + + + 0 + 0 + + - StudioMode.Preview + StudioMode.PreviewSceneName - Qt::AlignBottom|Qt::AlignHCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + previewProgramLabels diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index 1382e12d6..8a8d709fe 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -265,6 +265,7 @@ void OBSBasic::TransitionStopped() } EnableTransitionWidgets(true); + UpdatePreviewProgramIndicators(); if (api) { api->on_event(OBS_FRONTEND_EVENT_TRANSITION_STOPPED); @@ -699,6 +700,7 @@ void OBSBasic::SetCurrentScene(OBSSource scene, bool force) } UpdateContextBar(true); + UpdatePreviewProgramIndicators(); if (scene) { bool userSwitched = (!force && !disableSaving); @@ -1578,8 +1580,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled) if (IsPreviewProgramMode() == enabled) return; - ui->previewLabel->setHidden(!enabled); - ui->modeSwitch->setChecked(enabled); os_atomic_set_bool(&previewProgramMode, enabled); @@ -1618,10 +1618,10 @@ void OBSBasic::SetPreviewProgramMode(bool enabled) RefreshQuickTransitions(); - programLabel = new QLabel(QTStr("StudioMode.Program"), this); - programLabel->setSizePolicy(QSizePolicy::Preferred, + programLabel = + new QLabel(QTStr("StudioMode.ProgramSceneLabel"), this); + programLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); - programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); programLabel->setProperty("themeID", "previewProgramLabels"); programWidget = new QWidget(); @@ -1633,11 +1633,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled) programLayout->addWidget(programLabel); programLayout->addWidget(program); - bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow", - "StudioModeLabels"); - - programLabel->setHidden(!labels); - programWidget->setLayout(programLayout); ui->previewLayout->addWidget(programOptions); @@ -1822,3 +1817,33 @@ int OBSBasic::GetOverrideTransitionDuration(OBSSource source) return (int)obs_data_get_int(data, "transition_duration"); } + +void OBSBasic::UpdatePreviewProgramIndicators() +{ + bool labels = previewProgramMode ? config_get_bool(GetGlobalConfig(), + "BasicWindow", + "StudioModeLabels") + : false; + + ui->previewLabel->setVisible(labels); + + if (programLabel) + programLabel->setVisible(labels); + + if (!labels) + return; + + QString preview = QTStr("StudioMode.PreviewSceneName") + .arg(QT_UTF8(obs_source_get_name( + GetCurrentSceneSource()))); + + QString program = + QTStr("StudioMode.ProgramSceneName") + .arg(QT_UTF8(obs_source_get_name(GetProgramSource()))); + + if (ui->previewLabel->text() != preview) + ui->previewLabel->setText(preview); + + if (programLabel && programLabel->text() != program) + programLabel->setText(program); +} diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index bbc8fc575..a76479e33 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -455,17 +455,6 @@ OBSBasic::OBSBasic(QWidget *parent) QPoint newPos = curPos + statsDockPos; statsDock->move(newPos); - ui->previewLabel->setProperty("themeID", "previewProgramLabels"); - ui->previewLabel->style()->polish(ui->previewLabel); - - bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow", - "StudioModeLabels"); - - if (!previewProgramMode) - ui->previewLabel->setHidden(true); - else - ui->previewLabel->setHidden(!labels); - ui->previewDisabledWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->previewDisabledWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, @@ -2998,6 +2987,7 @@ void OBSBasic::RenameSources(OBSSource source, QString newName, OBSProjector::UpdateMultiviewProjectors(); UpdateContextBar(); + UpdatePreviewProgramIndicators(); } void OBSBasic::ClearContextBar() @@ -4317,11 +4307,7 @@ void OBSBasic::ResetUI() else ui->previewLayout->setDirection(QBoxLayout::LeftToRight); - if (previewProgramMode) - ui->previewLabel->setHidden(!labels); - - if (programLabel) - programLabel->setHidden(!labels); + UpdatePreviewProgramIndicators(); } int OBSBasic::ResetVideo() diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index feef6a65f..c342dcd4a 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -534,6 +534,8 @@ private: void ReceivedIntroJson(const QString &text); void ShowWhatsNew(const QString &url); + void UpdatePreviewProgramIndicators(); + #ifdef BROWSER_AVAILABLE QList> extraBrowserDocks; QList> extraBrowserDockActions;