1. 重新设计了Generate项目及相关特性的命名,避免与其他类型混淆。

2. 补充了部分注释。
3. 修改了删除容器节点时,容器内子节点未正确删除的问题。
This commit is contained in:
fengjiayi
2025-07-30 21:15:07 +08:00
parent 93148b11a5
commit 152077e9b5
188 changed files with 2713 additions and 1406 deletions

View File

@@ -4,8 +4,15 @@ using Serein.Workbench.Node.View;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// ActionNodeControlViewModel 类用于表示单动作节点的控制视图模型。
/// </summary>
public class ActionNodeControlViewModel : NodeControlViewModelBase
{
/// <summary>
/// 构造一个新的 ActionNodeControlViewModel 实例。
/// </summary>
/// <param name="node"></param>
public ActionNodeControlViewModel(SingleActionNode node) : base(node)
{
// this.NodelModel = node;

View File

@@ -10,7 +10,7 @@ namespace Serein.Workbench.Node.ViewModel
public class ConditionNodeControlViewModel : NodeControlViewModelBase
{
public new SingleConditionNode NodeModel { get; }
private new SingleConditionNode NodeModel { get; }
/// <summary>
/// 是否为自定义参数

View File

@@ -4,9 +4,15 @@ using Serein.Workbench.Node.View;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// 表达式操作节点控制视图模型
/// </summary>
public class ExpOpNodeControlViewModel: NodeControlViewModelBase
{
public new SingleExpOpNode NodeModel { get; }
/// <summary>
/// 对应的表达式操作节点模型
/// </summary>
public new SingleExpOpNode NodeModel { get; }
//public string Expression
//{
@@ -18,6 +24,10 @@ namespace Serein.Workbench.Node.ViewModel
// }
//}
/// <summary>
/// 表达式操作节点控制视图模型构造函数
/// </summary>
/// <param name="nodeModel"></param>
public ExpOpNodeControlViewModel(SingleExpOpNode nodeModel) : base(nodeModel)
{

View File

@@ -4,10 +4,21 @@ using Serein.Workbench.Node.View;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// 单触发器节点控制视图模型
/// </summary>
public class FlipflopNodeControlViewModel : NodeControlViewModelBase
{
public new SingleFlipflopNode NodelModel { get;}
public FlipflopNodeControlViewModel(SingleFlipflopNode node) : base(node)
/// <summary>
/// 单触发器节点模型
/// </summary>
public SingleFlipflopNode NodelModel { get;}
/// <summary>
/// 构造一个新的单触发器节点控制视图模型实例。
/// </summary>
/// <param name="node"></param>
public FlipflopNodeControlViewModel(SingleFlipflopNode node) : base(node)
{
this.NodelModel = node;
}

View File

@@ -50,6 +50,10 @@ namespace Serein.Workbench.Node.ViewModel
private readonly FlowNodeService flowNodeService;
private readonly IFlowEEForwardingService flowEEForwardingService;
/// <summary>
/// 流程接口节点构造函数
/// </summary>
/// <param name="node"></param>
public FlowCallNodeControlViewModel(SingleFlowCallNode node) : base(node)
{
this.FlowCallNode = node;

View File

@@ -5,9 +5,12 @@ using System.Windows.Input;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// 全局数据节点控制视图模型
/// </summary>
public class GlobalDataNodeControlViewModel : NodeControlViewModelBase
{
private SingleGlobalDataNode NodeModel => (SingleGlobalDataNode)base.NodeModel;
private new SingleGlobalDataNode NodeModel => (SingleGlobalDataNode)base.NodeModel;
/// <summary>
/// 复制全局数据表达式
@@ -19,7 +22,10 @@ namespace Serein.Workbench.Node.ViewModel
/// </summary>
public ICommand CommandRefreshData { get; }
/// <summary>
/// 全局数据节点控制视图模型构造函数
/// </summary>
/// <param name="node"></param>
public GlobalDataNodeControlViewModel(SingleGlobalDataNode node) : base(node)
{
CommandCopyDataExp = new RelayCommand( o =>

View File

@@ -6,9 +6,12 @@ using System.Windows.Input;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// 动态脚本节点控制视图模型
/// </summary>
public class NetScriptNodeControlViewModel : NodeControlViewModelBase
{
private SingleNetScriptNode NodeModel => (SingleNetScriptNode)base.NodeModel;
private new SingleNetScriptNode NodeModel => (SingleNetScriptNode)base.NodeModel;
public string Tips
{
@@ -45,22 +48,12 @@ public class FlowLibrary
}
}";
CommandOpenScriptEdit = new RelayCommand(async o =>
CommandOpenScriptEdit = new RelayCommand(o =>
{
DynamicCompilerView dynamicCompilerView = new DynamicCompilerView();
dynamicCompilerView.ScriptCode = this.Script ;
dynamicCompilerView.OnCompileComplete = OnCompileComplete;
dynamicCompilerView.ShowDialog();
//try
//{
// var result = await NodeModel.ExecutingAsync(new Library.DynamicContext(nodeModel.Env));
// nodeModel.Env.WriteLine(InfoType.INFO, result?.ToString());
//}
//catch (Exception ex)
//{
// nodeModel.Env.WriteLine(InfoType.ERROR, ex.ToString());
//}
});
NodeModel1 = nodeModel;
}
@@ -86,6 +79,10 @@ public class FlowLibrary
/// 打开编辑窗口
/// </summary>
public ICommand CommandOpenScriptEdit { get; }
/// <summary>
/// 节点模型
/// </summary>
public NodeModelBase NodeModel1 { get; }
}
}

View File

@@ -13,9 +13,13 @@ using System.Windows.Input;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// 脚本节点控制视图模型
/// </summary>
public class ScriptNodeControlViewModel : NodeControlViewModelBase
{
private SingleScriptNode NodeModel => (SingleScriptNode)base.NodeModel;
private new SingleScriptNode NodeModel => (SingleScriptNode)base.NodeModel;
public string? Script
{

View File

@@ -12,9 +12,13 @@ using System.Windows.Controls;
namespace Serein.Workbench.Node.ViewModel
{
/// <summary>
/// UI节点控制器视图模型
/// </summary>
public partial class UINodeControlViewModel : NodeControlViewModelBase
{
private SingleUINode NodeModel => (SingleUINode)base.NodeModel;
private new SingleUINode NodeModel => (SingleUINode)base.NodeModel;
//public IEmbeddedContent Adapter => NodeModel.Adapter;
/// <summary>