public TemplateNode(CodeGenerateSystem.Base.ConstructionParams csParam, string param) : base(csParam, param) { InitConstruction(); NodeName = TitleNameText; if (HostNodesContainer != null) { NodeName = HostNodesContainer.GetNodeName(TitleNameText); TitleNameText = NodeName; } mReturnLinkInfo = AddLinkObject(CodeGenerateSystem.Base.enLinkType.Class, mCtrlreturnLink, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, null, true); // mReturnLinkInfo.OnAddLinkInfo += (info)=> // { // Method_Pre.Visibility = Visibility.Collapsed; // Method_Next.Visibility = Visibility.Collapsed; // }; // mReturnLinkInfo.OnDelLinkInfo += (info) => // { // Method_Pre.Visibility = Visibility.Visible; // Method_Next.Visibility = Visibility.Visible; // }; mParanLinkInfo = AddLinkObject(CodeGenerateSystem.Base.enLinkType.NumbericalValue, mCtrlparamLink, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, null, false); //AddLinkObject(CodeGenerateSystem.Base.enLinkType.Method, Method_Pre, CodeGenerateSystem.Base.enBezierType.Top, CodeGenerateSystem.Base.enLinkOpType.End, Method_Pre.BackBrush, false); //AddLinkObject(CodeGenerateSystem.Base.enLinkType.Method, Method_Next, CodeGenerateSystem.Base.enBezierType.Bottom, CodeGenerateSystem.Base.enLinkOpType.Start, Method_Next.BackBrush, false); var types = EngineNS.Rtti.RttiHelper.GetTypes(); foreach (var type in types) { var atts = type.GetCustomAttributes(typeof(CSUtility.Data.DataTemplateAttribute), false); if (atts.Length <= 0) { continue; } mTemplateTypes.Add(type); } Init_WPF(); SetParameters(); foreach (var i in mTemplateTypes) { if (i.FullName == param) { ComboBoxTemplateSelectItem = i; mReturnType = mComboBoxTemplateSelectItem; break; } } mParamType = CSUtility.Data.DataTemplateManagerAssist.Instance.GetDataTemplateIDType(mReturnType); mParanLinkInfo.LinkType = CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromCommonType(mParamType); }
protected override void MenuItem_Click_Del(object sender, RoutedEventArgs e) { if (!CheckCanDelete()) { return; } List <AnimStateLinkInfoForUndoRedo> undoRedoLinkInfos = new List <AnimStateLinkInfoForUndoRedo>(); for (int i = 0; i < mCtrlValueLinkHandle.GetLinkInfosCount(); i++) { var undoRedoLinkInfo = new AnimStateLinkInfoForUndoRedo(); var linkInfo = mCtrlValueLinkHandle.GetLinkInfo(i); var animStateLinkInfo = linkInfo as AnimStateLinkInfo; undoRedoLinkInfo.linkInfo = animStateLinkInfo; undoRedoLinkInfos.Add(undoRedoLinkInfo); } var redoAction = new Action <object>((obj) => { foreach (var linkInfo in undoRedoLinkInfos) { linkInfo.linkInfo.RemoveAllFromContainer(); } HostNodesContainer.DeleteNode(this); }); redoAction.Invoke(null); EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null, (obj) => { if (m_bMoveable) { if (ParentDrawCanvas != null) { ParentDrawCanvas.Children.Add(this); ParentDrawCanvas.Children.Add(mParentLinkPath); } HostNodesContainer.CtrlNodeList.Add(this); } foreach (var data in undoRedoLinkInfos) { data.linkInfo.ResetLink(); data.linkInfo.AddAllToContainer(); data.linkInfo.UpdateLink(); } }, "Delete Node"); IsDirty = true; }
private void MenuItem_Click(object sender, RoutedEventArgs e) { var tempInfos = new List <Base.LinkInfo>(LinkInfos); var redoAction = new Action <object>((obj) => { Clear(); }); redoAction.Invoke(null); EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null, (obj) => { foreach (var li in tempInfos) { LinkInfos.Add(new Base.LinkInfo(HostNodesContainer.GetDrawCanvas(), li.m_linkFromObjectInfo, li.m_linkToObjectInfo)); } }, "Remove Link"); HostNodeControl.IsDirty = true; }
public override void Load(EngineNS.IO.XmlNode xmlNode, double deltaX, double deltaY) { try { base.Load(xmlNode, deltaX, deltaY); var childNode = xmlNode.FindNode("combinationNodes"); foreach (var node in childNode.GetNodes()) { Type ctrlType = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(node.FindAttrib("Type").Value);// Program.GetType(xmlNode.FindAttrib("Type").Value); if (ctrlType == null) { continue; } //Type nodeType = Type.GetType(element.GetAttribute("Type")); //string strParam = element.GetAttribute("Params"); var paramAtt = node.FindAttrib("Params"); string strParam = null; if (paramAtt != null) { strParam = paramAtt.Value; } //double x = System.Convert.ToDouble(element.GetAttribute("X")); //double y = System.Convert.ToDouble(element.GetAttribute("Y")); double x = System.Convert.ToDouble(node.FindAttrib("X").Value); double y = System.Convert.ToDouble(node.FindAttrib("Y").Value); CodeGenerateSystem.Base.BaseNodeControl nodeControl = HostNodesContainer.AddNodeControl(ctrlType, strParam, x, y, false); nodeControl.Load(node); PackageNodeList.Add(nodeControl); nodeControl.PackagedNode = this; } } catch (System.Exception e) { ShowMethodLost = true; SetErrorShow_WPF("节点读取失败!"); System.Diagnostics.Debug.WriteLine($"节点读取失败!:Name={NodeName}\r\n{e.ToString()}"); } }
public LinkPinControl() { GUID = Guid.NewGuid(); Image = TryFindResource("VarPin_Disconnected") as ImageSource; mContextMenu.Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "ContextMenu_Default")) as Style; this.MouseRightButtonDown += (sender, e) => { e.Handled = true; }; this.MouseRightButtonUp += (sender, e) => { if (mContextMenu != null) { mContextMenu.Items.Clear(); AddContextMenuItem("删除所有链接", "Pin Action", (actionObj, arg) => { var tempInfos = new List <LinkInfo>(LinkInfos); var redoAction = new Action <object>((obj) => { Clear(); }); redoAction.Invoke(null); EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null, (obj) => { foreach (var li in tempInfos) { LinkInfos.Add(new LinkInfo(HostNodesContainer.GetDrawCanvas(), li.m_linkFromObjectInfo, li.m_linkToObjectInfo)); } }, "Remove Link"); HostNodeControl.IsDirty = true; }); foreach (var linkInfo in LinkInfos) { BaseNodeControl linkNode = null; switch (LinkOpType) { case enLinkOpType.Start: linkNode = linkInfo.m_linkToObjectInfo.HostNodeControl; break; case enLinkOpType.End: linkNode = linkInfo.m_linkFromObjectInfo.HostNodeControl; break; case enLinkOpType.Both: linkNode = null; break; } if (linkNode == null) { return; } var str = linkNode.GetNodeDescriptionString(); AddContextMenuItem("删除连接到 " + str, "Pin Action", (actionObj, arg) => { var undoRedoData = new DelLinkUndoRedoData() { ProcessInfo = linkInfo }; var redoAction = new Action <object>((obj) => { undoRedoData.ProcessInfo.Clear(); LinkInfos.Remove(undoRedoData.ProcessInfo); }); redoAction.Invoke(null); EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand(HostNodesContainer.HostControl.UndoRedoKey, null, redoAction, null, (obj) => { undoRedoData.ProcessInfo = new LinkInfo(HostNodesContainer.GetDrawCanvas(), undoRedoData.ProcessInfo.m_linkFromObjectInfo, undoRedoData.ProcessInfo.m_linkToObjectInfo); LinkInfos.Add(undoRedoData.ProcessInfo); }, "Remove Link"); HostNodeControl.IsDirty = true; }); } OnCollectionContextMenus?.Invoke(this); mContextMenu.IsOpen = true; } e.Handled = true; }; }