#include "headers/macro-action-scene-switch.hpp" #include "headers/advanced-scene-switcher.hpp" #include "headers/utility.hpp" const std::string MacroActionSwitchScene::id = "scene_switch"; bool MacroActionSwitchScene::_registered = MacroActionFactory::Register( MacroActionSwitchScene::id, {MacroActionSwitchScene::Create, MacroActionSwitchSceneEdit::Create, "AdvSceneSwitcher.action.switchScene"}); bool MacroActionSwitchScene::PerformAction() { OBSWeakSource scene = getScene(); switchScene({scene, transition, (int)(_duration.seconds * 1000)}); return true; } void MacroActionSwitchScene::LogAction() { if (switcher->verbose) { logMatch(); } } bool MacroActionSwitchScene::Save(obs_data_t *obj) { MacroAction::Save(obj); SceneSwitcherEntry::save(obj); _duration.Save(obj); return true; } bool MacroActionSwitchScene::Load(obs_data_t *obj) { MacroAction::Load(obj); SceneSwitcherEntry::load(obj); _duration.Load(obj); return true; } MacroActionSwitchSceneEdit::MacroActionSwitchSceneEdit( QWidget *parent, std::shared_ptr entryData) : SwitchWidget(parent, entryData.get(), true, true) { _duration = new DurationSelection(parent, false); QWidget::connect(_duration, SIGNAL(DurationChanged(double)), this, SLOT(DurationChanged(double))); QHBoxLayout *mainLayout = new QHBoxLayout; std::unordered_map widgetPlaceholders = { {"{{scenes}}", scenes}, {"{{transitions}}", transitions}, {"{{duration}}", _duration}, }; placeWidgets(obs_module_text("AdvSceneSwitcher.action.scene.entry"), mainLayout, widgetPlaceholders); setLayout(mainLayout); _entryData = entryData; _duration->SetDuration(_entryData->_duration); SwitchWidget::loading = false; } void MacroActionSwitchSceneEdit::DurationChanged(double seconds) { if (SwitchWidget::loading || !_entryData) { return; } std::lock_guard lock(switcher->m); _entryData->_duration.seconds = seconds; }