Files
serein-flow/Workbench/Node/ViewModel/ScriptNodeControlViewModel.cs
fengjiayi 88de5a21f5 优化了SereinEnv.WriteLine(Exception, InfoClass)输出,可以通过更改InfoClass控制是否输出异常堆栈信息。
优化了批量加载节点时,脚本节点类型分析异常的问题。
2025-07-17 22:46:40 +08:00

65 lines
1.7 KiB
C#

using Serein.Library;
using Serein.Library.Utils;
using Serein.NodeFlow.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace Serein.Workbench.Node.ViewModel
{
public class ScriptNodeControlViewModel : NodeControlViewModelBase
{
private SingleScriptNode NodeModel => (SingleScriptNode)base.NodeModel;
public string? Script
{
get => NodeModel?.Script;
set { NodeModel.Script = value; OnPropertyChanged(); }
}
public ScriptNodeControlViewModel(NodeModelBase nodeModel) : base(nodeModel)
{
CommandExecuting = new RelayCommand(async o =>
{
try
{
var cts = new CancellationTokenSource();
var result = await NodeModel.ExecutingAsync(new Library.DynamicContext(nodeModel.Env), cts.Token);
var data = result.Value;
cts.Cancel();
SereinEnv.WriteLine(InfoType.INFO, data?.ToString());
}
catch (Exception ex)
{
SereinEnv.WriteLine(ex);
}
});
CommandLoadScript = new RelayCommand( o =>
{
NodeModel.ReloadScript(); // 工作台重新加载脚本
});
}
/// <summary>
/// 加载脚本代码
/// </summary>
public ICommand CommandLoadScript{ get; }
/// <summary>
/// 尝试执行
/// </summary>
public ICommand CommandExecuting { get; }
}
}