diff options
author | Matt Ward <matt.ward@xamarin.com> | 2015-12-15 18:11:44 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2015-12-15 18:49:50 +0300 |
commit | 71e44fd02e331563f1b846e0e48ec17bac9aa3aa (patch) | |
tree | 5b8d30ad922182d7617027f46992937d69523ebc /main | |
parent | 16bbf3a32daabc9d4ddd1f7a6447c0630eec5d06 (diff) |
[Ide] Show active configuration in project options dialog.
Fixed bug #11022 - Project Options should mark active configuration
in configuration editing combo
https://bugzilla.xamarin.com/show_bug.cgi?id=11022
The Configuration drop down box in the Project Options dialog now
shows which configuration is currently active in the IDE by appending
(Active) text to the combo box. This makes it clearer that changing
the editing configuration would change the active configuration.
Diffstat (limited to 'main')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs index 070a3ce134..a199f98283 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs @@ -38,6 +38,8 @@ namespace MonoDevelop.Ide.Gui.Dialogs { MultiConfigItemOptionsDialog dialog; Gtk.ComboBox configCombo; + Gtk.ListStore configListStore; + const int configListStoreConfigNameColumn = 1; Gtk.ComboBox platformCombo; List<ItemConfiguration> currentConfigs = new List<ItemConfiguration> (); List<string> platforms = new List<string> (); @@ -100,7 +102,11 @@ namespace MonoDevelop.Ide.Gui.Dialogs Gtk.HBox combosBox = new Gtk.HBox (false, 6); cbox.PackStart (combosBox, false, false, 0); combosBox.PackStart (new Gtk.Label (GettextCatalog.GetString ("Configuration:")), false, false, 0); - configCombo = Gtk.ComboBox.NewText (); + configListStore = new Gtk.ListStore (typeof(string), typeof(string)); + configCombo = new Gtk.ComboBox (configListStore); + var cell = new Gtk.CellRendererText (); + configCombo.PackStart (cell, true); + configCombo.AddAttribute (cell, "text", 0); combosBox.PackStart (configCombo, false, false, 0); combosBox.PackStart (new Gtk.Label (GettextCatalog.GetString ("Platform:")), false, false, 0); platformCombo = Gtk.ComboBox.NewText (); @@ -150,19 +156,34 @@ namespace MonoDevelop.Ide.Gui.Dialogs void FillConfigurations () { loading = true; - ((Gtk.ListStore)configCombo.Model).Clear (); + configListStore.Clear (); if (allowMixedConfigurations) - configCombo.AppendText (GettextCatalog.GetString ("All Configurations")); - + AppendComboConfig (GettextCatalog.GetString ("All Configurations")); + HashSet<string> configs = new HashSet<string> (); foreach (ItemConfiguration config in FilterConfigurations (dialog.ConfigurationData.Configurations)) { if (configs.Add (config.Name)) - configCombo.AppendText (config.Name); + AppendComboConfig (config.Name); } loading = false; } + + void AppendComboConfig (string configName) + { + bool isActive = IdeApp.Workspace.ActiveConfigurationId == configName; + AppendComboConfig (configName, isActive); + } + + void AppendComboConfig (string configName, bool isActive = false) + { + string displayName = configName; + if (isActive) + displayName = configName + " " + GettextCatalog.GetString ("(Active)"); + + configListStore.AppendValues (displayName, configName); + } protected virtual bool ConfigurationsAreEqual (IEnumerable<ItemConfiguration> configs) { @@ -183,7 +204,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs string configName = null; if (!allowMixedConfigurations || configCombo.Active > 0) - configName = configCombo.ActiveText; + configName = GetSelectedComboConfig (); foreach (ItemConfiguration config in FilterConfigurations (dialog.ConfigurationData.Configurations)) { if ((configName == null || config.Name == configName) && !platforms.Contains (config.Platform)) { @@ -193,6 +214,15 @@ namespace MonoDevelop.Ide.Gui.Dialogs } loading = false; } + + string GetSelectedComboConfig () + { + Gtk.TreeIter iter; + if (configCombo.GetActiveIter (out iter)) { + return (string)configCombo.Model.GetValue (iter, configListStoreConfigNameColumn); + } + return null; + } void OnConfigChanged (object s, EventArgs a) { @@ -229,7 +259,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs currentConfigs.Clear (); - string configName = dialog.CurrentConfig = configCombo.ActiveText; + string configName = dialog.CurrentConfig = GetSelectedComboConfig (); if (configName == GettextCatalog.GetString ("All Configurations")) configName = null; @@ -290,7 +320,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs Gtk.TreeIter it; if (configCombo.Model.GetIterFirst (out it)) { do { - if (config == (string) configCombo.Model.GetValue (it, 0)) { + if (config == (string) configCombo.Model.GetValue (it, configListStoreConfigNameColumn)) { configCombo.SetActiveIter (it); break; } |