From d2749f29b055594ed5959c523eccbc65a3701d9d Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 13 May 2024 21:50:22 +0200 Subject: [PATCH] Add note about limitations of the window focus action --- data/locale/en-US.ini | 2 ++ plugins/base/macro-action-window.cpp | 40 ++++++++++++++++++++++++---- plugins/base/macro-action-window.hpp | 3 +++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 3ae46958..b22f8384 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1054,6 +1054,8 @@ AdvSceneSwitcher.action.queue.entry.add="{{actions}}actions of macro{{macros}}to AdvSceneSwitcher.action.queue.entry.other="{{actions}}queue{{queues}}" AdvSceneSwitcher.action.window="Window" AdvSceneSwitcher.action.window.type.setFocusWindow="Focus window" +AdvSceneSwitcher.action.window.type.setFocusWindow.limitation="The focus action can only be performed under certain circumstances" +AdvSceneSwitcher.action.window.type.setFocusWindow.limitation.details="At least one of the following conditions must be true:\n OBS is the foreground process.\n There is currently no foreground window, and thus no foreground process.\n OBS received the last input event." AdvSceneSwitcher.action.window.type.maximizeWindow="Maximize window" AdvSceneSwitcher.action.window.type.minimizeWindow="Minimize window" AdvSceneSwitcher.action.window.type.closeWindow="Close window" diff --git a/plugins/base/macro-action-window.cpp b/plugins/base/macro-action-window.cpp index 626e5aa8..bc48bb97 100644 --- a/plugins/base/macro-action-window.cpp +++ b/plugins/base/macro-action-window.cpp @@ -2,6 +2,7 @@ #include "layout-helpers.hpp" #include "platform-funcs.hpp" #include "selection-helpers.hpp" +#include "ui-helpers.hpp" namespace advss { @@ -163,7 +164,8 @@ MacroActionWindowEdit::MacroActionWindowEdit( : QWidget(parent), _actions(new QComboBox()), _windows(new QComboBox()), - _regex(new RegexConfigWidget(this)) + _regex(new RegexConfigWidget(this)), + _infoLayout(new QHBoxLayout()) { populateActionSelection(_actions); @@ -171,6 +173,22 @@ MacroActionWindowEdit::MacroActionWindowEdit( _windows->setMaxVisibleItems(20); PopulateWindowSelection(_windows); + auto focusLimitation = new QLabel(obs_module_text( + "AdvSceneSwitcher.action.window.type.setFocusWindow.limitation")); + _infoLayout->addWidget(focusLimitation); + + const QString path = GetThemeTypeName() == "Light" + ? ":/res/images/help.svg" + : ":/res/images/help_light.svg"; + const QIcon icon(path); + const QPixmap pixmap = icon.pixmap(QSize(16, 16)); + auto focusLimitationDetails = new QLabel(); + focusLimitationDetails->setPixmap(pixmap); + focusLimitationDetails->setToolTip(obs_module_text( + "AdvSceneSwitcher.action.window.type.setFocusWindow.limitation.details")); + _infoLayout->addWidget(focusLimitationDetails); + _infoLayout->addStretch(); + QWidget::connect(_actions, SIGNAL(currentIndexChanged(int)), this, SLOT(ActionChanged(int))); QWidget::connect(_windows, SIGNAL(currentTextChanged(const QString &)), @@ -179,12 +197,15 @@ MacroActionWindowEdit::MacroActionWindowEdit( SIGNAL(RegexConfigChanged(const RegexConfig &)), this, SLOT(RegexChanged(const RegexConfig &))); - auto layout = new QHBoxLayout; + auto entryLayout = new QHBoxLayout; PlaceWidgets(obs_module_text("AdvSceneSwitcher.action.window.entry"), - layout, + entryLayout, {{"{{actions}}", _actions}, {"{{windows}}", _windows}, {"{{regex}}", _regex}}); + auto layout = new QVBoxLayout(); + layout->addLayout(entryLayout); + layout->addLayout(_infoLayout); setLayout(layout); _entryData = entryData; @@ -200,8 +221,7 @@ void MacroActionWindowEdit::UpdateEntryData() _actions->setCurrentIndex(static_cast(_entryData->_action)); _windows->setCurrentText(QString::fromStdString(_entryData->_window)); _regex->SetRegexConfig(_entryData->_regex); - adjustSize(); - updateGeometry(); + SetWidgetVisibility(); } void MacroActionWindowEdit::WindowChanged(const QString &text) @@ -228,6 +248,15 @@ void MacroActionWindowEdit::RegexChanged(const RegexConfig ®ex) updateGeometry(); } +void MacroActionWindowEdit::SetWidgetVisibility() +{ + SetLayoutVisible(_infoLayout, + _entryData->_action == + MacroActionWindow::Action::SET_FOCUS_WINDOW); + adjustSize(); + updateGeometry(); +} + void MacroActionWindowEdit::ActionChanged(int value) { if (_loading || !_entryData) { @@ -236,6 +265,7 @@ void MacroActionWindowEdit::ActionChanged(int value) auto lock = LockContext(); _entryData->_action = static_cast(value); + SetWidgetVisibility(); } } // namespace advss diff --git a/plugins/base/macro-action-window.hpp b/plugins/base/macro-action-window.hpp index 93185f1d..cfacb2a4 100644 --- a/plugins/base/macro-action-window.hpp +++ b/plugins/base/macro-action-window.hpp @@ -59,9 +59,12 @@ signals: void HeaderInfoChanged(const QString &); private: + void SetWidgetVisibility(); + QComboBox *_actions; QComboBox *_windows; RegexConfigWidget *_regex; + QHBoxLayout *_infoLayout; std::shared_ptr _entryData; bool _loading = true;