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 /main/src/addins/MonoDevelop.Packaging | |
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.
Diffstat (limited to 'main/src/addins/MonoDevelop.Packaging')
-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); |