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); cts.Cancel(); SereinEnv.WriteLine(InfoType.INFO, result?.ToString()); } catch (Exception ex) { SereinEnv.WriteLine(InfoType.ERROR, ex.ToString()); } }); CommandLoadScript = new RelayCommand( o => { NodeModel.ReloadScript(); }); } /// /// 加载脚本代码 /// public ICommand CommandLoadScript{ get; } /// /// 尝试执行 /// public ICommand CommandExecuting { get; } } }