Add option to "release the T-Bar"

This commit is contained in:
WarmUpTill 2026-03-19 20:48:17 +01:00
parent 81cc638f0f
commit 31f95c6547
3 changed files with 28 additions and 12 deletions

View File

@ -1087,12 +1087,13 @@ AdvSceneSwitcher.action.studioMode.type.enable="Enable studio mode"
AdvSceneSwitcher.action.studioMode.type.disable="Disable studio mode"
AdvSceneSwitcher.action.studioMode.entry="{{actions}}{{scenes}}"
AdvSceneSwitcher.action.transition="Transition"
AdvSceneSwitcher.action.transition.type.scene="scene transition"
AdvSceneSwitcher.action.transition.type.sceneOverride="scene transition override"
AdvSceneSwitcher.action.transition.type.sourceShow="source show transition"
AdvSceneSwitcher.action.transition.type.sourceHide="source hide transition"
AdvSceneSwitcher.action.transition.type.tbar="T-Bar position"
AdvSceneSwitcher.action.transition.layout.type="Modify{{type}}{{scenes}}{{sources}}"
AdvSceneSwitcher.action.transition.type.scene="Modify scene transition"
AdvSceneSwitcher.action.transition.type.sceneOverride="Modify scene transition override"
AdvSceneSwitcher.action.transition.type.sourceShow="Modify source show transition"
AdvSceneSwitcher.action.transition.type.sourceHide="Modify source hide transition"
AdvSceneSwitcher.action.transition.type.tbar="Modify T-Bar position"
AdvSceneSwitcher.action.transition.type.releaseTbar="Release T-Bar"
AdvSceneSwitcher.action.transition.layout.type="{{type}}{{scenes}}{{sources}}"
AdvSceneSwitcher.action.transition.layout.transition="{{setTransition}}Set transition type to{{transitions}}"
AdvSceneSwitcher.action.transition.layout.duration="{{setDuration}}Set transition duration to{{duration}}seconds"
AdvSceneSwitcher.action.transition.layout.tbar="Set T-Bar position to{{tbarPosition}}"

View File

@ -25,6 +25,8 @@ const static std::map<MacroActionTransition::Type, std::string> actionTypes = {
"AdvSceneSwitcher.action.transition.type.sourceHide"},
{MacroActionTransition::Type::TBAR,
"AdvSceneSwitcher.action.transition.type.tbar"},
{MacroActionTransition::Type::RELEASE_TBAR,
"AdvSceneSwitcher.action.transition.type.releaseTbar"},
};
void MacroActionTransition::SetSceneTransition()
@ -84,10 +86,11 @@ void MacroActionTransition::SetTbarPosition()
const double percent = std::clamp(_tbarPosition.GetValue(), 0.0, 100.0);
const int tbarValue = (int)std::round(percent / 100.0 * 1023.0);
obs_frontend_set_tbar_position(tbarValue);
}
if (tbarValue == 0 || tbarValue == 1024) {
obs_frontend_release_tbar();
}
void MacroActionTransition::ReleaseTbar()
{
obs_frontend_release_tbar();
}
void MacroActionTransition::SetSourceTransition(bool show)
@ -127,6 +130,9 @@ bool MacroActionTransition::PerformAction()
case Type::TBAR:
SetTbarPosition();
break;
case Type::RELEASE_TBAR:
ReleaseTbar();
break;
}
return true;
}
@ -156,6 +162,9 @@ void MacroActionTransition::LogAction() const
ablog(LOG_INFO, "set T-Bar position to %.2f%%",
_tbarPosition.GetValue());
return;
case Type::RELEASE_TBAR:
ablog(LOG_INFO, "release T-Bar");
return;
}
if (_setDuration) {
ablog(LOG_INFO, "%s duration to %s", msgBegin.c_str(),
@ -208,6 +217,8 @@ std::string MacroActionTransition::GetShortDesc() const
_transition.ToString();
case Type::TBAR:
return std::to_string(_tbarPosition.GetValue()) + "%";
case Type::RELEASE_TBAR:
return "";
}
return "";
}
@ -398,14 +409,16 @@ void MacroActionTransitionEdit::SetWidgetVisibility()
{
const bool isTbar = _entryData->_type ==
MacroActionTransition::Type::TBAR;
const bool isReleaseTbar = _entryData->_type ==
MacroActionTransition::Type::RELEASE_TBAR;
_sources->setVisible(
_entryData->_type == MacroActionTransition::Type::SOURCE_HIDE ||
_entryData->_type == MacroActionTransition::Type::SOURCE_SHOW);
_scenes->setVisible(_entryData->_type !=
MacroActionTransition::Type::SCENE &&
!isTbar);
SetLayoutVisible(_transitionLayout, !isTbar);
SetLayoutVisible(_durationLayout, !isTbar);
!isTbar && !isReleaseTbar);
SetLayoutVisible(_transitionLayout, !isTbar && !isReleaseTbar);
SetLayoutVisible(_durationLayout, !isTbar && !isReleaseTbar);
SetLayoutVisible(_tbarLayout, isTbar);
adjustSize();
}

View File

@ -30,6 +30,7 @@ public:
SOURCE_SHOW,
SOURCE_HIDE,
TBAR,
RELEASE_TBAR,
};
Type _type = Type::SCENE;
@ -46,6 +47,7 @@ private:
void SetTransitionOverride();
void SetSourceTransition(bool);
void SetTbarPosition();
void ReleaseTbar();
static bool _registered;
static const std::string id;