/// <summary> /// Creates HTML files foreach formset including all their forms /// </summary> /// <param name="Language">Primary language</param> /// <param name="bShowDetails">Printing details into HTML</param> private void CreateHTMLFiles(string Language, bool bShowDetails) { Cursor previousCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; CreateLogEntryMain(LogSeverity.INFO, "Creating HTML output..."); foreach (TreeNode node_files in tv_tree.Nodes) { List <HiiPackageBase> Packages = new List <HiiPackageBase>(); // Collect all HII packages of the files that are building a logical package foreach (TreeNode node_pkg in node_files.Nodes) { foreach (HiiPackageBase hpk in (node_pkg.Tag as HPKfile).Childs) { Packages.Add(hpk); } } ParsedHpkStringContainer HpkStrings = new ParsedHpkStringContainer(Packages, Language); HtmlBuilder HtmlBuilder = new HtmlBuilder(Packages, HpkStrings, bShowDetails, printCompactHtmlToolStripMenuItem.Checked); } // TODO! //if (0 == tv_logical.Nodes[0].Nodes.Count) // CreateLogEntryMain(LogSeverity.ERROR, "Creating HTML output failed!\nNo parsed package available"); //else CreateLogEntryMain(LogSeverity.SUCCESS, "Creating HTML output completed!"); Cursor.Current = previousCursor; }
/// <summary> /// Parses a bunch of files which are referring the same "package" using a given default language /// </summary> /// <param name="Language">Primary language</param> private void ParseAllFiles(string Language) { Cursor previousCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; CreateLogEntryMain(LogSeverity.INFO, "Parsing packages..."); tv_logical.Parent.Text = "Logical Tree (\"" + Language + "\")"; tv_logical.Nodes.Clear(); foreach (TreeNode node_files in tv_tree.Nodes) { List <HiiPackageBase> Packages = new List <HiiPackageBase>(); TreeNode PkgNodeLogical = tv_logical.Nodes.Add("Package"); PkgNodeLogical.Tag = EmptyDetails; // Collect all HII packages of the files that are building a logical package foreach (TreeNode node_pkg in node_files.Nodes) { foreach (HiiPackageBase hpk in (node_pkg.Tag as HPKfile).Childs) { Packages.Add(hpk); } } ParsedHpkStringContainer HpkStrings = new ParsedHpkStringContainer(Packages, Language); ParsedHpkContainer ParsedHpkContainer = new ParsedHpkContainer(Packages, HpkStrings); // Since HPKs interact with each other, build logical tree after loading is completely done foreach (ParsedHpkNode pkg in ParsedHpkContainer.HpkPackages) { CreateLogEntryMain(LogSeverity.INFO, "Parsing \"" + pkg.Name + "\" ..."); tv_logical.BeginUpdate(); TreeNode root = PkgNodeLogical.Nodes.Add(pkg.Name); root.Tag = pkg.Origin; ShowAtLogicalTree(pkg, root); root.Expand(); tv_logical.EndUpdate(); } PkgNodeLogical.Expand(); } if (0 == tv_logical.Nodes.Count) { TreeNode EmptyTree = tv_logical.Nodes.Add("No parsed packages available"); EmptyTree.Tag = EmptyDetails; } CreateLogEntryMain(LogSeverity.SUCCESS, "Parsing packages completed!"); Cursor.Current = previousCursor; }
/// <summary> /// Parses a set of packages /// </summary> /// <param name="Packages">List of packages that will be parsed</param> /// <param name="HpkStrings">Parsed HPK strings used for translations</param> public ParsedHpkContainer(List <HiiPackageBase> Packages, ParsedHpkStringContainer HpkStrings) { this.HpkStrings = HpkStrings; HpkPackages = new List <ParsedHpkNode>(); // Copy HPK strings to HPK packages to be shown in logical view, too.. foreach (ParsedHpkNode pkg in HpkStrings.HpkPackages) { HpkPackages.Add(pkg); } foreach (HiiPackageBase pkg in Packages) { try { ParsedHpkNode root = new ParsedHpkNode(pkg, pkg.Name); switch (pkg.PackageType) { case EFI_HII_PACKAGE_e.EFI_HII_PACKAGE_FORMS: root.Name = "Form Package"; HpkPackages.Add(root); foreach (HPKElement child in root.Origin.Childs) { ParsePackageIfr(child, root); } break; case EFI_HII_PACKAGE_e.EFI_HII_PACKAGE_STRINGS: break; // Already done default: CreateLogEntryParser(LogSeverity.UNIMPLEMENTED, root.Name); break; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); CreateLogEntryParser(LogSeverity.ERROR, "Parsing failed!" + Environment.NewLine + ex.ToString()); } } }