Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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()}");
            }
        }
Ejemplo n.º 5
0
        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;
            };
        }