Add option to enable or disable OBS preview

This commit is contained in:
WarmUpTill 2025-09-03 19:31:03 +02:00 committed by WarmUpTill
parent d2b70bbc6b
commit 7901a988af
3 changed files with 62 additions and 15 deletions

View File

@ -1326,6 +1326,9 @@ AdvSceneSwitcher.action.obsSetting.action.setBaseCanvasX="Set base resolution X
AdvSceneSwitcher.action.obsSetting.action.setBaseCanvasY="Set base resolution Y value"
AdvSceneSwitcher.action.obsSetting.action.setOutputCanvasX="Set output resolution X value"
AdvSceneSwitcher.action.obsSetting.action.setOutputCanvasY="Set output resolution Y value"
AdvSceneSwitcher.action.obsSetting.action.enablePreview="Enable preview"
AdvSceneSwitcher.action.obsSetting.action.disablePreview="Disable preview"
AdvSceneSwitcher.action.obsSetting.action.togglePreview="Toggle preview enable"
AdvSceneSwitcher.action.obsSetting.getCurrentValue="Get current value"
AdvSceneSwitcher.action.obsSettings.layout="{{actions}}{{fpsType}}{{fpsIntValue}}{{fpsStringValue}}{{canvasSizeValue}}{{getCurrentValue}}"
AdvSceneSwitcher.action.script="Script"

View File

@ -34,6 +34,12 @@ const static std::map<MacroActionOBSSettings::Action, std::string> actionTypes =
"AdvSceneSwitcher.action.obsSetting.action.setOutputCanvasX"},
{MacroActionOBSSettings::Action::OUTPUT_Y_VALUE,
"AdvSceneSwitcher.action.obsSetting.action.setOutputCanvasY"},
{MacroActionOBSSettings::Action::ENABLE_PREVIEW,
"AdvSceneSwitcher.action.obsSetting.action.enablePreview"},
{MacroActionOBSSettings::Action::DISABLE_PREVIEW,
"AdvSceneSwitcher.action.obsSetting.action.disablePreview"},
{MacroActionOBSSettings::Action::TOGGLE_PREVIEW,
"AdvSceneSwitcher.action.obsSetting.action.togglePreview"},
};
template<typename Func, typename... Args>
@ -62,6 +68,17 @@ static auto getConfigValueHelper(Func func, Func defaultFunc, Args... args)
return std::optional<Ret>{};
}
static void setPreviewEnabled(bool enabled)
{
static const auto enable = [](void *) {
obs_frontend_set_preview_enabled(true);
};
static const auto disable = [](void *) {
obs_frontend_set_preview_enabled(false);
};
obs_queue_task(OBS_TASK_UI, enabled ? enable : disable, nullptr, false);
}
bool MacroActionOBSSettings::PerformAction()
{
switch (_action) {
@ -110,6 +127,15 @@ bool MacroActionOBSSettings::PerformAction()
static_cast<int>(_canvasSizeValue));
obs_frontend_reset_video();
break;
case Action::ENABLE_PREVIEW:
setPreviewEnabled(true);
break;
case Action::DISABLE_PREVIEW:
setPreviewEnabled(false);
break;
case Action::TOGGLE_PREVIEW:
setPreviewEnabled(!obs_frontend_preview_enabled());
break;
default:
break;
}
@ -347,18 +373,6 @@ void MacroActionOBSSettingsEdit::SetWidgetVisibility()
return;
}
const bool isFPSSelection =
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_TYPE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_COMMON_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_INT_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_DEN_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_NUM_VALUE;
_fpsType->setVisible(_entryData->_action ==
MacroActionOBSSettings::Action::FPS_TYPE);
_fpsIntValue->setVisible(
@ -371,9 +385,36 @@ void MacroActionOBSSettingsEdit::SetWidgetVisibility()
_fpsStringValue->setVisible(
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_COMMON_VALUE);
_canvasSizeValue->setVisible(!isFPSSelection);
_getCurrentValue->setVisible(_entryData->_action !=
MacroActionOBSSettings::Action::FPS_TYPE);
const bool needsSizeSelection =
_entryData->_action ==
MacroActionOBSSettings::Action::BASE_CANVAS_X_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::BASE_CANVAS_Y_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::OUTPUT_X_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::OUTPUT_Y_VALUE;
_canvasSizeValue->setVisible(needsSizeSelection);
const bool canGetSettingsValue =
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_COMMON_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_INT_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_NUM_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::FPS_DEN_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::BASE_CANVAS_X_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::BASE_CANVAS_Y_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::OUTPUT_X_VALUE ||
_entryData->_action ==
MacroActionOBSSettings::Action::OUTPUT_Y_VALUE;
_getCurrentValue->setVisible(canGetSettingsValue);
}
void MacroActionOBSSettingsEdit::ActionChanged(int idx)

View File

@ -31,6 +31,9 @@ public:
BASE_CANVAS_Y_VALUE,
OUTPUT_X_VALUE,
OUTPUT_Y_VALUE,
ENABLE_PREVIEW,
DISABLE_PREVIEW,
TOGGLE_PREVIEW,
};
Action _action = Action::FPS_COMMON_VALUE;
enum class FPSType {