mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-22 01:16:36 +08:00
连接线
This commit is contained in:
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user