mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
158 lines
4.8 KiB
C#
158 lines
4.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Text;
|
|
using AIStudio.Wpf.DiagramDesigner.Enums;
|
|
using AIStudio.Wpf.DiagramDesigner.Models;
|
|
|
|
namespace AIStudio.Wpf.DiagramDesigner
|
|
{
|
|
public class LogicalConnectorInfo : FullyCreatedConnectorInfo
|
|
{
|
|
public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless)
|
|
{
|
|
this.ConnectorValueType = connectorValueType;
|
|
}
|
|
|
|
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless)
|
|
{
|
|
this.ConnectorValueType = connectorValueType;
|
|
}
|
|
|
|
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SelectableItemBase designer) : base(root, dataItem, designer)
|
|
{
|
|
}
|
|
|
|
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SerializableItem serializableItem, string serializableType) : base(root, dataItem, serializableItem, serializableType)
|
|
{
|
|
}
|
|
|
|
public override SelectableItemBase GetSerializableObject()
|
|
{
|
|
return new LogicalConnectorInfoItem(this);
|
|
}
|
|
|
|
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
|
{
|
|
base.LoadDesignerItemViewModel(designerbase);
|
|
|
|
if (designerbase is LogicalConnectorInfoItem designer)
|
|
{
|
|
ConnectorValue = designer.ConnectorValue;
|
|
ConnectorValueType = designer.ConnectorValueType;
|
|
ConnectorString = designer.ConnectorString;
|
|
}
|
|
}
|
|
|
|
private double _connectorValue;
|
|
public double ConnectorValue
|
|
{
|
|
get
|
|
{
|
|
return _connectorValue;
|
|
}
|
|
set
|
|
{
|
|
SetProperty(ref _connectorValue, value);
|
|
}
|
|
}
|
|
|
|
private string _connectorString;
|
|
public string ConnectorString
|
|
{
|
|
get
|
|
{
|
|
return _connectorString;
|
|
}
|
|
set
|
|
{
|
|
SetProperty(ref _connectorString, value);
|
|
}
|
|
}
|
|
|
|
private ConnectorValueType _connectorValueType;
|
|
public ConnectorValueType ConnectorValueType
|
|
{
|
|
get
|
|
{
|
|
return _connectorValueType;
|
|
}
|
|
set
|
|
{
|
|
SetProperty(ref _connectorValueType, value);
|
|
}
|
|
}
|
|
|
|
private ConnectorErrorCode _errorCode;
|
|
public ConnectorErrorCode ErrorCode
|
|
{
|
|
get
|
|
{
|
|
return _errorCode;
|
|
}
|
|
set
|
|
{
|
|
SetProperty(ref _errorCode, value);
|
|
}
|
|
}
|
|
|
|
private string _errorMessage;
|
|
public string ErrorMessage
|
|
{
|
|
get
|
|
{
|
|
return _errorMessage;
|
|
}
|
|
set
|
|
{
|
|
SetProperty(ref _errorMessage, value);
|
|
}
|
|
}
|
|
|
|
public bool ConnectorChanged
|
|
{
|
|
get; set;
|
|
}
|
|
|
|
protected override void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
if (IsLoaded == false) { return; }
|
|
|
|
switch (e.PropertyName)
|
|
{
|
|
case nameof(ConnectorValue):
|
|
case nameof(ConnectorString):
|
|
case nameof(ConnectorValueType):
|
|
case nameof(ErrorCode):
|
|
case nameof(ErrorMessage):
|
|
RaisePropertyChanged(nameof(ConnectorChanged));
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
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;
|
|
|
|
}
|
|
}
|
|
}
|