Add user action evaluator: If

qteditor
Sven Eberhardt 2016-08-07 02:06:15 -04:00
parent 5babeba4d8
commit 17409ab4c1
3 changed files with 32 additions and 0 deletions

View File

@ -135,6 +135,11 @@ func Definition(def)
{ Name="$EjectContentsYes$", Value=true }
] },
} } );
AddEvaluator("Action", "$Script$", "$ConditionalAction$", "$ConditionalActionHelp$", "if", [def, def.EvalAct_If, "Action"], { }, { Type="proplist", Display="if({{Condition}}) {{Action}} else {{ElseAction}}", EditorProps = {
Condition = new Evaluator.Boolean { Name="$Condition$", EditorHelp="$IfConditionHelp$" },
TrueEvaluator = new Evaluator.Action { Name="$TrueEvaluator$", EditorHelp="$TrueEvaluatorHelp$" },
FalseEvaluator = new Evaluator.Action { Name="$FalseEvaluator$", EditorHelp="$FalseEvaluatorHelp$" }
} } );
AddEvaluator("Action", "$Script$", "$SetVariable$", "$SetVariableHelp$", "set_variable", [def, def.EvalAct_SetVariable], { }, { Type="proplist", Display="{{Context}}::{{VariableName}}={{Value}}", EditorProps = {
Context = new Evaluator.Object { Name="$Context$", EditorHelp="$VariableContextHelp$", EmptyName="$Global$" },
VariableName = new Evaluator.String { Name="$VariableName$", EditorHelp="$VariableNameHelp$" },
@ -781,6 +786,17 @@ private func EvalAct_RemoveObject(proplist props, proplist context)
obj->RemoveObject(props.EjectContents);
}
private func EvalAct_If(proplist props, proplist context, eval_type)
{
// Do evaluation on first pass. After that, take context value.
var sid = props._sequence_id;
if (!sid) sid = props._sequence_id = Format("%d", ++UserAction_SequenceIDs);
if (context.sequence_progress[sid] = context.sequence_progress[sid] ?? !!EvaluateValue("Boolean", props.Condition, context))
return EvaluateValue(eval_type, props.TrueEvaluator, context);
else
return EvaluateValue(eval_type, props.FalseEvaluator, context);
}
private func EvalAct_Log(proplist props, proplist context)
{
Log(EvaluateValue("String", props.Message, context) ?? "");

View File

@ -273,3 +273,11 @@ PositionX=X-Position
PositionXHelp=Horizontale Komponente einer Position.
PositionY=Y-Position
PositionYHelp=Vertikale Komponente einer Position.
ConditionalAction=Bedingte Aktion
ConditionalActionHelp=Fuehrt eine Aktion nur dann aus, wenn eine Bedingung wahr ist.
Condition=Bedingung
IfConditionHelp=Bedingung, die entscheidet, ob die bedingte Aktion oder die alternative Aktion ausgefuehrt wird.
TrueEvaluator=Bedingte Aktion
TrueEvaluatorHelp=Aktion, die nur dann ausgefuehrt wird, wenn die Begingung wahr ist.
FalseEvaluator=Alternative Aktion
FalseEvaluatorHelp=Aktion, die nur dann ausgefuehrt wird, wenn die Bedingung nicht wahr ist.

View File

@ -273,3 +273,11 @@ PositionX=X position
PositionXHelp=Horizontal component of a position.
PositionY=Y position
PositionYHelp=Vertical component of a position.
ConditionalAction=Conditional action
ConditionalActionHelp=Executes an action only if a condition is true.
Condition=Condition
IfConditionHelp=Condition which decides whether the conditional action of the alternative action is executed.
TrueEvaluator=Conditioned action
TrueEvaluatorHelp=Action that is executed if the condition is true.
FalseEvaluator=Else action
FalseEvaluatorHelp=Action that is executed if the condition is false.