From 3229bf015074bbd88bb4357e8b1ced7d6e93fe70 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Wed, 24 May 2023 21:26:48 +0200 Subject: [PATCH] Clean up source condition and action * Add hints directing to the scene item visibility action / condition as they frequently get mixed up * Clean up layout of the source condition (removed spaces in locale as this unnecessary spacing in the layout when the settings check was not selected --- data/locale/en-US.ini | 7 ++-- src/macro-core/macro-condition-source.cpp | 39 ++++++++++++++--------- src/macro-core/macro-condition-source.hpp | 2 +- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index cab6e5e2..7f67f747 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -312,10 +312,11 @@ AdvSceneSwitcher.condition.source="Source" AdvSceneSwitcher.condition.source.type.active="Is active" AdvSceneSwitcher.condition.source.type.showing="Is showing" AdvSceneSwitcher.condition.source.type.settings="Settings match" +AdvSceneSwitcher.condition.source.sceneVisibilityHint="Scene specific visibility can be checked using the \"Scene item visibility\" condition" AdvSceneSwitcher.condition.source.getSettings="Get current settings" -AdvSceneSwitcher.condition.source.entry.line1="{{sources}} {{conditions}}" +AdvSceneSwitcher.condition.source.entry.line1="{{sources}}{{conditions}}" AdvSceneSwitcher.condition.source.entry.line2="{{settings}}" -AdvSceneSwitcher.condition.source.entry.line3="{{regex}} {{getSettings}}" +AdvSceneSwitcher.condition.source.entry.line3="{{regex}}{{getSettings}}" AdvSceneSwitcher.condition.virtualCamera="Virtual camera" AdvSceneSwitcher.condition.virtualCamera.state.start="Virtual camera started" AdvSceneSwitcher.condition.virtualCamera.state.stop="Virtual camera stopped" @@ -522,7 +523,7 @@ AdvSceneSwitcher.action.source.type.pressSettingsButton="Press settings button" AdvSceneSwitcher.action.source.type.refreshSettings.tooltip="Can be used to refresh browser, media, etc. sources" AdvSceneSwitcher.action.source.noSettingsButtons="No buttons found!" AdvSceneSwitcher.action.source.entry="{{actions}}{{sources}}{{settingsButtons}}" -AdvSceneSwitcher.action.source.warning="Warning: Enabling and disabling sources globally cannot be controlled by the OBS UI" +AdvSceneSwitcher.action.source.warning="Warning: Enabling and disabling sources globally cannot be controlled by the OBS UI\nYou might be looking for \"Scene item visibility\"" AdvSceneSwitcher.action.source.getSettings="Get current settings" AdvSceneSwitcher.action.media="Media" AdvSceneSwitcher.action.media.type.play="Play" diff --git a/src/macro-core/macro-condition-source.cpp b/src/macro-core/macro-condition-source.cpp index fa3c759a..e7f42df5 100644 --- a/src/macro-core/macro-condition-source.cpp +++ b/src/macro-core/macro-condition-source.cpp @@ -121,24 +121,27 @@ MacroConditionSourceEdit::MacroConditionSourceEdit( QWidget::connect(_regex, SIGNAL(RegexConfigChanged(RegexConfig)), this, SLOT(RegexChanged(RegexConfig))); - QVBoxLayout *mainLayout = new QVBoxLayout; - QHBoxLayout *line1Layout = new QHBoxLayout; - QHBoxLayout *line2Layout = new QHBoxLayout; - QHBoxLayout *line3Layout = new QHBoxLayout; std::unordered_map widgetPlaceholders = { {"{{sources}}", _sources}, {"{{conditions}}", _conditions}, {"{{settings}}", _settings}, {"{{getSettings}}", _getSettings}, {"{{regex}}", _regex}, }; + auto line1Layout = new QHBoxLayout; + line1Layout->setContentsMargins(0, 0, 0, 0); PlaceWidgets(obs_module_text( "AdvSceneSwitcher.condition.source.entry.line1"), line1Layout, widgetPlaceholders); + auto line2Layout = new QHBoxLayout; + line2Layout->setContentsMargins(0, 0, 0, 0); PlaceWidgets(obs_module_text( "AdvSceneSwitcher.condition.source.entry.line2"), line2Layout, widgetPlaceholders, false); + auto line3Layout = new QHBoxLayout; + line3Layout->setContentsMargins(0, 0, 0, 0); PlaceWidgets(obs_module_text( "AdvSceneSwitcher.condition.source.entry.line3"), line3Layout, widgetPlaceholders); + auto mainLayout = new QVBoxLayout; mainLayout->addLayout(line1Layout); mainLayout->addLayout(line2Layout); mainLayout->addLayout(line3Layout); @@ -169,8 +172,7 @@ void MacroConditionSourceEdit::ConditionChanged(int index) auto lock = LockContext(); _entryData->_condition = static_cast(index); - SetSettingsSelectionVisible(_entryData->_condition == - SourceCondition::SETTINGS); + SetWidgetVisibility(); } void MacroConditionSourceEdit::GetSettingsClicked() @@ -213,12 +215,23 @@ void MacroConditionSourceEdit::RegexChanged(RegexConfig conf) updateGeometry(); } -void MacroConditionSourceEdit::SetSettingsSelectionVisible(bool visible) +void MacroConditionSourceEdit::SetWidgetVisibility() { - _settings->setVisible(visible); - _getSettings->setVisible(visible); - _regex->setVisible(visible); + _settings->setVisible(_entryData->_condition == + SourceCondition::SETTINGS); + _getSettings->setVisible(_entryData->_condition == + SourceCondition::SETTINGS); + _regex->setVisible(_entryData->_condition == SourceCondition::SETTINGS); + + setToolTip( + (_entryData->_condition == SourceCondition::ACTIVE || + _entryData->_condition == SourceCondition::SHOWING) + ? obs_module_text( + "AdvSceneSwitcher.condition.source.sceneVisibilityHint") + : ""); + adjustSize(); + updateGeometry(); } void MacroConditionSourceEdit::UpdateEntryData() @@ -231,11 +244,7 @@ void MacroConditionSourceEdit::UpdateEntryData() _conditions->setCurrentIndex(static_cast(_entryData->_condition)); _settings->setPlainText(_entryData->_settings); _regex->SetRegexConfig(_entryData->_regex); - SetSettingsSelectionVisible(_entryData->_condition == - SourceCondition::SETTINGS); - - adjustSize(); - updateGeometry(); + SetWidgetVisibility(); } } // namespace advss diff --git a/src/macro-core/macro-condition-source.hpp b/src/macro-core/macro-condition-source.hpp index a6e944f4..ee554785 100644 --- a/src/macro-core/macro-condition-source.hpp +++ b/src/macro-core/macro-condition-source.hpp @@ -74,7 +74,7 @@ protected: std::shared_ptr _entryData; private: - void SetSettingsSelectionVisible(bool visible); + void SetWidgetVisibility(); bool _loading = true; };