UI: Split toggle preview program hotkey into hotkey pair

This commit is contained in:
Exeldro
2023-07-29 16:48:25 -07:00
committed by Lain
parent f5f7ae3e7f
commit 91f00eac87
3 changed files with 49 additions and 17 deletions
+43 -16
View File
@@ -2639,7 +2639,21 @@ void OBSBasic::CreateHotkeys()
};
auto LoadHotkeyPair = [&](obs_hotkey_pair_id id, const char *name0,
const char *name1) {
const char *name1,
const char *oldName = NULL) {
if (oldName) {
const auto info = config_get_string(basicConfig,
"Hotkeys", oldName);
if (info) {
config_set_string(basicConfig, "Hotkeys", name0,
info);
config_set_string(basicConfig, "Hotkeys", name1,
info);
config_remove_value(basicConfig, "Hotkeys",
oldName);
config_save(basicConfig);
}
}
OBSDataArrayAutoRelease array0 =
obs_data_get_array(LoadHotkeyData(name0), "bindings");
OBSDataArrayAutoRelease array1 =
@@ -2759,6 +2773,23 @@ void OBSBasic::CreateHotkeys()
LoadHotkeyPair(togglePreviewHotkeys, "OBSBasic.EnablePreview",
"OBSBasic.DisablePreview");
togglePreviewProgramHotkeys = obs_hotkey_pair_register_frontend(
"OBSBasic.EnablePreviewProgram",
Str("Basic.EnablePreviewProgramMode"),
"OBSBasic.DisablePreviewProgram",
Str("Basic.DisablePreviewProgramMode"),
MAKE_CALLBACK(!basic.IsPreviewProgramMode(),
basic.EnablePreviewProgram,
"Enabling preview program"),
MAKE_CALLBACK(basic.IsPreviewProgramMode(),
basic.DisablePreviewProgram,
"Disabling preview program"),
this, this);
LoadHotkeyPair(togglePreviewProgramHotkeys,
"OBSBasic.EnablePreviewProgram",
"OBSBasic.DisablePreviewProgram",
"OBSBasic.TogglePreviewProgram");
contextBarHotkeys = obs_hotkey_pair_register_frontend(
"OBSBasic.ShowContextBar", Str("Basic.Main.ShowContextBar"),
"OBSBasic.HideContextBar", Str("Basic.Main.HideContextBar"),
@@ -2771,20 +2802,6 @@ void OBSBasic::CreateHotkeys()
"OBSBasic.HideContextBar");
#undef MAKE_CALLBACK
auto togglePreviewProgram = [](void *data, obs_hotkey_id,
obs_hotkey_t *, bool pressed) {
if (pressed)
QMetaObject::invokeMethod(static_cast<OBSBasic *>(data),
"on_modeSwitch_clicked",
Qt::QueuedConnection);
};
togglePreviewProgramHotkey = obs_hotkey_register_frontend(
"OBSBasic.TogglePreviewProgram",
Str("Basic.TogglePreviewProgramMode"), togglePreviewProgram,
this);
LoadHotkey(togglePreviewProgramHotkey, "OBSBasic.TogglePreviewProgram");
auto transition = [](void *data, obs_hotkey_id, obs_hotkey_t *,
bool pressed) {
if (pressed)
@@ -2846,8 +2863,8 @@ void OBSBasic::ClearHotkeys()
obs_hotkey_pair_unregister(vcamHotkeys);
obs_hotkey_pair_unregister(togglePreviewHotkeys);
obs_hotkey_pair_unregister(contextBarHotkeys);
obs_hotkey_pair_unregister(togglePreviewProgramHotkeys);
obs_hotkey_unregister(forceStreamingStopHotkey);
obs_hotkey_unregister(togglePreviewProgramHotkey);
obs_hotkey_unregister(transitionHotkey);
obs_hotkey_unregister(statsHotkey);
obs_hotkey_unregister(screenshotHotkey);
@@ -9047,6 +9064,16 @@ void OBSBasic::DisablePreview()
EnablePreviewDisplay(false);
}
void OBSBasic::EnablePreviewProgram()
{
SetPreviewProgramMode(true);
}
void OBSBasic::DisablePreviewProgram()
{
SetPreviewProgramMode(false);
}
static bool nudge_callback(obs_scene_t *, obs_sceneitem_t *item, void *param)
{
if (obs_sceneitem_locked(item))