37
38
internal class ConfigurationComboBox: ToolbarComboBox
39
ConfigurationEventHandler onActiveConfigurationChanged;
40
ConfigurationEventHandler onConfigurationsChanged;
42
42
public ConfigurationComboBox ()
44
44
Combo.Changed += new EventHandler (OnChanged);
46
onActiveConfigurationChanged = (ConfigurationEventHandler) DispatchService.GuiDispatch (new ConfigurationEventHandler (OnActiveConfigurationChanged));
47
onConfigurationsChanged = (ConfigurationEventHandler) DispatchService.GuiDispatch (new ConfigurationEventHandler (OnConfigurationsChanged));
49
IdeApp.ProjectOperations.CombineOpened += (CombineEventHandler) DispatchService.GuiDispatch (new CombineEventHandler (OpenCombine));
50
IdeApp.ProjectOperations.CombineClosed += (CombineEventHandler) DispatchService.GuiDispatch (new CombineEventHandler (CloseCombine));
45
IdeApp.Workspace.ConfigurationsChanged += OnConfigurationsChanged;
46
IdeApp.Workspace.ActiveConfigurationChanged += OnActiveConfigurationChanged;
59
55
Combo.Sensitive = false;
62
void RefreshCombo (Combine combine)
64
60
((Gtk.ListStore)Combo.Model).Clear ();
65
Combo.Sensitive = true;
67
for (int n=0; n < combine.Configurations.Count; n++) {
68
IConfiguration c = combine.Configurations [n];
69
Combo.AppendText (c.Name);
70
if (combine.ActiveConfiguration == c)
63
ReadOnlyCollection<string> configs = IdeApp.Workspace.GetConfigurations ();
64
foreach (string conf in configs) {
65
Combo.AppendText (conf);
66
if (conf == IdeApp.Workspace.ActiveConfiguration)
73
Combo.Active = active;
70
Combo.Sensitive = n > 0;
72
Combo.Active = active;
73
else if (configs.Count > 0)
74
IdeApp.Workspace.ActiveConfiguration = configs [0];
77
void OpenCombine (object sender, CombineEventArgs e)
78
void OnConfigurationsChanged (object sender, EventArgs e)
79
RefreshCombo (e.Combine);
80
e.Combine.ActiveConfigurationChanged += onActiveConfigurationChanged;
81
e.Combine.ConfigurationAdded += onConfigurationsChanged;
82
e.Combine.ConfigurationRemoved += onConfigurationsChanged;
83
void OnActiveConfigurationChanged (object sender, EventArgs e)
85
void CloseCombine (object sender, CombineEventArgs e)
88
e.Combine.ActiveConfigurationChanged -= onActiveConfigurationChanged;
89
e.Combine.ConfigurationAdded -= onConfigurationsChanged;
90
e.Combine.ConfigurationRemoved -= onConfigurationsChanged;
93
void OnConfigurationsChanged (object sender, ConfigurationEventArgs e)
95
RefreshCombo (IdeApp.ProjectOperations.CurrentOpenCombine);
98
void OnActiveConfigurationChanged (object sender, ConfigurationEventArgs e)
100
Combine combine = (Combine) e.CombineEntry;
101
for (int n=0; n < combine.Configurations.Count; n++) {
102
IConfiguration c = combine.Configurations [n];
103
if (combine.ActiveConfiguration == c) {
88
string knownConfig = null;
91
if (Combo.Model.GetIterFirst (out it)) {
93
string cs = (string) Combo.Model.GetValue (it, 0);
94
if (knownConfig == null)
96
if (IdeApp.Workspace.ActiveConfiguration == cs) {
98
Combo.SetActiveIter (it);
103
while (Combo.Model.IterNext (ref it));
106
// Configuration not found. Set one that is known.
107
IdeApp.Workspace.ActiveConfiguration = knownConfig;
110
110
protected void OnChanged (object sender, EventArgs args)
112
if (IdeApp.ProjectOperations.CurrentOpenCombine != null) {
114
if (IdeApp.Workspace.IsOpen) {
113
115
Gtk.TreeIter iter;
114
116
if (Combo.GetActiveIter (out iter)) {
115
117
string cs = (string) Combo.Model.GetValue (iter, 0);
116
IConfiguration conf = IdeApp.ProjectOperations.CurrentOpenCombine.GetConfiguration (cs);
117
IdeApp.ProjectOperations.CurrentOpenCombine.ActiveConfiguration = conf;
119
IdeApp.Workspace.ActiveConfiguration = cs;