同步操作将从 盘古软件/SharpSCADA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System.Collections.Generic;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Input;using System.Windows.Media;using Microsoft.Windows.Design.Interaction;using Microsoft.Windows.Design.Model;namespace HMIControl.VisualStudio.Design{class ControlAdornerProvider : PrimarySelectionAdornerProvider{private AdornerPanel _panel = new AdornerPanel();LinkableControl designObject;ControlAdorner adorner;Panel designCanvas;LinkPin hitPin;bool isdrag = false;protected override void Activate(ModelItem item){designObject = item.GetCurrentValue() as LinkableControl;//获得被点击的控件对象if (designObject != null){designCanvas = designObject.Parent as Panel;DesignerView v = DesignerView.FromContext(Context);adorner = new ControlAdorner(designObject);adorner.RenderTransform = new ScaleTransform(v.ZoomLevel, v.ZoomLevel);foreach (var pin in adorner.Children){pin.MouseLeftButtonDown += new MouseButtonEventHandler(Pin_MouseLeftButtonDown);//按下左键选中hitPin,开始拖动pin.MouseMove += new MouseEventHandler(Pin_MouseMove);//移动鼠标,开始找寻目标连接节点}AdornerPanel.SetAdornerHorizontalAlignment(adorner, AdornerHorizontalAlignment.Stretch);AdornerPanel.SetAdornerVerticalAlignment(adorner, AdornerVerticalAlignment.Stretch);_panel.Children.Add(adorner);Adorners.Add(_panel);v.ZoomLevelChanged += (s, e) => { adorner.RenderTransform = new ScaleTransform(v.ZoomLevel, v.ZoomLevel); };}base.Activate(item);}protected override void Deactivate(){base.Deactivate();}void Pin_MouseLeftButtonDown(object s, MouseButtonEventArgs e){hitPin = s as LinkPin; isdrag = true; e.Handled = true;}void Pin_MouseMove(object s, MouseEventArgs e){if (e.LeftButton != MouseButtonState.Pressed) isdrag = false;if (isdrag && hitPin != null && designCanvas != null){PinAdorner pinAdorner = new PinAdorner(designCanvas, hitPin);pinAdorner.MouseUp += new MouseButtonEventHandler(pinAdorner_MouseUp);DesignerView v = DesignerView.FromContext(Context);double zoom = v.ZoomLevel;pinAdorner.RenderTransform = new ScaleTransform(zoom, zoom);_panel.Children.Add(pinAdorner);e.Handled = true;}}static readonly Dictionary<ConnectOrientation, string> omap = new Dictionary<ConnectOrientation, string>{ { ConnectOrientation.Left, "LeftPin" }, { ConnectOrientation.Right, "RightPin" },{ ConnectOrientation.Top, "TopPin" }, { ConnectOrientation.Bottom, "BottomPin" },{ ConnectOrientation.None, "" } };void pinAdorner_MouseUp(object sender, MouseButtonEventArgs e){var pinAdorner = sender as PinAdorner;if (pinAdorner.HitPin != null){LinkableControl targetObject = pinAdorner.HitLinkableControl;LinkPin lp1 = pinAdorner.SourcePin;LinkPin lp2 = pinAdorner.HitPin;ConnectInfo info1 = lp1.GetInfo();ConnectInfo info2 = lp2.GetInfo();LinkLine line = new LinkLine(info1, info2);//Panel.SetZIndex(line, designCanvas.Children.Count);Binding bi1 = new Binding(omap[info1.Orient]);bi1.ElementName = designObject.Name;line.SetBinding(LinkLine.OriginInfoProperty, bi1);Binding bi2 = new Binding(omap[info2.Orient]);bi2.ElementName = targetObject.Name;line.SetBinding(LinkLine.TargetInfoProperty, bi2);var CanvasModelItem = AdornerProperties.GetModel(adorner).Parent;ModelItemCollection myControls = CanvasModelItem.Properties["Children"].Collection;ModelItem myLinkLine = myControls.Add(line);}if (pinAdorner.HitLinkableControl != null){pinAdorner.HitLinkableControl.IsLinkDragOver = false;}hitPin = null;if (adorner.IsMouseCaptured) adorner.ReleaseMouseCapture();_panel.Children.Remove(pinAdorner);}}class LinkLineAdornerProvider : PrimarySelectionAdornerProvider{LinkLine myLinkLine;SolidColorBrush brush;protected override void Activate(ModelItem item){myLinkLine = item.GetCurrentValue() as LinkLine;brush = myLinkLine.LineBrush;Panel.SetZIndex(myLinkLine, 1000);myLinkLine.LineBrush = Brushes.Yellow;base.Activate(item);}protected override void Deactivate(){myLinkLine.LineBrush = brush;Panel.SetZIndex(myLinkLine, 0);base.Deactivate();}}class TagComplexContextMenuProvider : PrimarySelectionContextMenuProvider{public TagComplexContextMenuProvider(){var lastFill = new MenuAction("Complex Editor");lastFill.Checkable = true;lastFill.Execute += (s, e) =>{ModelItem item = e.Selection.PrimarySelection;var tagReader = item.GetCurrentValue() as ITagReader;TagComplexEditor frm = new TagComplexEditor(tagReader);frm.ShowDialog();string txt = frm.TagText;if (!string.IsNullOrEmpty(txt)) { item.Properties["TagReadText"].SetValue(txt); }else if (txt == string.Empty) item.Properties["TagReadText"].ClearValue();};Items.Add(lastFill);}}class TagWindowContextMenuProvider : PrimarySelectionContextMenuProvider{public TagWindowContextMenuProvider(){var lastFill = new MenuAction("Window Editor");lastFill.Checkable = true;lastFill.Execute += (s, e) =>{ModelItem item = e.Selection.PrimarySelection;ITagWindow tagReader = item.GetCurrentValue() as ITagWindow;TagWindowEditor frm = new TagWindowEditor(tagReader);frm.ShowDialog();string txt = frm.GetText();if (!string.IsNullOrEmpty(txt)) { item.Properties["TagWindowText"].SetValue(txt); }else if (txt == string.Empty) item.Properties["TagWindowText"].ClearValue();if (frm.IsModel)item.Properties["IsModel"].SetValue(true);elseitem.Properties["IsModel"].ClearValue();if (frm.IsUnique)item.Properties["IsUnique"].SetValue(true);elseitem.Properties["IsUnique"].ClearValue();};Items.Add(lastFill);}}class TagWriterContextMenuProvider : PrimarySelectionContextMenuProvider{public TagWriterContextMenuProvider(){var lastFill = new MenuAction("Writer Editor");lastFill.Checkable = true;lastFill.Execute += (s, e) =>{ModelItem item = e.Selection.PrimarySelection;var tagWriter = item.GetCurrentValue() as ITagWriter;TagWriteEditor frm = new TagWriteEditor(tagWriter);frm.ShowDialog();if (frm.IsSaved){string txt = frm.TagText;if (string.IsNullOrEmpty(txt) == false) { item.Properties["TagWriteText"].SetValue(txt); }else if (txt == string.Empty) item.Properties["TagWriteText"].ClearValue();if (frm.IsPulse)item.Properties["IsPulse"].SetValue(true);elseitem.Properties["IsPulse"].ClearValue();}};Items.Add(lastFill);}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。