sfc界面处理完成,还差顺序逻辑控制过程

This commit is contained in:
艾竹
2021-08-01 22:30:12 +08:00
parent 9a0e85e1a9
commit 0b8258003f
50 changed files with 2682 additions and 155 deletions

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Windows.Media;
using Util.DiagramDesigner;
namespace AIStudio.Wpf.SFC.ViewModels
@@ -14,10 +15,10 @@ namespace AIStudio.Wpf.SFC.ViewModels
public SFCNode(SFCNodeKinds kind) : base()
{
ColorViewModel.FillColor.Color = Colors.Blue;
Kind = kind;
ItemWidth = 80;
ItemHeight = 40;
ItemHeight = 40;
}
public SFCNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer)
@@ -27,14 +28,16 @@ namespace AIStudio.Wpf.SFC.ViewModels
protected override void Init()
{
base.Init();
IsRatioConnector = true;
ShowRotate = false;
ShowArrow = false;
ShowText = true;
IsReadOnlyText = true;
base.Init();
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
}
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
{
@@ -42,7 +45,95 @@ namespace AIStudio.Wpf.SFC.ViewModels
}
protected override void InitConnector()
{
ClearConnectors();
}
public Dictionary<int, FullyCreatedConnectorInfo> Input { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public Dictionary<int, FullyCreatedConnectorInfo> Output { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public Dictionary<int, FullyCreatedConnectorInfo> Action { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public virtual void ExecuteAddLeftInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Left, true);
connector.XRatio = 0;
Input.Add(Input.Count, connector);
for (int i = 0; i < Input.Values.Count; i++)
{
Input[i].YRatio = (i + 1.0) / (Input.Values.Count + 1.0);
}
AddConnector(connector);
}
public virtual void ExecuteAddTopInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top, true);
connector.YRatio = 0;
Input.Add(Input.Count, connector);
for (int i = 0; i < Input.Values.Count; i++)
{
Input[i].XRatio = (i + 1.0) / (Input.Values.Count + 1.0);
if (Output.ContainsKey(i))
{
Output[i].XRatio = Input[i].XRatio;
}
}
AddConnector(connector);
}
public virtual void ExecuteAddRightOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right, true);
connector.XRatio = 1;
Output.Add(Output.Count, connector);
for (int i = 0; i < Output.Values.Count; i++)
{
Output[i].YRatio = (i + 1.0) / (Output.Values.Count + 1.0);
}
AddConnector(connector);
}
public virtual void ExecuteAddBottomOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom, true);
connector.YRatio = 1;
Output.Add(Output.Count, connector);
for (int i = 0; i < Output.Values.Count; i++)
{
Output[i].XRatio = (i + 1.0) / (Output.Values.Count + 1.0);
if (Input.ContainsKey(i))
{
Input[i].XRatio = Output[i].XRatio;
}
}
AddConnector(connector);
}
public virtual void ExecuteAddActionOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right, true);
connector.XRatio = 1;
Action.Add(Action.Count, connector);
Action[Action.Count - 1].YRatio = 0.5;
AddConnector(connector);
}
[Browsable(false)]
public SFCNodeKinds Kind { get; set; }
private double _value;
public double Value
{
get
{
return _value;
}
set
{
SetProperty(ref _value, value);
}
}
}
}