mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add option to disable shutdown confirmation dialog
This commit is contained in:
parent
0dfa4fe2c0
commit
4e561320f7
|
|
@ -466,7 +466,7 @@ AdvSceneSwitcher.action.pluginState.type.stop="Erweiterten Automatischen Szenenw
|
|||
AdvSceneSwitcher.action.pluginState.type.noMatch="Ändern des Nichtübereinstimmungsverhaltens:"
|
||||
AdvSceneSwitcher.action.pluginState.type.import="Einstellungen importieren aus"
|
||||
AdvSceneSwitcher.action.pluginState.importWarning="Hinweis: Die Aktion wird ignoriert, solange das Einstellungsfenster geöffnet ist."
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="Virtuelle Kamera"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="Virtuelle Kamera stoppen"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="Virtuelle Kamera starten"
|
||||
|
|
|
|||
|
|
@ -985,7 +985,8 @@ AdvSceneSwitcher.action.pluginState.terminateConfirm="OBS will be shut down auto
|
|||
AdvSceneSwitcher.action.pluginState.type.enableMacroHighlighting="Enable macro highlighting"
|
||||
AdvSceneSwitcher.action.pluginState.type.disableMacroHighlighting="Disable macro highlighting"
|
||||
AdvSceneSwitcher.action.pluginState.type.toggleMacroHighlighting="Toggle macro highlighting"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.confirmShutdown="Ask for shutdown confirmation"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="Virtual camera"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="Stop virtual camera"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="Start virtual camera"
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ AdvSceneSwitcher.action.pluginState.type.stop="Detener el complemento Advanced S
|
|||
AdvSceneSwitcher.action.pluginState.type.noMatch="Cambiar el comportamiento de no coincidencia:"
|
||||
AdvSceneSwitcher.action.pluginState.type.import="Importar configuración desde"
|
||||
AdvSceneSwitcher.action.pluginState.importWarning="Nota: la acción se ignorará mientras se abra la ventana de configuración."
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="Cámara virtual"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="Detener cámara virtual"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="Iniciar cámara virtual"
|
||||
|
|
|
|||
|
|
@ -874,7 +874,7 @@ AdvSceneSwitcher.action.pluginState.type.import="Importar configurações de"
|
|||
AdvSceneSwitcher.action.pluginState.importWarning="Nota: Ação será ignorada enquanto a janela de configurações estiver aberta."
|
||||
AdvSceneSwitcher.action.pluginState.type.terminate="Desligar OBS"
|
||||
AdvSceneSwitcher.action.pluginState.terminateConfirm="O OBS será desligado automaticamente em 10 segundos!\nDeseja continuar com o desligamento do OBS?"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="Câmera virtual"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="Parar câmera virtual"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="Iniciar câmera virtual"
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ AdvSceneSwitcher.action.pluginState.type.stop="Advanced Scene Switcher eklentisi
|
|||
AdvSceneSwitcher.action.pluginState.type.noMatch="Eşleşmeme davranışını değiştirin:"
|
||||
AdvSceneSwitcher.action.pluginState.type.import="Ayarları şuradan içe aktar:"
|
||||
AdvSceneSwitcher.action.pluginState.importWarning="Not: Ayarlar penceresi açılırken eylem göz ardı edilecektir."
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="Sanal Kamera"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="Sanal Kamerayı Durdur"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="Sanal Kamerayı Başlat"
|
||||
|
|
|
|||
|
|
@ -933,7 +933,7 @@ AdvSceneSwitcher.action.pluginState.type.import="导入设置"
|
|||
AdvSceneSwitcher.action.pluginState.importWarning="注意:当设置窗口打开时,操作将被忽略."
|
||||
AdvSceneSwitcher.action.pluginState.type.terminate="关闭OBS"
|
||||
AdvSceneSwitcher.action.pluginState.terminateConfirm="OBS将在10秒后自动关闭!\n你想继续关闭OBS吗?"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}{{settingsWarning}}"
|
||||
AdvSceneSwitcher.action.pluginState.entry="{{actions}}{{values}}{{scenes}}{{settings}}"
|
||||
AdvSceneSwitcher.action.virtualCamera="虚拟摄像机"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.stop="停止虚拟摄像机"
|
||||
AdvSceneSwitcher.action.virtualCamera.type.start="启动虚拟摄像机"
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ static void setNoMatchBehaviour(int value, OBSWeakSource &scene)
|
|||
}
|
||||
}
|
||||
|
||||
static void closeOBSWindow()
|
||||
static void closeOBSWindow(void *)
|
||||
{
|
||||
blog(LOG_WARNING, "closing OBS window now!");
|
||||
auto obsWindow =
|
||||
|
|
@ -69,7 +69,7 @@ static void closeOBSWindow()
|
|||
}
|
||||
}
|
||||
|
||||
static void terminateOBS(void *)
|
||||
static void askTerminateOBS(void *)
|
||||
{
|
||||
static std::mutex mtx;
|
||||
static std::mutex waitMutex;
|
||||
|
|
@ -107,10 +107,10 @@ static void terminateOBS(void *)
|
|||
if (abortTerminate) {
|
||||
blog(LOG_INFO, "OBS shutdown was aborted");
|
||||
} else {
|
||||
closeOBSWindow();
|
||||
closeOBSWindow(nullptr);
|
||||
}
|
||||
} else {
|
||||
closeOBSWindow();
|
||||
closeOBSWindow(nullptr);
|
||||
}
|
||||
});
|
||||
thread.detach();
|
||||
|
|
@ -143,9 +143,11 @@ bool MacroActionPluginState::PerformAction()
|
|||
// The settings will be invalid
|
||||
return false;
|
||||
case Action::TERMINATE: {
|
||||
std::thread thread([]() {
|
||||
obs_queue_task(OBS_TASK_UI, terminateOBS, nullptr,
|
||||
false);
|
||||
std::thread thread([this]() {
|
||||
obs_queue_task(OBS_TASK_UI,
|
||||
this->_confirmShutdown ? askTerminateOBS
|
||||
: closeOBSWindow,
|
||||
nullptr, false);
|
||||
});
|
||||
thread.detach();
|
||||
break;
|
||||
|
|
@ -204,6 +206,7 @@ bool MacroActionPluginState::Save(obs_data_t *obj) const
|
|||
obs_data_set_int(obj, "value", _value);
|
||||
obs_data_set_string(obj, "scene", GetWeakSourceName(_scene).c_str());
|
||||
_settingsPath.Save(obj, "settingsPath");
|
||||
obs_data_set_bool(obj, "confirmShutdown", _confirmShutdown);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -216,6 +219,9 @@ bool MacroActionPluginState::Load(obs_data_t *obj)
|
|||
const char *sceneName = obs_data_get_string(obj, "scene");
|
||||
_scene = GetWeakSourceByName(sceneName);
|
||||
_settingsPath.Load(obj, "settingsPath");
|
||||
if (obs_data_has_user_value(obj, "confirmShutdown")) {
|
||||
_confirmShutdown = obs_data_get_bool(obj, "confirmShutdown");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -276,7 +282,9 @@ MacroActionPluginStateEdit::MacroActionPluginStateEdit(
|
|||
_scenes(new QComboBox(this)),
|
||||
_settings(new FileSelection()),
|
||||
_settingsWarning(new QLabel(obs_module_text(
|
||||
"AdvSceneSwitcher.action.pluginState.importWarning")))
|
||||
"AdvSceneSwitcher.action.pluginState.importWarning"))),
|
||||
_confirmShutdown(new QCheckBox(obs_module_text(
|
||||
"AdvSceneSwitcher.action.pluginState.confirmShutdown")))
|
||||
{
|
||||
populateActionSelection(_actions);
|
||||
PopulateSceneSelection(_scenes);
|
||||
|
|
@ -289,16 +297,21 @@ MacroActionPluginStateEdit::MacroActionPluginStateEdit(
|
|||
this, SLOT(SceneChanged(const QString &)));
|
||||
QWidget::connect(_settings, SIGNAL(PathChanged(const QString &)), this,
|
||||
SLOT(PathChanged(const QString &)));
|
||||
QWidget::connect(_confirmShutdown, SIGNAL(stateChanged(int)), this,
|
||||
SLOT(ConfirmShutdownChanged(int)));
|
||||
|
||||
auto layout = new QHBoxLayout;
|
||||
auto entryLayout = new QHBoxLayout;
|
||||
PlaceWidgets(
|
||||
obs_module_text("AdvSceneSwitcher.action.pluginState.entry"),
|
||||
layout,
|
||||
entryLayout,
|
||||
{{"{{actions}}", _actions},
|
||||
{"{{values}}", _values},
|
||||
{"{{scenes}}", _scenes},
|
||||
{"{{settings}}", _settings},
|
||||
{"{{settingsWarning}}", _settingsWarning}});
|
||||
{"{{settings}}", _settings}});
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->addLayout(entryLayout);
|
||||
layout->addWidget(_settingsWarning);
|
||||
layout->addWidget(_confirmShutdown);
|
||||
setLayout(layout);
|
||||
|
||||
_entryData = entryData;
|
||||
|
|
@ -316,6 +329,7 @@ void MacroActionPluginStateEdit::UpdateEntryData()
|
|||
_values->setCurrentIndex(_entryData->_value);
|
||||
_scenes->setCurrentText(GetWeakSourceName(_entryData->_scene).c_str());
|
||||
_settings->SetPath(_entryData->_settingsPath);
|
||||
_confirmShutdown->setChecked(_entryData->_confirmShutdown);
|
||||
SetWidgetVisibility();
|
||||
}
|
||||
|
||||
|
|
@ -351,6 +365,12 @@ void MacroActionPluginStateEdit::PathChanged(const QString &text)
|
|||
_entryData->_settingsPath = text.toStdString();
|
||||
}
|
||||
|
||||
void MacroActionPluginStateEdit::ConfirmShutdownChanged(int value)
|
||||
{
|
||||
GUARD_LOADING_AND_LOCK();
|
||||
_entryData->_confirmShutdown = value;
|
||||
}
|
||||
|
||||
void MacroActionPluginStateEdit::SetWidgetVisibility()
|
||||
{
|
||||
if (!_entryData) {
|
||||
|
|
@ -361,6 +381,7 @@ void MacroActionPluginStateEdit::SetWidgetVisibility()
|
|||
_scenes->hide();
|
||||
_settings->hide();
|
||||
_settingsWarning->hide();
|
||||
_confirmShutdown->hide();
|
||||
|
||||
switch (_entryData->_action) {
|
||||
case MacroActionPluginState::Action::STOP:
|
||||
|
|
@ -376,6 +397,9 @@ void MacroActionPluginStateEdit::SetWidgetVisibility()
|
|||
_settings->show();
|
||||
_settingsWarning->show();
|
||||
break;
|
||||
case MacroActionPluginState::Action::TERMINATE:
|
||||
_confirmShutdown->show();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include "file-selection.hpp"
|
||||
|
||||
#include <obs.hpp>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QLabel>
|
||||
|
||||
namespace advss {
|
||||
|
|
@ -33,6 +35,7 @@ public:
|
|||
int _value = 0;
|
||||
StringVariable _settingsPath;
|
||||
OBSWeakSource _scene;
|
||||
bool _confirmShutdown = true;
|
||||
|
||||
private:
|
||||
static bool _registered;
|
||||
|
|
@ -61,6 +64,7 @@ private slots:
|
|||
void ValueChanged(int value);
|
||||
void SceneChanged(const QString &text);
|
||||
void PathChanged(const QString &text);
|
||||
void ConfirmShutdownChanged(int);
|
||||
|
||||
private:
|
||||
void SetWidgetVisibility();
|
||||
|
|
@ -70,6 +74,7 @@ private:
|
|||
QComboBox *_scenes;
|
||||
FileSelection *_settings;
|
||||
QLabel *_settingsWarning;
|
||||
QCheckBox *_confirmShutdown;
|
||||
|
||||
std::shared_ptr<MacroActionPluginState> _entryData;
|
||||
bool _loading = true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user