连接线

This commit is contained in:
艾竹
2023-04-25 23:07:25 +08:00
parent aa8ab61e37
commit 48314acbd5
3 changed files with 63 additions and 18 deletions

View File

@@ -6,9 +6,11 @@ namespace AIStudio.Wpf.DiagramDesigner
{
public enum ConnectorValueType
{
//前面分给值类型,值类型之间可以兼容,直接转换
Real = 0,
Int = 1,
Bool = 2,
String = 3,
ValueType = 10,
String = 11,
}
}

View File

@@ -15,7 +15,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType valueTypePoint = ConnectorValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless)
{
this.ConnectorValueType = valueTypePoint;
}
}
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SelectableItemBase designer) : base(root, dataItem, designer)
{
@@ -42,7 +42,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public double _connectorValue;
private double _connectorValue;
public double ConnectorValue
{
get
@@ -55,7 +55,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public string _connectorString;
private string _connectorString;
public string ConnectorString
{
get
@@ -68,7 +68,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public ConnectorValueType _connectorValueType;
private ConnectorValueType _connectorValueType;
public ConnectorValueType ConnectorValueType
{
get
@@ -81,9 +81,42 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public bool IsError
public bool ConnectorError
{
get;set;
get; set;
}
public bool ValueError
{
get; set;
}
public string ErrorMessage
{
get; set;
}
public override bool CanAttachTo(FullyCreatedConnectorInfo port)
{
if (!base.CanAttachTo(port))
{
return false;
}
if (port is LogicalConnectorInfo logical)
{
if (logical.ConnectorValueType == ConnectorValueType.String && this.ConnectorValueType == logical.ConnectorValueType)
{
return true;
}
else if (logical.ConnectorValueType <= ConnectorValueType.ValueType && this.ConnectorValueType <= ConnectorValueType.ValueType)
{
return true;
}
}
return false;
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -280,20 +281,29 @@ namespace AIStudio.Wpf.DiagramDesigner
if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase)
{
input.Value.ConnectorValue = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValue;
input.Value.ConnectorString = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorString;
var output = (connector.SourceConnectorInfo as LogicalConnectorInfo);
connector.ColorViewModel.LineColor.Color = output.ColorViewModel.FillColor.Color;
connector.ColorViewModel.FillColor.Color = output.ColorViewModel.FillColor.Color;
input.Value.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
connector.ColorViewModel.LineColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
connector.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
if (LogicalType == LogicalType.Output)
if (input.Value.CanAttachTo(output))
{
input.Value.ConnectorValueType = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValueType;
input.Value.ConnectorValue = output.ConnectorValue;
input.Value.ConnectorString = output.ConnectorString;
input.Value.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
if (LogicalType == LogicalType.Output)
{
input.Value.ConnectorValueType = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValueType;
}
else if (LogicalType == LogicalType.NOT)
{
input.Value.ConnectorValueType = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValueType == ConnectorValueType.Bool) ? ConnectorValueType.Bool : ConnectorValueType.Int;
}
}
else if (LogicalType == LogicalType.NOT)
else
{
input.Value.ConnectorValueType = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValueType == ConnectorValueType.Bool) ? ConnectorValueType.Bool : ConnectorValueType.Int;
input.Value.ConnectorError = true;
input.Value.ErrorMessage = "连接类型不匹配";
input.Value.ColorViewModel.FillColor.Color = Colors.Orange;
}
}
}
@@ -303,7 +313,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
foreach (var output in Output)
{
if (output.Value.IsError)
if (output.Value.ValueError)
{
output.Value.ColorViewModel.FillColor.Color = Colors.Orange;
}