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;
            }
        }
예제 #2
0
        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;
 }
예제 #4
0
 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;
 }
예제 #5
0
        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;
        }