} // Clone public static LicensedProgram MorphToProgram(this LicensedLibrary library, bool isGuiApp) { return(new LicensedProgram { Name = library.Name, LicenseId = library.LicenseId, Copyright = library.Copyright, Authors = library.Authors, Remarks = library.Remarks, TermsConditions = library.TermsConditions, Product = library.Product, Assembly = library.Assembly, IsGuiApp = isGuiApp }); } // MorphToProgram LicensedLibrary
} // AddLicensesNodes public TreeNode LicensedItemToNode(LicensedItem item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var image = item switch { LicensedLibrary _ => _images.LicensedLibrary, LicensedInstaller _ => _images.LicensedInstaller, LicensedProgram program => program.IsGuiApp ? _images.LicensedProgramGui : _images.LicensedProgramCli, _ => _images.LicensedUnknown }; var node = new TreeNode(item.Name ?? Resources.NoName, image, image) { Tag = item }; if (!item.TermsConditionsSpecified) { return(node); } image = _images.TermsAndConditionsNode; var terms = new TreeNode(Resources.TermsAndConditionsNode, image, image) { Tag = item.TermsConditions }; foreach (var term in item.TermsConditions) { string name; try { if (string.IsNullOrEmpty(term.Language)) { name = "(Default)"; } else { var culture = CultureInfo.GetCultureInfo(term.Language); name = $"{culture.DisplayName} ({culture.NativeName})"; } // if-else } catch (CultureNotFoundException) { name = $"({term.Language})"; } // try-catch image = _images.TermsAndConditions; var termNode = new TreeNode(name, image, image) { Tag = term }; terms.Nodes.Add(termNode); } // foreach term node.Nodes.Add(terms); return(node); } // LicensedItemToNode