Exemple #1
0
        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;
        }