From 6696164cbad523d46dab882b7ea51657e983c562 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 16 Jan 2019 15:51:47 +0000 Subject: [Packaging] Show language display name in project options for metadata In project options - NuGet Package - Metadata the language display name is shown in the language combo box. Previously the language code (e.g. 'en-GB') was displayed. The display name is more user friendly and also matches the behaviour of Visual Studio on Windows when it shows package metadata for .NET Standard projects. --- .../GtkNuGetPackageMetadataOptionsPanelWidget.cs | 44 +++++++++++++++++----- 1 file changed, 35 insertions(+), 9 deletions(-) (limited to 'main/src/addins/MonoDevelop.Packaging') diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs index eec702edb8..64d53a6214 100644 --- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs +++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs @@ -42,7 +42,7 @@ namespace MonoDevelop.Packaging.Gui NuGetPackageMetadata metadata; bool projectOriginallyHadMetadata; bool hasPackageId; - List languages; + List languages; ListStore languagesListStore; public GtkNuGetPackageMetadataOptionsPanelWidget () @@ -193,7 +193,7 @@ namespace MonoDevelop.Packaging.Gui return; } - int index = languages.IndexOf (language); + int index = GetLanguageIndex (language); if (index >= 0) { packageLanguageComboBox.Active = index + 1; return; @@ -204,6 +204,17 @@ namespace MonoDevelop.Packaging.Gui packageLanguageComboBox.SetActiveIter (iter); } + int GetLanguageIndex (string language) + { + for (int i = 0; i < languages.Count; ++i) { + CultureInfo culture = languages [i]; + if (string.Equals (culture.Name, language, StringComparison.OrdinalIgnoreCase)) { + return i; + } + } + return -1; + } + internal void Save (PackagingProject project) { UpdateMetadata (); @@ -257,6 +268,13 @@ namespace MonoDevelop.Packaging.Gui // 'None' selected. return string.Empty; } + + int languageIndex = packageLanguageComboBox.Active - 1; + if (languageIndex < languages.Count) { + return languages [languageIndex].Name; + } + + // No match for language so just return the combo box text. return packageLanguageComboBox.ActiveText; } @@ -265,22 +283,30 @@ namespace MonoDevelop.Packaging.Gui languagesListStore = new ListStore (typeof (string)); packageLanguageComboBox.Model = languagesListStore; - languages = CultureInfo.GetCultures(CultureTypes.AllCultures) - .Where (c => !string.IsNullOrEmpty (c.Name)) - .Select (c => c.Name) - .ToList (); + languages = new List (); + + foreach (CultureInfo culture in CultureInfo.GetCultures (CultureTypes.AllCultures)) { + if (!string.IsNullOrEmpty (culture.Name)) { + languages.Add (culture); + } + } - languages.Sort (); + languages.Sort (CompareLanguages); languagesListStore.AppendValues (GettextCatalog.GetString ("None")); - foreach (string language in languages) { - languagesListStore.AppendValues (language); + foreach (CultureInfo language in languages) { + languagesListStore.AppendValues (language.DisplayName); } packageLanguageComboBox.Active = 0; } + static int CompareLanguages (CultureInfo x, CultureInfo y) + { + return string.Compare (x.DisplayName, y.DisplayName, StringComparison.CurrentCulture); + } + bool ProjectHasMetadata () { return !string.IsNullOrEmpty (metadata.Id); -- cgit v1.2.3