using Serein.Library; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Shapes; namespace Serein.Workbench.Node.View { #region Model,不科学的全局变量 public class MyLine { public MyLine(Canvas canvas, ConnectionLineShape line) { Canvas = canvas; Line = line; canvas?.Children.Add(line); } public Canvas Canvas { get; set; } public ConnectionLineShape Line { get; set; } public void Remove() { Canvas?.Children.Remove(Line); } } public class ConnectingData { /// /// 是否正在创建连线 /// public bool IsCreateing { get; set; } /// /// 起始控制点 /// public JunctionControlBase StartJunction { get; set; } /// /// 当前的控制点 /// public JunctionControlBase CurrentJunction { get; set; } /// /// 开始坐标 /// public Point StartPoint { get; set; } /// /// 线条样式 /// public MyLine MyLine { get; set; } /// /// 线条类别(方法调用) /// public ConnectionInvokeType ConnectionInvokeType { get; set; } = ConnectionInvokeType.IsSucceed; /// /// 线条类别(参数传递) /// public ConnectionArgSourceType ConnectionArgSourceType { get; set; } = ConnectionArgSourceType.GetOtherNodeData; /// /// 判断当前连接类型 /// public JunctionOfConnectionType Type => StartJunction.JunctionType.ToConnectyionType(); /// /// 是否允许连接 /// public bool IsCanConnected { get { if(StartJunction is null || CurrentJunction is null ) { return false; } if (!StartJunction.MyNode.Equals(CurrentJunction.MyNode) && StartJunction.JunctionType.IsCanConnection(CurrentJunction.JunctionType)) { return true; } else { return false; } } } /// /// 更新临时的连接线 /// /// public void UpdatePoint(Point point) { if (StartJunction is null || CurrentJunction is null ) { return; } if (StartJunction.JunctionType == Library.JunctionType.Execute || StartJunction.JunctionType == Library.JunctionType.ArgData) { MyLine.Line.UpdateStartPoints(point); } else { MyLine.Line.UpdateEndPoints(point); } } /// /// 重置连线状态 /// public void Reset() { IsCreateing = false; StartJunction = null; CurrentJunction = null; MyLine?.Remove(); ConnectionInvokeType = ConnectionInvokeType.IsSucceed; ConnectionArgSourceType = ConnectionArgSourceType.GetOtherNodeData; } } public static class GlobalJunctionData1 { //private static ConnectingData? myGlobalData; //private static object _lockObj = new object(); /// /// 创建节点之间控制点的连接行为 /// public static ConnectingData MyGlobalConnectingData { get; } = new ConnectingData(); /// /// 删除连接视觉效果 /// public static void OK() { MyGlobalConnectingData.Reset(); } } #endregion }