Skip to content

Commit

Permalink
Add support to register, deregister, and set temp vars from scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
WarmUpTill committed Nov 22, 2024
1 parent 66d02f4 commit 7f1e310
Show file tree
Hide file tree
Showing 8 changed files with 418 additions and 45 deletions.
40 changes: 34 additions & 6 deletions lib/macro/macro-action-script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@

namespace advss {

MacroActionScript::MacroActionScript(Macro *m, const std::string &id,
const OBSData &defaultSettings,
const std::string &propertiesSignalName,
const std::string &triggerSignal,
const std::string &completionSignal)
MacroActionScript::MacroActionScript(
Macro *m, const std::string &id, const OBSData &defaultSettings,
const std::string &propertiesSignalName,
const std::string &triggerSignalName,
const std::string &completionSignalName,
const std::string &newInstanceSignalName,
const std::string &deletedInstanceSignalName)
: MacroAction(m),
MacroSegmentScript(defaultSettings, propertiesSignalName,
triggerSignal, completionSignal),
triggerSignalName, completionSignalName,
newInstanceSignalName, deletedInstanceSignalName),
_id(id)
{
}
Expand Down Expand Up @@ -89,4 +92,29 @@ void MacroActionScript::WaitForCompletion() const
}
}

void MacroActionScript::RegisterTempVarHelper(const std::string &variableId,
const std::string &name,
const std::string &helpText)
{
AddTempvar(variableId, name, helpText);
}

void MacroActionScript::DeregisterAllTempVarsHelper()
{
MacroSegment::SetupTempVars();
}

void MacroActionScript::SetTempVarValueHelper(const std::string &variableId,
const std::string &value)
{
MacroAction::SetTempVarValue(variableId, value);
}

void MacroActionScript::SetupTempVars()
{
// This just exists so MacroSegment::SetupTempVars() is not called.
// We want the ScriptHandler to handle the registration and clearing of
// the temp vars.
}

} // namespace advss
13 changes: 11 additions & 2 deletions lib/macro/macro-action-script.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ class MacroActionScript : public MacroAction, public MacroSegmentScript {
MacroActionScript(Macro *m, const std::string &id,
const OBSData &defaultSettings,
const std::string &propertiesSignalName,
const std::string &triggerSignal,
const std::string &signalComplete);
const std::string &triggerSignalName,
const std::string &completionSignalName,
const std::string &newInstanceSignalName,
const std::string &deletedInstanceSignalName);
MacroActionScript(const advss::MacroActionScript &);
bool PerformAction();
void LogAction() const;
Expand All @@ -22,6 +24,13 @@ class MacroActionScript : public MacroAction, public MacroSegmentScript {

private:
void WaitForCompletion() const;
void RegisterTempVarHelper(const std::string &variableId,
const std::string &name,
const std::string &helpText);
void DeregisterAllTempVarsHelper();
void SetTempVarValueHelper(const std::string &variableId,
const std::string &value);
void SetupTempVars();

std::string _id = "";
};
Expand Down
33 changes: 31 additions & 2 deletions lib/macro/macro-condition-script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ namespace advss {
MacroConditionScript::MacroConditionScript(
Macro *m, const std::string &id, const OBSData &defaultSettings,
const std::string &propertiesSignalName,
const std::string &triggerSignal, const std::string &completionSignal)
const std::string &triggerSignalName,
const std::string &completionSignalName,
const std::string &newInstanceSignalName,
const std::string &deletedInstanceSignalName)
: MacroCondition(m),
MacroSegmentScript(defaultSettings, propertiesSignalName,
triggerSignal, completionSignal),
triggerSignalName, completionSignalName,
newInstanceSignalName, deletedInstanceSignalName),
_id(id)
{
}
Expand Down Expand Up @@ -76,4 +80,29 @@ void MacroConditionScript::WaitForCompletion() const
}
}

void MacroConditionScript::RegisterTempVarHelper(const std::string &variableId,
const std::string &name,
const std::string &helpText)
{
AddTempvar(variableId, name, helpText);
}

void MacroConditionScript::DeregisterAllTempVarsHelper()
{
MacroSegment::SetupTempVars();
}

void MacroConditionScript::SetTempVarValueHelper(const std::string &variableId,
const std::string &value)
{
MacroCondition::SetTempVarValue(variableId, value);
}

void MacroConditionScript::SetupTempVars()
{
// This just exists so MacroSegment::SetupTempVars() is not called.
// We want the ScriptHandler to handle the registration and clearing of
// the temp vars.
}

} // namespace advss
13 changes: 11 additions & 2 deletions lib/macro/macro-condition-script.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ class MacroConditionScript : public MacroCondition, public MacroSegmentScript {
MacroConditionScript(Macro *m, const std::string &id,
const OBSData &defaultSettings,
const std::string &propertiesSignalName,
const std::string &triggerSignal,
const std::string &signalComplete);
const std::string &triggerSignalName,
const std::string &completionSignalName,
const std::string &newInstanceSignalName,
const std::string &deletedInstanceSignalName);
MacroConditionScript(const advss::MacroConditionScript &);
bool CheckCondition();
bool Save(obs_data_t *obj) const;
Expand All @@ -20,6 +22,13 @@ class MacroConditionScript : public MacroCondition, public MacroSegmentScript {

private:
void WaitForCompletion() const;
void RegisterTempVarHelper(const std::string &variableId,
const std::string &name,
const std::string &helpText);
void DeregisterAllTempVarsHelper();
void SetTempVarValueHelper(const std::string &variableId,
const std::string &value);
void SetupTempVars();

std::string _id = "";
};
Expand Down
Loading

0 comments on commit 7f1e310

Please sign in to comment.