mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
连接线
This commit is contained in:
@@ -6,9 +6,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public enum ConnectorValueType
|
||||
{
|
||||
//前面分给值类型,值类型之间可以兼容,直接转换
|
||||
Real = 0,
|
||||
Int = 1,
|
||||
Bool = 2,
|
||||
String = 3,
|
||||
ValueType = 10,
|
||||
String = 11,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user