private void OnComboChanged(object o, EventArgs args) { if (!(o is PipelineVariableComboBox)) { return; } PipelineVariableComboBox box = o as PipelineVariableComboBox; PipelineVariable variable = box.Variable; ListStore model = box.Store; TreeIter selected_iter = TreeIter.Zero; if (box.GetActiveIter(out selected_iter)) { variable.CurrentValue = (string)model.GetValue(selected_iter, 1); if (variable.PossibleValuesCount > 0 && variable.PossibleValues.ContainsKey(variable.CurrentValue)) { PipelineVariable.PossibleValue possible_value = variable.PossibleValues[variable.CurrentValue]; if (possible_value.Disables != null) { for (int i = 0; i < possible_value.Disables.Length; i++) { if (variable_widgets.ContainsKey(possible_value.Disables[i])) { variable_widgets[possible_value.Disables[i]].Visible = false; variable_widgets[".label." + possible_value.Disables[i]].Visible = false; } } } if (possible_value.Enables != null) { for (int i = 0; i < possible_value.Enables.Length; i++) { if (variable_widgets.ContainsKey(possible_value.Enables[i])) { variable_widgets[possible_value.Enables[i]].Visible = true; variable_widgets[".label." + possible_value.Enables[i]].Visible = true; } } } } } }
private Widget BuildCombo(PipelineVariable variable) { ListStore model = new ListStore(typeof(string), typeof(string)); PipelineVariableComboBox box = new PipelineVariableComboBox(variable, model); TreeIter active_iter = TreeIter.Zero; box.Changed += OnComboChanged; if (variable.PossibleValuesCount > 0) { foreach (string key in variable.PossibleValuesKeys) { TreeIter iter = ComboAppend(model, variable, variable.PossibleValues[key].Display, key); if (variable.CurrentValue == key || (active_iter.Equals(TreeIter.Zero) && variable.DefaultValue == key)) { active_iter = iter; } } } else { double min = variable.MinValue; double max = variable.MaxValue; double step = variable.StepValue; double current = min; for (; current <= max; current += step) { ComboAppend(model, variable, current.ToString(), current.ToString()); } } if (active_iter.Equals(TreeIter.Zero)) { for (int i = 0, n = model.IterNChildren(); i < n; i++) { TreeIter iter; if (model.IterNthChild(out iter, i)) { string value = (string)model.GetValue(iter, 1); if (value == variable.CurrentValue) { active_iter = iter; break; } } } } CellRendererText text_renderer = new CellRendererText(); box.PackStart(text_renderer, true); box.AddAttribute(text_renderer, "text", 0); box.Model = model; if (active_iter.Equals(TreeIter.Zero)) { if (model.IterNthChild(out active_iter, 0)) { box.SetActiveIter(active_iter); } } else { box.SetActiveIter(active_iter); } return(box); }
private Widget BuildCombo(PipelineVariable variable) { ListStore model = new ListStore(typeof(string), typeof(string)); PipelineVariableComboBox box = new PipelineVariableComboBox(variable, model); TreeIter active_iter = TreeIter.Zero; box.Changed += OnComboChanged; if(variable.PossibleValuesCount > 0) { foreach(string key in variable.PossibleValuesKeys) { TreeIter iter = ComboAppend(model, variable, variable.PossibleValues[key].Display, key); if(variable.CurrentValue == key || (active_iter.Equals(TreeIter.Zero) && variable.DefaultValue == key)) { active_iter = iter; } } } else { double min = variable.MinValue; double max = variable.MaxValue; double step = variable.StepValue; double current = min; for(; current <= max; current += step) { ComboAppend(model, variable, current.ToString(), current.ToString()); } } if(active_iter.Equals(TreeIter.Zero)) { for(int i = 0, n = model.IterNChildren(); i < n; i++) { TreeIter iter; if(model.IterNthChild(out iter, i)) { string value = (string)model.GetValue(iter, 1); if(value == variable.CurrentValue) { active_iter = iter; break; } } } } CellRendererText text_renderer = new CellRendererText(); box.PackStart(text_renderer, true); box.AddAttribute(text_renderer, "text", 0); box.Model = model; if(active_iter.Equals(TreeIter.Zero)) { if(model.IterNthChild(out active_iter, 0)) { box.SetActiveIter(active_iter); } } else { box.SetActiveIter(active_iter); } return box; }