void _yesBtn_Click(object sender, EventArgs e)
        {
            //检查信息准确性及完整性
            //始化构件实体并记录到XML文件;
            var retComponent = new Models.Component();

            retComponent.InitTopo(_nodeArray.Length);
            retComponent.Name = _typeTB.Text;

            for (int i = 0; i < retComponent.NodeNum; i++)
            {
                if (_nodeArray[i] != null)
                {
                    //添加节点信息
                    retComponent.CmpTopoNet.SetNodeValue(i, new ComponentNode(i, _nodeArray[i]));
                    //添加连接信息
                    var dgv = _dgvsOpt.DataGridViweList[i];
                    foreach (DataGridViewRow row in dgv.Rows)
                    {
                        var linkType  = (LinkType)Enum.Parse(typeof(LinkType), row.Cells[_dgvColumnTitle_linkType].Value.ToString());
                        int endId1    = int.Parse(row.Cells[_dgvColumnTitle_end1CmpNum].Value.ToString());
                        int endId2    = int.Parse(row.Cells[_dgvColumnTitle_end2CmpNum].Value.ToString());
                        var linkLines = (LinkLanes)Enum.Parse(typeof(LinkLanes), row.Cells[_dgvColumnTitle_dataWidth].Value.ToString());

                        var curLine = new ComponentLine(linkType, endId1, endId2, linkLines);
                        retComponent.CmpTopoNet.SetLinkValue(curLine);
                    }
                }
            }
            retComponent.SaveXmlByName();
            GenerateSourceFile();
            this.DialogResult = DialogResult.Yes;
        }
Ejemplo n.º 2
0
        public override ModelBase CreateObjectByName(string objectName)
        {
            Component component  = new Component();
            string    xmlPathDir = Path.Combine(PathManager.GetComponentPath(), objectName);
            string    xmlPath    = string.Format("{0}.xml", xmlPathDir);

            if (!File.Exists(xmlPath))
            {
                MessageBox.Show("CreateObject_Component:没有该Component对应的XML文件!");
                return(null);
            }
            XDocument xd = XDocument.Load(xmlPath);
            //根元素的Attribute
            XElement rt = xd.Element("Component");

            component.Name = rt.Attribute("Name").Value;
            component.InitTopo(int.Parse(rt.Attribute("NodeNum").Value));

            var nodesElement = rt.Element("Nodes");

            foreach (var e in nodesElement.Elements())
            {
                var nodeId     = int.Parse(e.Attribute("NodeNum").Value);
                var nodeType   = (EndType)(Enum.Parse(typeof(EndType), e.Attribute("NodeType").Value));
                var nodeName   = e.Attribute("NodeName").Value;
                var nodeObject = Component_GenNodeObj(nodeType, string.Format(@"{0}\{1}.xml", xmlPathDir, nodeName));

                var cmpNode = new ComponentNode(nodeId, nodeObject);
                component.CmpTopoNet.SetNodeValue(nodeId, cmpNode);
            }

            var linksElement = rt.Element("Links");

            var ethLinksElement = linksElement.Element("EthLinks");

            foreach (var eLine in ethLinksElement.Elements())
            {
                component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine));
            }
            var rioLinksElement = linksElement.Element("RioLinks");

            foreach (var eLine in rioLinksElement.Elements())
            {
                component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine));
            }
            var gtxLinksElement = linksElement.Element("GTXLinks");

            foreach (var eLine in gtxLinksElement.Elements())
            {
                component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine));
            }
            var lvdsLinksElement = linksElement.Element("LVDSLinks");

            foreach (var eLine in lvdsLinksElement.Elements())
            {
                component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine));
            }
            return(component);
        }