diff options
author | Matt Ward <matt.ward@microsoft.com> | 2019-01-16 18:51:47 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@microsoft.com> | 2019-01-16 19:09:02 +0300 |
commit | 6696164cbad523d46dab882b7ea51657e983c562 (patch) | |
tree | e8609a6d8a880d10b8afd27b9b67a232bb5f5154 | |
parent | 36e3b1d753c46f700174adce3e479c2d437d2f24 (diff) |
[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.
-rw-r--r-- | main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs | 44 |
1 files changed, 35 insertions, 9 deletions
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<string> languages; + List<CultureInfo> 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<CultureInfo> (); + + 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); |