SceneSwitcher/plugins/scripting/macro-condition-script-inline.cpp
WarmUpTill daeb9275a3 Add support for inline scripts
* Script can be defined in the macro segment or loaded from a file
* Supports both LUA and Python
* Can be used for actions and conditions
* obs_script_create and obs_script_destroy are resolved at runtime
  (Let's hope the API remains stable)
2025-06-09 14:20:44 +02:00

52 lines
1.3 KiB
C++

#include "macro-condition-script-inline.hpp"
namespace advss {
const std::string MacroConditionScriptInline::_id = "script";
bool MacroConditionScriptInline::_registered =
MacroConditionFactory::Register(MacroConditionScriptInline::_id,
{MacroConditionScriptInline::Create,
MacroConditionScriptInlineEdit::Create,
"AdvSceneSwitcher.condition.script"});
bool MacroConditionScriptInline::CheckCondition()
{
return _script.Run();
}
bool MacroConditionScriptInline::Save(obs_data_t *obj) const
{
MacroCondition::Save(obj);
_script.Save(obj);
return true;
}
bool MacroConditionScriptInline::Load(obs_data_t *obj)
{
MacroCondition::Load(obj);
_script.Load(obj);
return true;
}
std::shared_ptr<MacroCondition> MacroConditionScriptInline::Create(Macro *m)
{
return std::make_shared<MacroConditionScriptInline>(m);
}
MacroConditionScriptInlineEdit::MacroConditionScriptInlineEdit(
QWidget *parent, std::shared_ptr<MacroConditionScriptInline> entryData)
: MacroSegmentScriptInlineEdit(parent, entryData)
{
}
QWidget *MacroConditionScriptInlineEdit::Create(
QWidget *parent, std::shared_ptr<MacroCondition> condition)
{
return new MacroConditionScriptInlineEdit(
parent, std::dynamic_pointer_cast<MacroConditionScriptInline>(
condition));
}
} // namespace advss