连接线

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 public enum ConnectorValueType
{ {
//前面分给值类型,值类型之间可以兼容,直接转换
Real = 0, Real = 0,
Int = 1, Int = 1,
Bool = 2, 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) 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; this.ConnectorValueType = valueTypePoint;
} }
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SelectableItemBase designer) : base(root, dataItem, designer) 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 public double ConnectorValue
{ {
get get
@@ -55,7 +55,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public string _connectorString; private string _connectorString;
public string ConnectorString public string ConnectorString
{ {
get get
@@ -68,7 +68,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public ConnectorValueType _connectorValueType; private ConnectorValueType _connectorValueType;
public ConnectorValueType ConnectorValueType public ConnectorValueType ConnectorValueType
{ {
get 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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -280,20 +281,29 @@ namespace AIStudio.Wpf.DiagramDesigner
if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase) if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase)
{ {
input.Value.ConnectorValue = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorValue; var output = (connector.SourceConnectorInfo as LogicalConnectorInfo);
input.Value.ConnectorString = (connector.SourceConnectorInfo as LogicalConnectorInfo).ConnectorString; 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; if (input.Value.CanAttachTo(output))
connector.ColorViewModel.LineColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
connector.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
if (LogicalType == LogicalType.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) foreach (var output in Output)
{ {
if (output.Value.IsError) if (output.Value.ValueError)
{ {
output.Value.ColorViewModel.FillColor.Color = Colors.Orange; output.Value.ColorViewModel.FillColor.Color = Colors.Orange;
} }