using System; using System.Collections.Generic; using System.Text; 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 valueTypePoint = ConnectorValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless) { this.ConnectorValueType = valueTypePoint; } 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) { } 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); } } public bool ConnectorError { 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; } } }