private void ProcessItem(configitem item) { try { if (!MainV2.comPort.MAV.param.ContainsKey(item.paramname)) { return; } var value = (float)MainV2.comPort.MAV.param[item.paramname]; if (value < item.min) { item.min = value; } if (value > item.max) { item.max = value; } var range = ParameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Range, MainV2.comPort.MAV.cs.firmware.ToString()); var increment = ParameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Increment, MainV2.comPort.MAV.cs.firmware.ToString()); var rangeopt = range.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (rangeopt.Length > 1) { item.min = float.Parse(rangeopt[0], CultureInfo.InvariantCulture); item.max = float.Parse(rangeopt[1], CultureInfo.InvariantCulture); } var incrementf = 0.01f; if (increment.Length > 0) { float.TryParse(increment, NumberStyles.Float, CultureInfo.InvariantCulture, out incrementf); } var RNG = new RangeControl(item.paramname, item.desc, item.title, incrementf, 1, item.min, item.max, value.ToString()); RNG.Tag = item; RNG.Location = new Point(10, y); RNG.AttachEvents(); RNG.ValueChanged += RNG_ValueChanged; ThemeManager.ApplyThemeTo(RNG); panel1.Controls.Add(RNG); y += RNG.Height; } catch (Exception ex) { CustomMessageBox.Show("Failed to process " + item.paramname + "\n" + ex); } }
void createValueControl(KeyValuePair <string, string> x) { string value = ((float)MainV2.comPort.MAV.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture); string description = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.DisplayName) + " (" + x.Key + ")"; string units = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); string rangeRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); string availableValuesRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); float displayscale = 1; float increment, intValue; float.TryParse(incrementRaw, NumberStyles.Float, CultureInfo.InvariantCulture, out increment); // this is in local culture float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], NumberStyles.Float, CultureInfo.InvariantCulture, out lowerRange); float upperRange; float.TryParse(rangeParts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out upperRange); var valueControl = new RangeControl(x.Key, FitDescriptionText(units, description), displayName, increment, displayscale, lowerRange, upperRange, value); ThemeManager.ApplyThemeTo(valueControl); valueControl.ValueChanged += valueControl_ValueChanged; flowLayoutPanel1.Controls.Add(valueControl); } else if (availableValuesRaw.Length > 0) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; ThemeManager.ApplyThemeTo(valueControl); valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = ParameterMetaDataRepository.GetParameterOptionsInt(x.Key); valueControl.ComboBoxControl.SelectedItem = value; valueControl.ValueChanged += valueControl_ValueChanged; flowLayoutPanel1.Controls.Add(valueControl); } else { Console.WriteLine("No valid param metadata for " + x.Key); } }
public static Func <object, PropertyInfo, Func <object>, Action <object>, object> Slider <T>( T min, T max, Func <T, object> toInt, Func <int, T> fromInt) => (o, p, gv, sv) => { var v = gv(); var vc = new DumpContainer { Content = v, Style = "min-width: 30px" }; var s = new RangeControl( Convert.ToInt32(toInt(min)), Convert.ToInt32(toInt(max)), Convert.ToInt32(toInt((T)v))) { IsMultithreaded = true }; s.ValueInput += delegate { var val = fromInt(s.Value); sv(val); vc.Content = val; }; var config = new { Min = min, Max = max }; var editor = EditableDumpContainer.For(config); editor.AddChangeHandler(x => x.Min, (_, m) => s.Min = Convert.ToInt32(toInt(m))); editor.AddChangeHandler(x => x.Max, (_, m) => s.Max = Convert.ToInt32(toInt(m))); var editorDc = new DumpContainer { Content = editor }; var display = true; var toggleEditor = new Hyperlinq(() => { display = !display; editorDc.Style = display ? "" : "display:none"; }, "[*]"); toggleEditor.Action(); return(Util.VerticalRun(vc, Util.HorizontalRun(false, s, toggleEditor), editorDc)); };
private void BUT_Find_Click(object sender, EventArgs e) { y = 10; string searchfor = ""; InputBox.Show("Search For", "Enter a single word to search for", ref searchfor); foreach (Control ctl in tableLayoutPanel1.Controls) { if (ctl.GetType() == typeof(RangeControl)) { RangeControl rng = (RangeControl)ctl; if (rng.LabelText.ToString().ToLower().Contains(searchfor.ToLower()) || rng.DescriptionText.ToString().ToLower().Contains(searchfor.ToLower())) { ctl.Visible = true; ctl.Location = new Point(ctl.Location.X, y); y += ctl.Height; } else { ctl.Visible = false; } } else if (ctl.GetType() == typeof(ValuesControl)) { ValuesControl vctl = (ValuesControl)ctl; if (vctl.LabelText.ToString().ToLower().Contains(searchfor.ToLower()) || vctl.DescriptionText.ToString().ToLower().Contains(searchfor.ToLower())) { ctl.Visible = true; ctl.Location = new Point(ctl.Location.X, y); y += ctl.Height; } else { ctl.Visible = false; } } } }
private void InitializeComponent() { this.INS_LOG_BAT_MASK = new MissionPlanner.Controls.MavlinkCheckBoxBitMask(); this.INS_LOG_BAT_CNT = new MissionPlanner.Controls.RangeControl(); this.but_fft = new MissionPlanner.Controls.MyButton(); this.LOG_BITMASK = new MissionPlanner.Controls.MavlinkCheckBoxBitMask(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.SuspendLayout(); // // INS_LOG_BAT_MASK // this.INS_LOG_BAT_MASK.Enabled = false; this.INS_LOG_BAT_MASK.Location = new System.Drawing.Point(6, 138); this.INS_LOG_BAT_MASK.Name = "INS_LOG_BAT_MASK"; this.INS_LOG_BAT_MASK.ParamName = null; this.INS_LOG_BAT_MASK.Size = new System.Drawing.Size(604, 115); this.INS_LOG_BAT_MASK.TabIndex = 3; this.INS_LOG_BAT_MASK.Value = 0F; // // INS_LOG_BAT_CNT // this.INS_LOG_BAT_CNT.DescriptionText = "Description"; this.INS_LOG_BAT_CNT.DisplayScale = 1F; this.INS_LOG_BAT_CNT.Increment = 1F; this.INS_LOG_BAT_CNT.LabelText = "Label"; this.INS_LOG_BAT_CNT.Location = new System.Drawing.Point(6, 19); this.INS_LOG_BAT_CNT.MaxRange = 10F; this.INS_LOG_BAT_CNT.MinRange = 0F; this.INS_LOG_BAT_CNT.Name = "INS_LOG_BAT_CNT"; this.INS_LOG_BAT_CNT.Size = new System.Drawing.Size(604, 108); this.INS_LOG_BAT_CNT.TabIndex = 4; this.INS_LOG_BAT_CNT.Value = "0"; // // but_fft // this.but_fft.Location = new System.Drawing.Point(629, 13); this.but_fft.Name = "but_fft"; this.but_fft.Size = new System.Drawing.Size(75, 23); this.but_fft.TabIndex = 5; this.but_fft.Text = "FFT"; this.but_fft.UseVisualStyleBackColor = true; this.but_fft.Click += new System.EventHandler(this.but_fft_Click); // // LOG_BITMASK // this.LOG_BITMASK.Enabled = false; this.LOG_BITMASK.Location = new System.Drawing.Point(6, 19); this.LOG_BITMASK.Name = "LOG_BITMASK"; this.LOG_BITMASK.ParamName = null; this.LOG_BITMASK.Size = new System.Drawing.Size(604, 105); this.LOG_BITMASK.TabIndex = 6; this.LOG_BITMASK.Value = 0F; // // groupBox1 // this.groupBox1.Controls.Add(this.INS_LOG_BAT_CNT); this.groupBox1.Controls.Add(this.INS_LOG_BAT_MASK); this.groupBox1.Location = new System.Drawing.Point(7, 3); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(616, 264); this.groupBox1.TabIndex = 8; this.groupBox1.TabStop = false; this.groupBox1.Text = "FFT Setup"; // // groupBox2 // this.groupBox2.Controls.Add(this.LOG_BITMASK); this.groupBox2.Location = new System.Drawing.Point(7, 273); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(616, 130); this.groupBox2.TabIndex = 9; this.groupBox2.TabStop = false; this.groupBox2.Text = "Please ensure IMU_RAW and IMU_FAST are turned off to use FFT"; // // ConfigFFT // this.Controls.Add(this.groupBox2); this.Controls.Add(this.but_fft); this.Controls.Add(this.groupBox1); this.Name = "ConfigFFT"; this.Size = new System.Drawing.Size(710, 411); this.groupBox1.ResumeLayout(false); this.groupBox2.ResumeLayout(false); this.ResumeLayout(false); }
public static void GenerateControls(FlowLayoutPanel panel, Block block) { //Suspend panel.SuspendLayout(); //Loop foreach (Field field in block.Fields) { //Prepare Control control = null; //Handle switch (field.Type) { case FieldType.FieldExplanation: control = new ExplanationControl((ExplanationField)field); break; case FieldType.FieldBlock: control = new BlockControl((BlockField)field); break; case FieldType.FieldStruct: control = new StructControl((StructField)field); break; case FieldType.FieldString: case FieldType.FieldLongString: control = new StringControl(field); break; case FieldType.FieldTagReference: control = new TagReferenceControl(field); break; case FieldType.FieldStringId: case FieldType.FieldOldStringId: control = new StringIdControl(field); break; case FieldType.FieldCharInteger: case FieldType.FieldShortInteger: case FieldType.FieldLongInteger: case FieldType.FieldAngle: case FieldType.FieldTag: case FieldType.FieldReal: case FieldType.FieldRealFraction: control = new ValueControl(field); break; case FieldType.FieldCharEnum: case FieldType.FieldEnum: case FieldType.FieldLongEnum: control = new EnumControl(field); break; case FieldType.FieldLongFlags: control = new FlagsControl() { Field = field, Title = field.Name, Information = field.Information, Options = ((LongFlagsField)field).Options.Select(o => o.Name).ToArray(), Details = field.Details, Value = field.Value, ValueChanged = FlagsControl_ValueChanged }; break; case FieldType.FieldWordFlags: control = new FlagsControl() { Field = field, Title = field.Name, Information = field.Information, Options = ((WordFlagsField)field).Options.Select(o => o.Name).ToArray(), Details = field.Details, Value = field.Value, ValueChanged = FlagsControl_ValueChanged }; break; case FieldType.FieldByteFlags: control = new FlagsControl() { Field = field, Title = field.Name, Information = field.Information, Options = ((ByteFlagsField)field).Options.Select(o => o.Name).ToArray(), Details = field.Details, Value = field.Value, ValueChanged = FlagsControl_ValueChanged }; break; case FieldType.FieldShortBounds: control = new RangeControl() { Field = field, Title = field.Name, RangeValue = new string[] { ((ShortBounds)field.Value).Min.ToString(), ((ShortBounds)field.Value).Max.ToString() } }; break; case FieldType.FieldAngleBounds: case FieldType.FieldRealBounds: case FieldType.FieldRealFractionBounds: control = new RangeControl() { Field = field, Title = field.Name, RangeValue = new string[] { ((FloatBounds)field.Value).Min.ToString(), ((FloatBounds)field.Value).Max.ToString() } }; break; case FieldType.FieldPoint2D: control = new TwoTupleControl() { LabelA = "x", LabelB = "y", Field = field, Title = field.Name, TupleValue = new string[] { ((Point2)field.Value).X.ToString(), ((Point2)field.Value).Y.ToString() } }; break; case FieldType.FieldRealPoint2D: control = new TwoTupleControl() { LabelA = "x", LabelB = "y", Field = field, Title = field.Name, TupleValue = new string[] { ((Point2F)field.Value).X.ToString(), ((Point2F)field.Value).Y.ToString() } }; break; case FieldType.FieldRealPoint3D: control = new ThreeTupleControl() { LabelA = "x", LabelB = "y", LabelC = "z", Field = field, Title = field.Name, TupleValue = new string[] { ((Point3F)field.Value).X.ToString(), ((Point3F)field.Value).Y.ToString(), ((Point3F)field.Value).Z.ToString() } }; break; case FieldType.FieldRealVector2D: control = new TwoTupleControl() { LabelA = "i", LabelB = "j", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector2)field.Value).I.ToString(), ((Vector2)field.Value).J.ToString() } }; break; case FieldType.FieldRealVector3D: control = new ThreeTupleControl() { LabelA = "i", LabelB = "j", LabelC = "k", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector3)field.Value).I.ToString(), ((Vector3)field.Value).J.ToString(), ((Vector3)field.Value).K.ToString() } }; break; case FieldType.FieldRectangle2D: control = new FourTupleControl() { LabelA = "t", LabelB = "l", LabelC = "r", LabelD = "b", Field = field, Title = field.Name, TupleValue = new string[] { ((Rectangle2)field.Value).Top.ToString(), ((Rectangle2)field.Value).Left.ToString(), ((Rectangle2)field.Value).Right.ToString(), ((Rectangle2)field.Value).Bottom.ToString() } }; break; case FieldType.FieldRgbColor: control = new ThreeTupleControl() { LabelA = "r", LabelB = "g", LabelC = "b", Field = field, Title = field.Name, }; break; case FieldType.FieldArgbColor: control = new FourTupleControl() { LabelA = "a", LabelB = "r", LabelC = "g", LabelD = "b", Field = field, Title = field.Name, }; break; case FieldType.FieldRealRgbColor: control = new ThreeTupleControl() { LabelA = "r", LabelB = "g", LabelC = "b", Field = field, Title = field.Name, }; break; case FieldType.FieldRealArgbColor: control = new FourTupleControl() { LabelA = "a", LabelB = "r", LabelC = "g", LabelD = "b", Field = field, Title = field.Name, }; break; case FieldType.FieldRealHsvColor: control = new ThreeTupleControl() { LabelA = "h", LabelB = "s", LabelC = "v", Field = field, Title = field.Name, }; break; case FieldType.FieldRealAhsvColor: control = new FourTupleControl() { LabelA = "a", LabelB = "h", LabelC = "s", LabelD = "v", Field = field, Title = field.Name, }; break; case FieldType.FieldQuaternion: control = new FourTupleControl() { LabelA = "w", LabelB = "i", LabelC = "j", LabelD = "k", Field = field, Title = field.Name, TupleValue = new string[] { ((Quaternion)field.Value).W.ToString(), ((Quaternion)field.Value).I.ToString(), ((Quaternion)field.Value).J.ToString(), ((Quaternion)field.Value).K.ToString() } }; break; case FieldType.FieldEulerAngles2D: control = new TwoTupleControl() { LabelA = "i", LabelB = "j", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector2)field.Value).I.ToString(), ((Vector2)field.Value).J.ToString() } }; break; case FieldType.FieldEulerAngles3D: control = new ThreeTupleControl() { LabelA = "i", LabelB = "j", LabelC = "k", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector3)field.Value).I.ToString(), ((Vector3)field.Value).J.ToString(), ((Vector3)field.Value).K.ToString() } }; break; case FieldType.FieldRealPlane2D: control = new ThreeTupleControl() { LabelA = "i", LabelB = "j", LabelC = "d", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector3)field.Value).I.ToString(), ((Vector3)field.Value).J.ToString(), ((Vector3)field.Value).K.ToString() } }; break; case FieldType.FieldRealPlane3D: control = new FourTupleControl() { LabelA = "i", LabelB = "j", LabelC = "k", LabelD = "d", Field = field, Title = field.Name, TupleValue = new string[] { ((Vector4)field.Value).I.ToString(), ((Vector4)field.Value).J.ToString(), ((Vector4)field.Value).K.ToString(), ((Vector4)field.Value).W.ToString() } }; break; default: control = new GuerillaControl() { Visible = false }; break; } //Check if (control != null) { panel.Controls.Add(control); } } //Resume panel.ResumeLayout(); }
private void AddControl(KeyValuePair <string, string> x, List <Control> toadd) //, ref int ypos) { if (!string.IsNullOrEmpty(x.Key)) { try { var controlAdded = false; var value = (MainV2.comPort.MAV.param[x.Key].Value).ToString("0.###"); var items = Controls.Find(x.Key, true); if (items.Length > 0) { if (items[0].GetType() == typeof(RangeControl)) { ((RangeControl)items[0]).ValueChanged -= Control_ValueChanged; ((RangeControl)items[0]).DeAttachEvents(); ((RangeControl)items[0]).Value = value; ThemeManager.ApplyThemeTo(((RangeControl)items[0])); ((RangeControl)items[0]).AttachEvents(); ((RangeControl)items[0]).ValueChanged += Control_ValueChanged; return; } if (items[0].GetType() == typeof(ValuesControl)) { ((ValuesControl)items[0]).ValueChanged -= Control_ValueChanged; ((ValuesControl)items[0]).Value = value; ((ValuesControl)items[0]).ValueChanged += Control_ValueChanged; return; } if (items[0].GetType() == typeof(MavlinkCheckBoxBitMask)) { ((MavlinkCheckBoxBitMask)items[0]).ValueChanged -= Control_ValueChanged; ((MavlinkCheckBoxBitMask)items[0]).Value = Convert.ToSingle(value); ((MavlinkCheckBoxBitMask)items[0]).ValueChanged += Control_ValueChanged; return; } } var description = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description, MainV2.comPort.MAV.cs.firmware.ToString()); var displayName = x.Value + " (" + x.Key + ")"; var units = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units, MainV2.comPort.MAV.cs.firmware.ToString()); // If this is a range var rangeRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range, MainV2.comPort.MAV.cs.firmware.ToString()); var incrementRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment, MainV2.comPort.MAV.cs.firmware.ToString()); if (!string.IsNullOrEmpty(rangeRaw) && !string.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, NumberStyles.Float, CultureInfo.InvariantCulture, out increment); // this is in local culture float.TryParse(value, out intValue); var rangeParts = rangeRaw.Split(' '); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], NumberStyles.Float, CultureInfo.InvariantCulture, out lowerRange); float upperRange; float.TryParse(rangeParts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out upperRange); float displayscale = 1; // var rangeControl = new RangeControl(); if (units.ToLower() == "centi-degrees") { //Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Degrees (Scaled)"; increment /= 100; } else if (units.ToLower() == "centimeters") { //Console.WriteLine(x.Key + " scale"); // displayscale = 100; // units = "Meters (Scaled)"; // increment /= 100; } var desc = FitDescriptionText(units, description, tableLayoutPanel1.Width); var rangeControl = new RangeControl(x.Key, desc, displayName, increment, displayscale, lowerRange, upperRange, value); rangeControl.Width = tableLayoutPanel1.Width - 50; //Console.WriteLine("{0} {1} {2} {3} {4}", x.Key, increment, lowerRange, upperRange, value); ThemeManager.ApplyThemeTo(rangeControl); if (intValue < lowerRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } if (intValue > upperRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } rangeControl.AttachEvents(); rangeControl.ValueChanged += Control_ValueChanged; // set pos rangeControl.Location = new Point(0, y); // add control - let it autosize height toadd.Add(rangeControl); // add height for next control y += rangeControl.Height; controlAdded = true; } } // try bitmask next if (!controlAdded) { var availableBitMask = ParameterMetaDataRepository.GetParameterBitMaskInt(x.Key, MainV2.comPort.MAV.cs.firmware.ToString()); if (availableBitMask.Count > 0) { var bitmask = new MavlinkCheckBoxBitMask(); bitmask.Name = x.Key; bitmask.setup(x.Key, MainV2.comPort.MAV.param); bitmask.myLabel1.Text = displayName; bitmask.label1.Text = FitDescriptionText(units, description, tableLayoutPanel1.Width - 50); bitmask.Width = tableLayoutPanel1.Width - 50; ThemeManager.ApplyThemeTo(bitmask); // set pos bitmask.Location = new Point(0, y); // add control - let it autosize height toadd.Add(bitmask); // add height for next control y += bitmask.Height; bitmask.ValueChanged += Control_ValueChanged; controlAdded = true; } } if (!controlAdded) { // If this is a subset of values var availableValuesRaw = ParameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values, MainV2.comPort.MAV.cs.firmware.ToString()); if (!string.IsNullOrEmpty(availableValuesRaw)) { var availableValues = availableValuesRaw.Split(','); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Width = tableLayoutPanel1.Width - 50; valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description, tableLayoutPanel1.Width); valueControl.LabelText = displayName; ThemeManager.ApplyThemeTo(valueControl); var splitValues = new List <KeyValuePair <string, string> >(); // Add the values to the ddl foreach (var val in availableValues) { var valParts = val.Split(':'); splitValues.Add(new KeyValuePair <string, string>(valParts[0].Trim(), (valParts.Length > 1) ? valParts[1].Trim() : valParts[0].Trim())); } ; valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; valueControl.ValueChanged += Control_ValueChanged; // set pos valueControl.Location = new Point(0, y); // add control - let it autosize height toadd.Add(valueControl); // add height for next control y += valueControl.Height; } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }
/// <summary> /// Binds the param list. /// </summary> private void BindParamList() { tableLayoutPanel1.Controls.Clear(); if (_params == null || _params.Count == 0) { SortParamList(); } // get the params if nothing exists already if (_params != null && _params.Count == 0) { try { Utilities.ParameterMetaDataParser.GetParameterInformation(); _parameterMetaDataRepository.Reload(); SortParamList(); } catch (Exception exp) { log.Error(exp); } // just to cleanup any errors } this.SuspendLayout(); _params.OrderBy(x => x.Key).ForEach(x => { if (!String.IsNullOrEmpty(x.Key)) { try { bool controlAdded = false; string value = ((float)MainV2.comPort.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture); string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = x.Value + " (" + x.Key + ")"; string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); // If this is a range string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); // modify for scaling float test = 1; MAVLink.modifyParamForDisplay(true, x.Key, ref test); if (test != 1) { if (units.ToLower() == "centi-degrees") { units = "Degrees"; incrementRaw = "0.1"; string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); rangeRaw = (lowerRange / 100) + " " + (upperRange / 100); } } else if (units.ToLower() == "centimeters") { units = "Meters"; incrementRaw = "0.1"; string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); rangeRaw = (lowerRange / 100) + " " + (upperRange / 100); } } else { units += " / " + (int)(1 / test); } } if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, out increment); float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); int scaler = (int)float.Parse((1 / increment).ToString(CultureInfo.InvariantCulture)); int scaledLowerRange = 0, scaledUpperRange = 0; int scaledIncrement = (int)increment; if (scaler > 0) { scaledLowerRange = (int)(lowerRange * scaler); scaledUpperRange = (int)(upperRange * scaler); scaledIncrement = (int)float.Parse((increment * scaler).ToString(CultureInfo.InvariantCulture)); intValue *= scaler; } var rangeControl = new RangeControl(); rangeControl.Name = x.Key; rangeControl.Scaler = scaler; rangeControl.DescriptionText = FitDescriptionText(units, description); rangeControl.LabelText = displayName; rangeControl.TrackBarControl.Minimum = Math.Min(scaledLowerRange, (int)intValue); rangeControl.TrackBarControl.Maximum = Math.Max(scaledUpperRange, (int)intValue); rangeControl.TrackBarControl.TickFrequency = scaledIncrement; rangeControl.TrackBarControl.Value = (int)intValue; rangeControl.NumericUpDownControl.Increment = (decimal)increment; rangeControl.NumericUpDownControl.DecimalPlaces = scaler.ToString(CultureInfo.InvariantCulture).Length - 1; rangeControl.NumericUpDownControl.Minimum = (decimal)Math.Min(lowerRange, ((float)MainV2.comPort.param[x.Key])); rangeControl.NumericUpDownControl.Maximum = (decimal)Math.Max(upperRange, ((float)MainV2.comPort.param[x.Key])); rangeControl.NumericUpDownControl.Value = (decimal)((float)MainV2.comPort.param[x.Key]); rangeControl.AttachEvents(); tableLayoutPanel1.Controls.Add(rangeControl); controlAdded = true; } } if (!controlAdded) { // If this is a subset of values string availableValuesRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); if (!String.IsNullOrEmpty(availableValuesRaw)) { string[] availableValues = availableValuesRaw.Split(new[] { ',' }); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; var splitValues = new List <KeyValuePair <string, string> >(); // Add the values to the ddl availableValues.ForEach(val => { string[] valParts = val.Split(new[] { ':' }); splitValues.Add(new KeyValuePair <string, string>(valParts[0], (valParts.Length > 1) ? valParts[1] : valParts[0])); }); valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; tableLayoutPanel1.Controls.Add(valueControl); } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }); ThemeManager.ApplyThemeTo(this); this.ResumeLayout(); }
/// <summary> /// Binds the param list. /// </summary> private void BindParamList() { tableLayoutPanel1.Controls.Clear(); if (_params == null || _params.Count == 0) { SortParamList(); } // get the params if nothing exists already if (_params != null && _params.Count == 0) { Utilities.ParameterMetaDataParser.GetParameterInformation(); } _params.ForEach(x => { if (!String.IsNullOrEmpty(x.Key)) { try { bool controlAdded = false; string value = ((float)MainV2.comPort.param[x.Key]).ToString("0.###"); string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = x.Value; string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); // If this is a range string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, out increment); float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); int scaler = (int)float.Parse((1 / increment).ToString(CultureInfo.InvariantCulture)); int scaledLowerRange = 0, scaledUpperRange = 0; int scaledIncrement = (int)increment; if (scaler > 0) { scaledLowerRange = (int)(lowerRange * scaler); scaledUpperRange = (int)(upperRange * scaler); scaledIncrement = (int)float.Parse((increment * scaler).ToString(CultureInfo.InvariantCulture)); intValue *= scaler; } var rangeControl = new RangeControl(); rangeControl.Name = x.Key; rangeControl.Scaler = scaler; rangeControl.DescriptionText = FitDescriptionText(units, description); rangeControl.LabelText = displayName; rangeControl.TrackBarControl.Minimum = scaledLowerRange; rangeControl.TrackBarControl.Maximum = scaledUpperRange; rangeControl.TrackBarControl.TickFrequency = scaledIncrement; rangeControl.TrackBarControl.Value = (int)intValue; rangeControl.NumericUpDownControl.Increment = (decimal)increment; rangeControl.NumericUpDownControl.DecimalPlaces = scaler.ToString(CultureInfo.InvariantCulture).Length - 1; rangeControl.NumericUpDownControl.Minimum = (decimal)lowerRange; rangeControl.NumericUpDownControl.Maximum = (decimal)upperRange; rangeControl.NumericUpDownControl.Value = (decimal)((float)MainV2.comPort.param[x.Key]); rangeControl.AttachEvents(); tableLayoutPanel1.Controls.Add(rangeControl); controlAdded = true; } } if (!controlAdded) { // If this is a subset of values string availableValuesRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); if (!String.IsNullOrEmpty(availableValuesRaw)) { string[] availableValues = availableValuesRaw.Split(new[] { ',' }); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; var splitValues = new List <KeyValuePair <string, string> >(); // Add the values to the ddl availableValues.ForEach(val => { string[] valParts = val.Split(new[] { ':' }); splitValues.Add(new KeyValuePair <string, string>(valParts[0], (valParts.Length > 1) ? valParts[1] : valParts[0])); }); valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; tableLayoutPanel1.Controls.Add(valueControl); } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }); }
void AddControl(KeyValuePair <string, string> x) { if (!String.IsNullOrEmpty(x.Key)) { try { bool controlAdded = false; string value = ((float)MainV2.comPort.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture); string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = x.Value + " (" + x.Key + ")"; string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); // If this is a range string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, out increment); float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); float displayscale = 1; // var rangeControl = new RangeControl(); if (units.ToLower() == "centi-degrees") { Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Degrees (Scaled)"; increment /= 100; } else if (units.ToLower() == "centimeters") { Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Meters (Scaled)"; increment /= 100; } var rangeControl = new RangeControl(x.Key, FitDescriptionText(units, description), displayName, increment, displayscale, lowerRange, upperRange, value); /* * rangeControl.Name = x.Key; * rangeControl.Increment = increment; * rangeControl.DescriptionText = FitDescriptionText(units, description); * rangeControl.LabelText = displayName; * rangeControl.MinRange = lowerRange; * rangeControl.MaxRange = upperRange; * rangeControl.Value = value; */ Console.WriteLine("{0} {1} {2} {3} {4}", x.Key, increment, lowerRange, upperRange, value); ThemeManager.ApplyThemeTo(rangeControl); if (intValue < lowerRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } if (intValue > upperRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } /* * rangeControl.TrackBarControl.Minimum = Math.Min(scaledLowerRange, (int)intValue); * rangeControl.TrackBarControl.Maximum = Math.Max(scaledUpperRange, (int)intValue); * rangeControl.TrackBarControl.TickFrequency = scaledIncrement; * rangeControl.TrackBarControl.Value = (int)intValue; * * rangeControl.NumericUpDownControl.Increment = (decimal)increment; * rangeControl.NumericUpDownControl.DecimalPlaces = scaler.ToString(CultureInfo.InvariantCulture).Length - 1; * rangeControl.NumericUpDownControl.Minimum = (decimal)Math.Min(lowerRange, intValue); * rangeControl.NumericUpDownControl.Maximum = (decimal)Math.Max(upperRange, intValue); * rangeControl.NumericUpDownControl.Value = (decimal)(intValue); */ rangeControl.AttachEvents(); tableLayoutPanel1.Controls.Add(rangeControl); controlAdded = true; } } if (!controlAdded) { // If this is a subset of values string availableValuesRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); if (!String.IsNullOrEmpty(availableValuesRaw)) { string[] availableValues = availableValuesRaw.Split(new[] { ',' }); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; ThemeManager.ApplyThemeTo(valueControl); var splitValues = new List <KeyValuePair <string, string> >(); // Add the values to the ddl foreach (string val in availableValues) { string[] valParts = val.Split(new[] { ':' }); splitValues.Add(new KeyValuePair <string, string>(valParts[0].Trim(), (valParts.Length > 1) ? valParts[1].Trim() : valParts[0].Trim())); } ; valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; tableLayoutPanel1.Controls.Add(valueControl); } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }
void AddControl(KeyValuePair <string, string> x) //, ref int ypos) { if (!String.IsNullOrEmpty(x.Key)) { try { bool controlAdded = false; string value = ((float)MainV2.comPort.MAV.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture); string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = x.Value + " (" + x.Key + ")"; string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); var items = this.Controls.Find(x.Key, true); if (items.Length > 0) { if (items[0].GetType() == typeof(RangeControl)) { ((RangeControl)items[0]).ValueChanged -= Control_ValueChanged; ((RangeControl)items[0]).DeAttachEvents(); ((RangeControl)items[0]).Value = value; ThemeManager.ApplyThemeTo(((RangeControl)items[0])); ((RangeControl)items[0]).AttachEvents(); ((RangeControl)items[0]).ValueChanged += Control_ValueChanged; return; } else if (items[0].GetType() == typeof(ValuesControl)) { ((ValuesControl)items[0]).ValueChanged -= Control_ValueChanged; ((ValuesControl)items[0]).Value = value; ((ValuesControl)items[0]).ValueChanged += Control_ValueChanged; return; } } // If this is a range string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, out increment); float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); float displayscale = 1; // var rangeControl = new RangeControl(); if (units.ToLower() == "centi-degrees") { //Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Degrees (Scaled)"; increment /= 100; } else if (units.ToLower() == "centimeters") { //Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Meters (Scaled)"; increment /= 100; } var rangeControl = new RangeControl(x.Key, FitDescriptionText(units, description), displayName, increment, displayscale, lowerRange, upperRange, value); //Console.WriteLine("{0} {1} {2} {3} {4}", x.Key, increment, lowerRange, upperRange, value); ThemeManager.ApplyThemeTo(rangeControl); if (intValue < lowerRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } if (intValue > upperRange) { rangeControl.NumericUpDownControl.BackColor = Color.Orange; } rangeControl.AttachEvents(); rangeControl.ValueChanged += Control_ValueChanged; // set pos // rangeControl.Location = new Point(0, ypos); // add control - let it autosize height tableLayoutPanel1.Controls.Add(rangeControl); // add height for next control // ypos += rangeControl.Height; controlAdded = true; } } if (!controlAdded) { // If this is a subset of values string availableValuesRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); if (!String.IsNullOrEmpty(availableValuesRaw)) { string[] availableValues = availableValuesRaw.Split(new[] { ',' }); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; ThemeManager.ApplyThemeTo(valueControl); var splitValues = new List <KeyValuePair <string, string> >(); // Add the values to the ddl foreach (string val in availableValues) { string[] valParts = val.Split(new[] { ':' }); splitValues.Add(new KeyValuePair <string, string>(valParts[0].Trim(), (valParts.Length > 1) ? valParts[1].Trim() : valParts[0].Trim())); } ; valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; valueControl.ValueChanged += Control_ValueChanged; // set pos // valueControl.Location = new Point(0, ypos); // add control - let it autosize height tableLayoutPanel1.Controls.Add(valueControl); // add height for next control // ypos += valueControl.Height; } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }
//, ref int ypos) void AddControl(KeyValuePair<string,string> x) { if (!String.IsNullOrEmpty(x.Key)) { try { bool controlAdded = false; string value = ((float)MainV2.comPort.MAV.param[x.Key]).ToString("0.###", CultureInfo.InvariantCulture); string description = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Description); string displayName = x.Value + " (" + x.Key + ")"; string units = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Units); var items = this.Controls.Find(x.Key,true); if (items.Length > 0) { if (items[0].GetType() == typeof(RangeControl)) { ((RangeControl)items[0]).ValueChanged -= Control_ValueChanged; ((RangeControl)items[0]).DeAttachEvents(); ((RangeControl)items[0]).Value = value; ThemeManager.ApplyThemeTo(((RangeControl)items[0])); ((RangeControl)items[0]).AttachEvents(); ((RangeControl)items[0]).ValueChanged += Control_ValueChanged; return; } else if (items[0].GetType() == typeof(ValuesControl)) { ((ValuesControl)items[0]).ValueChanged -= Control_ValueChanged; ((ValuesControl)items[0]).Value = value; ((ValuesControl)items[0]).ValueChanged += Control_ValueChanged; return; } } // If this is a range string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range); string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment); if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw)) { float increment, intValue; float.TryParse(incrementRaw, out increment); float.TryParse(value, out intValue); string[] rangeParts = rangeRaw.Split(new[] { ' ' }); if (rangeParts.Count() == 2 && increment > 0) { float lowerRange; float.TryParse(rangeParts[0], out lowerRange); float upperRange; float.TryParse(rangeParts[1], out upperRange); float displayscale = 1; // var rangeControl = new RangeControl(); if (units.ToLower() == "centi-degrees") { //Console.WriteLine(x.Key + " scale"); displayscale = 100; units = "Degrees (Scaled)"; increment /= 100; } else if (units.ToLower() == "centimeters") { //Console.WriteLine(x.Key + " scale"); // displayscale = 100; // units = "Meters (Scaled)"; // increment /= 100; } var rangeControl = new RangeControl(x.Key, FitDescriptionText(units, description), displayName, increment, displayscale, lowerRange, upperRange, value); //Console.WriteLine("{0} {1} {2} {3} {4}", x.Key, increment, lowerRange, upperRange, value); ThemeManager.ApplyThemeTo(rangeControl); if (intValue < lowerRange) rangeControl.NumericUpDownControl.BackColor = Color.Orange; if (intValue > upperRange) rangeControl.NumericUpDownControl.BackColor = Color.Orange; rangeControl.AttachEvents(); rangeControl.ValueChanged += Control_ValueChanged; // set pos rangeControl.Location = new Point(0, y); // add control - let it autosize height tableLayoutPanel1.Controls.Add(rangeControl); // add height for next control y += rangeControl.Height; controlAdded = true; } } if (!controlAdded) { // If this is a subset of values string availableValuesRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Values); if (!String.IsNullOrEmpty(availableValuesRaw)) { string[] availableValues = availableValuesRaw.Split(new[] { ',' }); if (availableValues.Any()) { var valueControl = new ValuesControl(); valueControl.Name = x.Key; valueControl.DescriptionText = FitDescriptionText(units, description); valueControl.LabelText = displayName; ThemeManager.ApplyThemeTo(valueControl); var splitValues = new List<KeyValuePair<string, string>>(); // Add the values to the ddl foreach (string val in availableValues) { string[] valParts = val.Split(new[] { ':' }); splitValues.Add(new KeyValuePair<string, string>(valParts[0].Trim(), (valParts.Length > 1) ? valParts[1].Trim() : valParts[0].Trim())); }; valueControl.ComboBoxControl.DisplayMember = "Value"; valueControl.ComboBoxControl.ValueMember = "Key"; valueControl.ComboBoxControl.DataSource = splitValues; valueControl.ComboBoxControl.SelectedValue = value; valueControl.ValueChanged += Control_ValueChanged; // set pos valueControl.Location = new Point(0, y); // add control - let it autosize height tableLayoutPanel1.Controls.Add(valueControl); // add height for next control y += valueControl.Height; } } } } // if there is an error simply dont show it, ie bad pde file, bad scale etc catch (Exception ex) { log.Error(ex); } } }