Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs

158 lines
4.8 KiB
C#
Raw Normal View History

2023-01-31 22:45:50 +08:00
using System;
using System.Collections.Generic;
2023-04-26 22:53:44 +08:00
using System.ComponentModel;
2023-01-31 22:45:50 +08:00
using System.Text;
2023-04-26 22:53:44 +08:00
using AIStudio.Wpf.DiagramDesigner.Enums;
2023-01-31 22:45:50 +08:00
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
public class LogicalConnectorInfo : FullyCreatedConnectorInfo
{
2023-04-29 18:36:50 +08:00
public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless)
2023-01-31 22:45:50 +08:00
{
2023-04-29 18:36:50 +08:00
this.ConnectorValueType = connectorValueType;
2023-01-31 22:45:50 +08:00
}
2023-04-29 18:36:50 +08:00
public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ConnectorValueType connectorValueType = ConnectorValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless)
2023-01-31 22:45:50 +08:00
{
2023-04-29 18:36:50 +08:00
this.ConnectorValueType = connectorValueType;
2023-04-25 23:07:25 +08:00
}
2023-01-31 22:45:50 +08:00
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)
{
2023-02-11 22:20:24 +08:00
ConnectorValue = designer.ConnectorValue;
2023-04-24 20:10:17 +08:00
ConnectorValueType = designer.ConnectorValueType;
2023-04-19 22:26:04 +08:00
ConnectorString = designer.ConnectorString;
2023-01-31 22:45:50 +08:00
}
}
2023-04-25 23:07:25 +08:00
private double _connectorValue;
2023-02-11 22:20:24 +08:00
public double ConnectorValue
{
get
{
return _connectorValue;
}
set
{
SetProperty(ref _connectorValue, value);
}
}
2023-04-25 23:07:25 +08:00
private string _connectorString;
2023-04-19 22:26:04 +08:00
public string ConnectorString
2023-01-31 22:45:50 +08:00
{
get
{
2023-04-19 22:26:04 +08:00
return _connectorString;
2023-01-31 22:45:50 +08:00
}
set
{
2023-04-19 22:26:04 +08:00
SetProperty(ref _connectorString, value);
}
}
2023-04-25 23:07:25 +08:00
private ConnectorValueType _connectorValueType;
2023-04-24 20:10:17 +08:00
public ConnectorValueType ConnectorValueType
2023-04-19 22:26:04 +08:00
{
get
{
return _connectorValueType;
2023-04-19 22:26:04 +08:00
}
set
{
SetProperty(ref _connectorValueType, value);
2023-01-31 22:45:50 +08:00
}
}
2023-04-26 22:53:44 +08:00
private ConnectorErrorCode _errorCode;
public ConnectorErrorCode ErrorCode
{
2023-04-26 22:53:44 +08:00
get
{
return _errorCode;
}
set
{
SetProperty(ref _errorCode, value);
}
2023-04-25 23:07:25 +08:00
}
2023-04-26 22:53:44 +08:00
private string _errorMessage;
public string ErrorMessage
2023-04-25 23:07:25 +08:00
{
2023-04-26 22:53:44 +08:00
get
{
return _errorMessage;
}
set
{
SetProperty(ref _errorMessage, value);
}
2023-04-25 23:07:25 +08:00
}
2023-04-26 22:53:44 +08:00
public bool ConnectorChanged
2023-04-25 23:07:25 +08:00
{
get; set;
}
2023-04-26 22:53:44 +08:00
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;
}
}
2023-04-25 23:07:25 +08:00
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;
}
2023-01-31 22:45:50 +08:00
}
}