mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-12 20:28:11 -05:00
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)
This commit is contained in:
66
plugins/scripting/macro-action-script-inline.cpp
Normal file
66
plugins/scripting/macro-action-script-inline.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include "macro-action-script-inline.hpp"
|
||||
|
||||
namespace advss {
|
||||
|
||||
const std::string MacroActionScriptInline::_id = "script";
|
||||
|
||||
bool MacroActionScriptInline::_registered = MacroActionFactory::Register(
|
||||
MacroActionScriptInline::_id,
|
||||
{MacroActionScriptInline::Create, MacroActionScriptInlineEdit::Create,
|
||||
"AdvSceneSwitcher.action.script"});
|
||||
|
||||
bool MacroActionScriptInline::PerformAction()
|
||||
{
|
||||
return _script.Run();
|
||||
}
|
||||
|
||||
void MacroActionScriptInline::LogAction() const
|
||||
{
|
||||
ablog(LOG_INFO, "performing inline script action");
|
||||
}
|
||||
|
||||
bool MacroActionScriptInline::Save(obs_data_t *obj) const
|
||||
{
|
||||
MacroAction::Save(obj);
|
||||
_script.Save(obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MacroActionScriptInline::Load(obs_data_t *obj)
|
||||
{
|
||||
MacroAction::Load(obj);
|
||||
_script.Load(obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
std::shared_ptr<MacroAction> MacroActionScriptInline::Create(Macro *m)
|
||||
{
|
||||
return std::make_shared<MacroActionScriptInline>(m);
|
||||
}
|
||||
|
||||
std::shared_ptr<MacroAction> MacroActionScriptInline::Copy() const
|
||||
{
|
||||
return std::make_shared<MacroActionScriptInline>(*this);
|
||||
}
|
||||
|
||||
void MacroActionScriptInline::ResolveVariablesToFixedValues()
|
||||
{
|
||||
_script.ResolveVariablesToFixedValues();
|
||||
}
|
||||
|
||||
MacroActionScriptInlineEdit::MacroActionScriptInlineEdit(
|
||||
QWidget *parent, std::shared_ptr<MacroActionScriptInline> entryData)
|
||||
: MacroSegmentScriptInlineEdit(parent, entryData)
|
||||
{
|
||||
}
|
||||
|
||||
QWidget *
|
||||
MacroActionScriptInlineEdit::Create(QWidget *parent,
|
||||
std::shared_ptr<MacroAction> action)
|
||||
{
|
||||
return new MacroActionScriptInlineEdit(
|
||||
parent,
|
||||
std::dynamic_pointer_cast<MacroActionScriptInline>(action));
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
Reference in New Issue
Block a user