public static List<PRO2ProjectDescriptor> createProjectDescriptorFromXML(string xmlResourcePath) { try { List<PRO2ProjectDescriptor> list = new List<PRO2ProjectDescriptor>(); Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlResourcePath); XmlDocument document = new XmlDocument(); document.Load(manifestResourceStream); bool result = false; foreach (XmlNode node in document.GetElementsByTagName("ProjectDesctiptor")) { PRO2ProjectDescriptor item = new PRO2ProjectDescriptor(); if (node.Attributes.GetNamedItem("name") != null) { item.Name = node.Attributes.GetNamedItem("name").Value; } if (node.Attributes.GetNamedItem("rfOperation") != null) { item.RfOperation = (RfOperation) Enum.Parse(typeof(RfOperation), node.Attributes.GetNamedItem("rfOperation").Value, true); } if (node.Attributes.GetNamedItem("modulationMode") != null) { item.ModulationMode = (ModulationMode) Enum.Parse(typeof(ModulationMode), node.Attributes.GetNamedItem("modulationMode").Value, true); } foreach (XmlNode node2 in node.ChildNodes) { switch (node2.Name) { case "Description": item.Description = node2.InnerText.Trim(); break; case "SupportedChips": foreach (XmlNode node3 in node2.ChildNodes) { if (((node3.Name == "Chip") && (node3.Attributes.GetNamedItem("chipType") != null)) && (node3.Attributes.GetNamedItem("chipRev") != null)) { item.SupportedChips.Add(new Chip(node3.Attributes.GetNamedItem("chipType").Value, node3.Attributes.GetNamedItem("chipRev").Value)); } } break; case "Restrictions": foreach (XmlNode node4 in node2.ChildNodes) { if ((node4.Name == "Restriction") && (node4.Attributes.GetNamedItem("operation") != null)) { Restriction restriction = new Restriction { Operation = node4.Attributes.GetNamedItem("operation").Value }; if (node4.Attributes.GetNamedItem("targetName") != null) { restriction.TargetName = node4.Attributes.GetNamedItem("targetName").Value; } if (node4.Attributes.GetNamedItem("value") != null) { restriction.Value = node4.Attributes.GetNamedItem("value").Value; } item.Restrictions.Add(restriction); } } break; case "PacketHandlerConfiguration": foreach (XmlNode node5 in node2.ChildNodes) { string name = node5.Name; if (name != null) { if (!(name == "RequiresVariablePacketConfiguration")) { if (name == "RequiresPacketContent") { goto Label_048D; } if (name == "RequiresMatchConfiguration") { goto Label_04CF; } } else if ((node5.Attributes.GetNamedItem("value") != null) && bool.TryParse(node5.Attributes.GetNamedItem("value").Value, out result)) { item.PacketHandlerConfig.RequiresVariablePacketConfiguration = result; } } continue; Label_048D: if ((node5.Attributes.GetNamedItem("value") != null) && bool.TryParse(node5.Attributes.GetNamedItem("value").Value, out result)) { item.PacketHandlerConfig.RequiresPacketContent = result; } continue; Label_04CF: if ((node5.Attributes.GetNamedItem("value") != null) && bool.TryParse(node5.Attributes.GetNamedItem("value").Value, out result)) { item.PacketHandlerConfig.RequiresMatchConfiguration = result; } } break; case "ExtraCommands": foreach (XmlNode node6 in node2.ChildNodes) { if (((node6.Name == "Command") && (node6.Attributes.GetNamedItem("name") != null)) && ((node6.Attributes.GetNamedItem("propName") != null) && (node6.Attributes.GetNamedItem("propValue") != null))) { byte num = 0; byte num2 = 0; if (((node6.Attributes.GetNamedItem("condition") != null) && (node6.Attributes.GetNamedItem("altPropValue") != null)) && (byte.TryParse(node6.Attributes.GetNamedItem("propValue").Value, NumberStyles.HexNumber, (IFormatProvider) null, out num) && byte.TryParse(node6.Attributes.GetNamedItem("altPropValue").Value, NumberStyles.HexNumber, (IFormatProvider) null, out num2))) { item.ExtraCommands.Add(new ExtraCommand(node6.Attributes.GetNamedItem("name").Value, node6.Attributes.GetNamedItem("propName").Value, num, node6.Attributes.GetNamedItem("condition").Value, num2)); } else if (byte.TryParse(node6.Attributes.GetNamedItem("propValue").Value, NumberStyles.HexNumber, (IFormatProvider) null, out num)) { item.ExtraCommands.Add(new ExtraCommand(node6.Attributes.GetNamedItem("name").Value, node6.Attributes.GetNamedItem("propName").Value, num)); } } } break; case "SaveBatch": if ((node2.Attributes.GetNamedItem("enabled") != null) && bool.TryParse(node2.Attributes.GetNamedItem("enabled").Value, out result)) { item.SaveBatch.Enabled = result; if ((node2.Attributes.GetNamedItem("addFifoLoadCommand") != null) && bool.TryParse(node2.Attributes.GetNamedItem("addFifoLoadCommand").Value, out result)) { item.SaveBatch.AddFifoLoadCommand = result; } } break; case "ConfigureAndEvaluate": if ((node2.Attributes.GetNamedItem("enabled") != null) && bool.TryParse(node2.Attributes.GetNamedItem("enabled").Value, out result)) { item.ConfigureAndEvaluate.Enabled = result; } foreach (XmlNode node7 in node2.ChildNodes) { string str3; if (((str3 = node7.Name) != null) && (str3 == "InteractionOptions")) { XmlNodeList childNodes = node7.ChildNodes; List<string> list4 = new List<string>(); foreach (XmlNode node8 in childNodes) { if (node8.Name == "Option") { list4.Add(node8.InnerText.Trim()); } } item.ConfigureAndEvaluate.InteractionOptions = list4.ToArray(); } } break; case "DownloadProject": if ((node2.Attributes.GetNamedItem("enabled") != null) && bool.TryParse(node2.Attributes.GetNamedItem("enabled").Value, out result)) { item.DownloadProject.Enabled = result; if (item.DownloadProject.Enabled) { foreach (XmlNode node9 in node2.ChildNodes) { string str4; if (((str4 = node9.Name) != null) && (str4 == "Firmware")) { if (node9.Attributes.GetNamedItem("name") != null) { item.DownloadProject.Name = node9.Attributes.GetNamedItem("name").Value; } if (node9.Attributes.GetNamedItem("dataAddress") != null) { item.DownloadProject.DataStartAddress = ushort.Parse(node9.Attributes.GetNamedItem("dataAddress").Value.Substring(2), NumberStyles.HexNumber); } } } } } break; case "GenerateSource": if ((node2.Attributes.GetNamedItem("enabled") != null) && bool.TryParse(node2.Attributes.GetNamedItem("enabled").Value, out result)) { item.GenerateSource.Enabled = result; } foreach (XmlNode node10 in node2.ChildNodes) { string str5 = node10.Name; if (str5 != null) { if (!(str5 == "DirectoryName")) { if (str5 == "HeaderLocation") { goto Label_0AAF; } if (str5 == "HeaderTemplateName") { goto Label_0AC9; } } else { item.GenerateSource.DirectoryName = node10.InnerText.Trim(); } } continue; Label_0AAF: item.GenerateSource.HeaderLocation = node10.InnerText.Trim(); continue; Label_0AC9: item.GenerateSource.HeaderTemplateName = node10.InnerText.Trim(); } break; } } list.Add(item); } return list; } catch (Exception exception) { _log.Error("Project descreptor parsing problem: " + exception.Message); return null; } }
private void lstSelectProject_SelectedIndexChanged(object sender, EventArgs e) { if ((lstSelectProject.SelectedItems.Count > 0) && ((_selectedProject = (PRO2ProjectDescriptor) lstSelectProject.SelectedItems[0].Tag) != null)) { setDescriptionText(); reEnableControls(); initProjectSpecificRestrictions(); initChipSepecificRestrictions(); initLicenseSpecificRestrictions(); btnSaveBatch.Enabled = btnSaveBatchHelp.Enabled = _selectedProject.SaveBatch.Enabled; btnConfigureAndEvaluate.Enabled = btnConfigureAndEvaluateHelp.Enabled = _selectedProject.ConfigureAndEvaluate.Enabled; btnDownloadProject.Enabled = btnDownloadProjectHelp.Enabled = _selectedProject.DownloadProject.Enabled; btnGenerateSource.Enabled = btnGenerateSourceHelp.Enabled = _selectedProject.GenerateSource.Enabled; if (_evaluationWindow != null) { _evaluationWindow.Close(); } } }