diff options
author | Sandy Armstrong <sandy@xamarin.com> | 2019-01-25 18:05:34 +0300 |
---|---|---|
committer | Sandy Armstrong <sandy@xamarin.com> | 2019-01-25 18:24:42 +0300 |
commit | 2325b5d4c5f79fcbe37acf617eb87e23c56a1684 (patch) | |
tree | f9c8fd4da08b7bbac6b26ef1602fd35ec7ac4bd9 /main/src/addins/MonoDevelop.Packaging | |
parent | 4a92358ddf393435c36fb742aeecda2e45d9c238 (diff) | |
parent | 2e188887d8e5ee2901fd803d4374f0c0fb8ad69a (diff) |
Merge remote-tracking branch 'origin/master' into pr-sandy-md-master
Diffstat (limited to 'main/src/addins/MonoDevelop.Packaging')
3 files changed, 117 insertions, 65 deletions
diff --git a/main/src/addins/MonoDevelop.Packaging/Gui/MonoDevelop.Packaging.Gui.GtkNuGetPackageMetadataOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Packaging/Gui/MonoDevelop.Packaging.Gui.GtkNuGetPackageMetadataOptionsPanelWidget.cs index 49a3bd30d5..7af75f47b5 100644 --- a/main/src/addins/MonoDevelop.Packaging/Gui/MonoDevelop.Packaging.Gui.GtkNuGetPackageMetadataOptionsPanelWidget.cs +++ b/main/src/addins/MonoDevelop.Packaging/Gui/MonoDevelop.Packaging.Gui.GtkNuGetPackageMetadataOptionsPanelWidget.cs @@ -48,7 +48,7 @@ namespace MonoDevelop.Packaging.Gui private global::Gtk.HBox packageLanguageHBox; - private global::Gtk.ComboBoxEntry packageLanguageComboBox; + private global::Gtk.ComboBox packageLanguageComboBox; private global::Gtk.Label packageLanguageLabel; @@ -321,7 +321,7 @@ namespace MonoDevelop.Packaging.Gui this.packageLanguageHBox.Name = "packageLanguageHBox"; this.packageLanguageHBox.Spacing = 6; // Container child packageLanguageHBox.Gtk.Box+BoxChild - this.packageLanguageComboBox = global::Gtk.ComboBoxEntry.NewText(); + this.packageLanguageComboBox = global::Gtk.ComboBox.NewText(); this.packageLanguageComboBox.Name = "packageLanguageComboBox"; this.packageLanguageHBox.Add(this.packageLanguageComboBox); global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.packageLanguageHBox[this.packageLanguageComboBox])); 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 3f6f091de5..8e2ab47e58 100644 --- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs +++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkNuGetPackageMetadataOptionsPanelWidget.cs @@ -42,6 +42,8 @@ namespace MonoDevelop.Packaging.Gui NuGetPackageMetadata metadata; bool projectOriginallyHadMetadata; bool hasPackageId; + List<CultureInfo> languages; + ListStore languagesListStore; public GtkNuGetPackageMetadataOptionsPanelWidget () { @@ -58,85 +60,68 @@ namespace MonoDevelop.Packaging.Gui packageReleaseNotesPaddingLabel.Accessible.Role = Atk.Role.Filler; packageIdTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.ID", - GettextCatalog.GetString ("ID"), - GettextCatalog.GetString ("Enter the ID of the NuGet package")); - packageIdTextBox.SetAccessibilityLabelRelationship (packageIdLabel); + packageIdLabel, + GettextCatalog.GetString ("Enter the ID of the NuGet package")); packageVersionTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Version", - GettextCatalog.GetString ("Version"), - GettextCatalog.GetString ("Enter the version of the NuGet package")); - packageVersionTextBox.SetAccessibilityLabelRelationship (packageVersionLabel); + packageVersionLabel, + GettextCatalog.GetString ("Enter the version of the NuGet package")); packageAuthorsTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Authors", - GettextCatalog.GetString ("Authors"), - GettextCatalog.GetString ("Enter the authors of the NuGet package")); - packageAuthorsTextBox.SetAccessibilityLabelRelationship (packageAuthorsLabel); + packageAuthorsLabel, + GettextCatalog.GetString ("Enter the authors of the NuGet package")); packageDescriptionTextView.SetCommonAccessibilityAttributes ("NuGetMetadata.Description", - GettextCatalog.GetString ("Description"), - GettextCatalog.GetString ("Enter the description of the NuGet package")); - packageDescriptionTextView.SetAccessibilityLabelRelationship (packageDescriptionLabel); + packageDescriptionLabel, + GettextCatalog.GetString ("Enter the description of the NuGet package")); packageOwnersTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Owners", - GettextCatalog.GetString ("Owners"), - GettextCatalog.GetString ("Enter the owners of the NuGet package")); - packageOwnersTextBox.SetAccessibilityLabelRelationship (packageOwnersLabel); + packageOwnersLabel, + GettextCatalog.GetString ("Enter the owners of the NuGet package")); packageCopyrightTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Copyright", - GettextCatalog.GetString ("Copyright"), - GettextCatalog.GetString ("Enter the copyright statement for the NuGet package")); - packageCopyrightTextBox.SetAccessibilityLabelRelationship (packageCopyrightLabel); + packageCopyrightLabel, + GettextCatalog.GetString ("Enter the copyright statement for the NuGet package")); packageTitleTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Title", - GettextCatalog.GetString ("Title"), - GettextCatalog.GetString ("Enter the title of the NuGet package")); - packageTitleTextBox.SetAccessibilityLabelRelationship (packageTitleLabel); + packageTitleLabel, + GettextCatalog.GetString ("Enter the title of the NuGet package")); packageSummaryTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Summary", - GettextCatalog.GetString ("Summary"), - GettextCatalog.GetString ("Enter the summary for the NuGet package")); - packageSummaryTextBox.SetAccessibilityLabelRelationship (packageSummaryLabel); + packageSummaryLabel, + GettextCatalog.GetString ("Enter the summary for the NuGet package")); packageProjectUrlTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.URL", - GettextCatalog.GetString ("Project URL"), - GettextCatalog.GetString ("Enter the project URL for the NuGet package")); - packageProjectUrlTextBox.SetAccessibilityLabelRelationship (packageProjectUrlLabel); + packageProjectUrlLabel, + GettextCatalog.GetString ("Enter the project URL for the NuGet package")); packageIconUrlTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Icon", - GettextCatalog.GetString ("Icon URL"), - GettextCatalog.GetString ("Enter the URL for the NuGet package's icon")); - packageIconUrlTextBox.SetAccessibilityLabelRelationship (packageIconUrlLabel); + packageIconUrlLabel, + GettextCatalog.GetString ("Enter the URL for the NuGet package's icon")); packageLicenseUrlTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.licence", - GettextCatalog.GetString ("License URL"), - GettextCatalog.GetString ("Enter the URL for the NuGet package's license")); - packageLicenseUrlTextBox.SetAccessibilityLabelRelationship (packageLicenseUrlLabel); + packageLicenseUrlLabel, + GettextCatalog.GetString ("Enter the URL for the NuGet package's license")); packageRequireLicenseAcceptanceCheckBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Acceptance", - GettextCatalog.GetString ("Require License Acceptance"), - GettextCatalog.GetString ("Check to require the user to accept the NuGet package's license")); - packageRequireLicenseAcceptanceCheckBox.SetAccessibilityLabelRelationship (packageRequireLicenseAcceptanceLabel); + packageRequireLicenseAcceptanceLabel, + GettextCatalog.GetString ("Check to require the user to accept the NuGet package's license")); packageDevelopmentDependencyCheckBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Development", - GettextCatalog.GetString ("Development Dependency"), - GettextCatalog.GetString ("Check to indicate that this is a development dependency")); - packageDevelopmentDependencyCheckBox.SetAccessibilityLabelRelationship (packageDevelopmentDependencyLabel); + packageDevelopmentDependencyLabel, + GettextCatalog.GetString ("Check to indicate that this is a development dependency")); packageTagsTextBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Tags", - GettextCatalog.GetString ("Tags"), - GettextCatalog.GetString ("Enter the tags for this NuGet package")); - packageTagsTextBox.SetAccessibilityLabelRelationship (packageTagsLabel); + packageTagsLabel, + GettextCatalog.GetString ("Enter the tags for this NuGet package")); packageLanguageComboBox.SetCommonAccessibilityAttributes ("NuGetMetadata.Language", - GettextCatalog.GetString ("Language"), - GettextCatalog.GetString ("Select the language for this NuGet package")); - packageLanguageComboBox.SetAccessibilityLabelRelationship (packageLanguageLabel); + packageLanguageLabel, + GettextCatalog.GetString ("Select the language for this NuGet package")); packageReleaseNotesTextView.SetCommonAccessibilityAttributes ("NuGetMetadata.ReleaseNotes", - GettextCatalog.GetString ("Release Notes"), - GettextCatalog.GetString ("Enter the release notes for this NuGet package")); - packageReleaseNotesTextView.SetAccessibilityLabelRelationship (packageReleaseNotesLabel); - + packageReleaseNotesLabel, + GettextCatalog.GetString ("Enter the release notes for this NuGet package")); } internal static System.Action<bool> OnProjectHasMetadataChanged; @@ -168,7 +153,7 @@ namespace MonoDevelop.Packaging.Gui packageCopyrightTextBox.Text = GetTextBoxText (metadata.Copyright); packageDevelopmentDependencyCheckBox.Active = metadata.DevelopmentDependency; packageIconUrlTextBox.Text = GetTextBoxText (metadata.IconUrl); - packageLanguageComboBox.Entry.Text = GetTextBoxText (metadata.Language); + LoadLanguage (metadata.Language); packageLicenseUrlTextBox.Text = GetTextBoxText (metadata.LicenseUrl); packageOwnersTextBox.Text = GetTextBoxText (metadata.Owners); packageProjectUrlTextBox.Text = GetTextBoxText (metadata.ProjectUrl); @@ -184,6 +169,35 @@ namespace MonoDevelop.Packaging.Gui return text ?? string.Empty; } + void LoadLanguage (string language) + { + if (string.IsNullOrEmpty (language)) { + packageLanguageComboBox.Active = 0; + return; + } + + int index = GetLanguageIndex (language); + if (index >= 0) { + packageLanguageComboBox.Active = index + 1; + return; + } + + // Language does not match so we need to add it to the combo box. + TreeIter iter = languagesListStore.AppendValues (language); + 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 (); @@ -220,7 +234,7 @@ namespace MonoDevelop.Packaging.Gui metadata.Copyright = packageCopyrightTextBox.Text; metadata.DevelopmentDependency = packageDevelopmentDependencyCheckBox.Active; metadata.IconUrl = packageIconUrlTextBox.Text; - metadata.Language = packageLanguageComboBox.Entry.Text; + metadata.Language = GetSelectedLanguage (); metadata.LicenseUrl = packageLicenseUrlTextBox.Text; metadata.Owners = packageOwnersTextBox.Text; metadata.ProjectUrl = packageProjectUrlTextBox.Text; @@ -231,20 +245,49 @@ namespace MonoDevelop.Packaging.Gui metadata.Title = packageTitleTextBox.Text; } + string GetSelectedLanguage () + { + if (packageLanguageComboBox.Active == 0) { + // '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; + } + void PopulateLanguages () { - var languagesListStore = new ListStore (typeof (string)); + languagesListStore = new ListStore (typeof (string)); packageLanguageComboBox.Model = languagesListStore; - List<string> languages = CultureInfo.GetCultures(CultureTypes.AllCultures) - .Select (c => c.Name) - .ToList (); + languages = new List<CultureInfo> (); - languages.Sort (); + foreach (CultureInfo culture in CultureInfo.GetCultures (CultureTypes.AllCultures)) { + if (!string.IsNullOrEmpty (culture.Name)) { + languages.Add (culture); + } + } - foreach (string language in languages) { - languagesListStore.AppendValues (language); + languages.Sort (CompareLanguages); + + languagesListStore.AppendValues (GettextCatalog.GetString ("None")); + + 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 () diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkProjectNuGetBuildOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkProjectNuGetBuildOptionsPanelWidget.cs index 3645bd12ac..38468f2f14 100644 --- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkProjectNuGetBuildOptionsPanelWidget.cs +++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging.Gui/GtkProjectNuGetBuildOptionsPanelWidget.cs @@ -44,9 +44,13 @@ namespace MonoDevelop.Packaging.Gui SetupAccessibility (); } - void SetupAccessibility () + void SetupAccessibility (bool includeMissingMetadataLabelText = false) { - packOnBuildButton.SetCommonAccessibilityAttributes ("NugetBuildOptionsPanel.PackOnBuild", "", + string accessibilityLabel = packOnBuildButton.Label; + if (includeMissingMetadataLabelText) { + accessibilityLabel += " " + missingMetadataLabel.Text; + } + packOnBuildButton.SetCommonAccessibilityAttributes ("NugetBuildOptionsPanel.PackOnBuild", accessibilityLabel, GettextCatalog.GetString ("Check to create a NuGet package when building")); } @@ -73,10 +77,15 @@ namespace MonoDevelop.Packaging.Gui void UpdateMissingMetadataLabelVisibility () { - if (packOnBuildButton.Active) { - missingMetadataLabel.Visible = !ProjectHasMetadata; + bool visible = packOnBuildButton.Active && !ProjectHasMetadata; + missingMetadataLabel.Visible = visible; + + // Refresh accessibility information so missing metadata label text is available to Voice Over + // when the check box is selected. + if (visible) { + SetupAccessibility (includeMissingMetadataLabelText: true); } else { - missingMetadataLabel.Visible = false; + SetupAccessibility (); } } |