From b6e095293ccdd11ff29d98beaa8481875d0ac4a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Sat, 22 Jul 2023 19:11:08 +0800 Subject: [PATCH] block --- .../Models/Values/ConstParameter.cs | 39 +++++++++++++++++++ .../Models/Values/IParameter.cs | 18 +++++++++ .../Models/Values/VarParameter.cs | 10 +++++ .../Container/BlockItemsContainerInfo.cs | 24 +++++++++++- .../BlockDesignerItemViewModel.cs | 34 +++++++++++++++- 5 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 AIStudio.Wpf.DiagramDesigner/Models/Values/ConstParameter.cs create mode 100644 AIStudio.Wpf.DiagramDesigner/Models/Values/IParameter.cs create mode 100644 AIStudio.Wpf.DiagramDesigner/Models/Values/VarParameter.cs diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Values/ConstParameter.cs b/AIStudio.Wpf.DiagramDesigner/Models/Values/ConstParameter.cs new file mode 100644 index 0000000..8f523df --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Models/Values/ConstParameter.cs @@ -0,0 +1,39 @@ +using AIStudio.Wpf.DiagramDesigner; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public class ConstParameter : BindableBase, IParameter + { + private object _value; + + public object Value + { + get + { + return _value; + } + set + { + SetProperty(ref _value, value); + } + } + + public void Add(object value) + { + if (double.TryParse(Value?.ToString() ?? "", out var value1) && double.TryParse(value?.ToString() ?? "", out var value2)) + { + Value = value1 + value2; + } + else + { + Value = $"{Value}{value}"; + } + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Values/IParameter.cs b/AIStudio.Wpf.DiagramDesigner/Models/Values/IParameter.cs new file mode 100644 index 0000000..edb65cc --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Models/Values/IParameter.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public interface IParameter + { + object Value + { + get; set; + } + + void Add(object value); + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Values/VarParameter.cs b/AIStudio.Wpf.DiagramDesigner/Models/Values/VarParameter.cs new file mode 100644 index 0000000..85cd1c5 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Models/Values/VarParameter.cs @@ -0,0 +1,10 @@ +using System; +using AIStudio.Wpf.DiagramDesigner; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public class VarParameter : ConstParameter + { + + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs index de11411..df46c43 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs @@ -176,7 +176,20 @@ namespace AIStudio.Wpf.DiagramDesigner { SetProperty(ref _actualItemHeight, value); } - } + } + + private IParameter _parameter; + public IParameter Parameter + { + get + { + return _parameter; + } + set + { + SetProperty(ref _parameter, value); + } + } private ObservableCollection _children = new ObservableCollection(); public ObservableCollection Children @@ -322,7 +335,14 @@ namespace AIStudio.Wpf.DiagramDesigner { if (OnlyOneChild) { - return Children.FirstOrDefault()?.GetResult(); + if (Children?.Count == 1) + { + return Children.FirstOrDefault()?.GetResult(); + } + else + { + return Parameter?.Value; + } } else { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs index 70c3c30..117adf9 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Models; @@ -248,6 +249,19 @@ namespace AIStudio.Wpf.DiagramDesigner } } + private bool _isExecuting; + public bool IsExecuting + { + get + { + return _isExecuting; + } + set + { + SetProperty(ref _isExecuting, value); + } + } + public string Flag { get; set; @@ -409,11 +423,29 @@ namespace AIStudio.Wpf.DiagramDesigner } #region 执行 - public virtual void Execute() + public void Execute() + { + BeforeExecute(); + Executing(); + AfterExecute(); + } + + public virtual void BeforeExecute() + { + IsExecuting = true; + } + + public virtual void Executing() { } + public virtual void AfterExecute() + { + IsExecuting = false; + Next?.Execute(); + } + public virtual object GetResult() { if (FirstContainer != null)