public DynamicReconfigureSlider(DynamicReconfigureInterface dynamic, ParamDescription pd, double def, double max, double min, bool isDouble) { name = pd.name; this.dynamic = dynamic; this.isDouble = isDouble; InitializeComponent(); this.min = min; if (double.IsInfinity(this.min)) { value.Minimum = -1000.0; } else { value.Minimum = min; } this.max = max; if (double.IsInfinity(this.max)) { value.Maximum = 1000.0; } else { value.Maximum = max; } description.Text = name + ":"; JustTheTip.Content = pd.description; double range = value.Maximum - value.Minimum; minlabel.Content = Format(value.Minimum); maxlabel.Content = Format(value.Maximum); value.Value = this.def = def; if (isDouble) { textBehavior.RegularExpression = @"^[\-\.0-9]+$"; value.IsSnapToTickEnabled = false; value.TickFrequency = range / 10.0; value.LargeChange = range / 10.0; value.SmallChange = range / 100.0; dynamic.Subscribe(name, new Action <double>(changed)); ignore = false; } else { textBehavior.RegularExpression = @"^[\-0-9][0-9]*$"; value.IsSnapToTickEnabled = true; value.TickFrequency = Math.Max(1, (int)Math.Floor(range / 10.0)); value.LargeChange = Math.Max(1, (int)Math.Floor(range / 10.0)); value.SmallChange = 1; dynamic.Subscribe(name, new Action <int>(changed)); ignore = false; } }
public DynamicReconfigureSlider(DynamicReconfigureInterface dynamic, ParamDescription pd, double def, double max, double min, bool isDouble) { name = pd.name.data; this.dynamic = dynamic; this.isDouble = isDouble; InitializeComponent(); this.min = min; if (double.IsInfinity(this.min)) { value.Minimum = -1000.0; } else { value.Minimum = min; } this.max = max; if (double.IsInfinity(this.max)) { value.Maximum = 1000.0; } else { value.Maximum = max; } description.Text = name + ":"; JustTheTip.Content = pd.description.data; if (isDouble) { textBehavior.RegularExpression = @"^[\-\.0-9]+$"; value.IsSnapToTickEnabled = false; value.TickFrequency = 0; minlabel.Content = string.Format("{0:N2}", value.Minimum); maxlabel.Content = string.Format("{0:N2}", value.Maximum); value.Value = this.def = def; dynamic.Subscribe(name, new Action <double>(changed)); ignore = false; } else { textBehavior.RegularExpression = @"^[\-0-9][0-9]*$"; value.TickFrequency = 1; value.IsSnapToTickEnabled = true; minlabel.Content = "" + (int)value.Minimum; maxlabel.Content = "" + (int)value.Maximum; value.Value = this.def = def; dynamic.Subscribe(name, new Action <int>(changed)); ignore = false; } }
public DynamicReconfigureStringBox(DynamicReconfigureInterface dynamic, ParamDescription pd, string def) { this.def = def; name = pd.name.data; this.dynamic = dynamic; InitializeComponent(); description.Content = name + ":"; JustTheTip.Content = pd.description.data; dynamic.Subscribe(name, changed); ignore = false; }
public DynamicReconfigureCheckbox(DynamicReconfigureInterface dynamic, ParamDescription pd, bool def) { this.def = def; name = pd.name; this.dynamic = dynamic; InitializeComponent(); description.Content = name + ":"; JustTheTip.Content = pd.description; _checkBox.IsChecked = def; dynamic.Subscribe(name, changed); ignore = false; }
public DynamicReconfigureStringDropdown(DynamicReconfigureInterface dynamic, ParamDescription pd, object def, object max, object min, string edit_method) { this.def = def; this.max = max; this.min = min; this.edit_method = edit_method.Replace("'enum'", "'Enum'"); Dictionary <string, string> parsed = EnumParser.Parse(this.edit_method); string[] vals = parsed["Enum"].Split(new[] { '}' }, StringSplitOptions.RemoveEmptyEntries); List <Dictionary <string, string> > descs = vals.Select(s => EnumParser.SubParse(s + "}")).ToList(); descs = descs.Except(descs.Where(d => d.Count == 0)).ToList(); enumdescription = new EnumDescription(); enumdescription.Enum = new EnumValue[descs.Count]; enumdescription.enum_description = parsed["enum_description"]; Type tdesc = typeof(EnumValue); for (int i = 0; i < descs.Count; i++) { Dictionary <string, string> desc = descs[i]; EnumValue newval = new EnumValue(); foreach (string s in desc.Keys) { FieldInfo fi = tdesc.GetField(s); if (fi.FieldType == typeof(int)) { fi.SetValue(newval, int.Parse(desc[s])); } else { fi.SetValue(newval, desc[s]); } } enumdescription.Enum[i] = newval; } name = pd.name; this.dynamic = dynamic; InitializeComponent(); for (int i = 0; i < enumdescription.Enum.Length; i++) { if (!types.ContainsKey(enumdescription.Enum[i].type)) { throw new Exception("HANDLE " + enumdescription.Enum[i].type); } switch (types[enumdescription.Enum[i].type]) { case DROPDOWN_TYPE.INT: { ComboBoxItem cbi = new ComboBoxItem { Tag = int.Parse(enumdescription.Enum[i].value), Content = enumdescription.Enum[i].name, ToolTip = new ToolTip { Content = enumdescription.Enum[i].description + " (" + enumdescription.Enum[i].value + ")" } }; @enum.Items.Add(cbi); if (i == 0) { @enum.SelectedValue = this.def; dynamic.Subscribe(name, (Action <int>)changed); } else if (enumdescription.Enum[i].type != enumdescription.Enum[i - 1].type) { throw new Exception("NO CHANGSIES MINDSIES"); } } break; case DROPDOWN_TYPE.STR: { ComboBoxItem cbi = new ComboBoxItem { Tag = enumdescription.Enum[i].value, Content = enumdescription.Enum[i].name, ToolTip = new ToolTip { Content = enumdescription.Enum[i].description } }; @enum.Items.Add(cbi); if (i == 0) { @enum.SelectedValue = this.def; dynamic.Subscribe(name, (Action <string>)changed); } else if (enumdescription.Enum[i].type != enumdescription.Enum[i - 1].type) { throw new Exception("NO CHANGSIES MINDSIES"); } } break; } } description.Content = name + ":"; JustTheTip.Content = pd.description; ignore = false; }