private void LoadPresetVariables(XmlNode node) { if (node == null) { return; } foreach (XmlNode variable_node in node.SelectNodes("variable")) { try { PipelineVariable variable = new PipelineVariable(variable_node); if (!preset_variables.ContainsKey(variable.Id)) { preset_variables.Add(variable.Id, variable); } } catch { } } }
public PipelineVariableComboBox(PipelineVariable variable, ListStore model) : base() { this.variable = variable; this.model = model; }
private TreeIter ComboAppend(ListStore model, PipelineVariable variable, string display, string value) { if(variable.Unit != null) { return model.AppendValues(String.Format("{0} {1}", display, variable.Unit), value); } else { return model.AppendValues(display, value); } }
private Widget BuildSlider(PipelineVariable variable) { if(variable.StepValue <= 0.0) { return null; } HBox box = new HBox(); HScale slider = new HScale(variable.MinValue, variable.MaxValue, variable.StepValue); slider.DrawValue = true; slider.Digits = variable.StepPrecision; if(variable.DefaultValueNumeric != null) { slider.Value = (double)variable.DefaultValueNumeric; } if(variable.CurrentValueNumeric != null) { slider.Value = (double)variable.CurrentValueNumeric; } slider.ChangeValue += delegate { variable.CurrentValue = slider.Value.ToString(); }; if(variable.MinLabel != null) { Label min_label = new Label(); min_label.Yalign = 0.9f; min_label.Markup = String.Format("<small>{0}</small>", GLib.Markup.EscapeText(variable.MinLabel)); box.PackStart(min_label, false, false, 0); box.Spacing = 5; } box.PackStart(slider, true, true, 0); if(variable.MaxLabel != null) { Label max_label = new Label(); max_label.Yalign = 0.9f; max_label.Markup = String.Format("<small>{0}</small>", GLib.Markup.EscapeText(variable.MaxLabel)); box.PackStart(max_label, false, false, 0); box.Spacing = 5; } box.ShowAll(); return box; }
private Widget BuildControl(PipelineVariable variable) { switch(variable.ControlType) { default: case PipelineVariableControlType.Text: return new Entry(); case PipelineVariableControlType.Slider: return BuildSlider(variable); case PipelineVariableControlType.Combo: return BuildCombo(variable); case PipelineVariableControlType.Check: return BuildCheck(variable); } }
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 BuildCheck(PipelineVariable variable) { CheckButton check = new CheckButton(variable.Name); check.Toggled += delegate { variable.CurrentValue = Convert.ToString(check.Active ? 1 : 0); for(int i = 0; i < variable.Enables.Length; i++) { if(variable_widgets.ContainsKey(variable.Enables[i])) { variable_widgets[variable.Enables[i]].Visible = check.Active; variable_widgets[".label." + variable.Enables[i]].Visible = check.Active; } } for(int i = 0; i < variable.Disables.Length; i++) { if(variable_widgets.ContainsKey(variable.Disables[i])) { variable_widgets[variable.Disables[i]].Visible = !check.Active; variable_widgets[".label." + variable.Disables[i]].Visible = !check.Active; } } }; check.Active = ((int)variable.CurrentValueNumeric.Value) != 0; check.Show(); return check; }