public bool AddValue(object objectValue, bool add, List<uint> addresses = null) { double? changeValueNullable = ParsingUtilities.ParseDoubleNullable(objectValue); if (!changeValueNullable.HasValue) return false; double changeValue = changeValueNullable.Value; List<object> currentValues = _watchVar.GetValues(addresses); List<double?> currentValuesDoubleNullable = currentValues.ConvertAll( currentValue => ParsingUtilities.ParseDoubleNullable(currentValue)); List<object> newValues = currentValuesDoubleNullable.ConvertAll(currentValueDoubleNullable => { if (!currentValueDoubleNullable.HasValue) return null; double currentValueDouble = currentValueDoubleNullable.Value; object convertedValue = ConvertValue(currentValueDouble, false, false); // TODO tyler fix this for float logic double convertedValueDouble = ParsingUtilities.ParseDouble(convertedValue); double modifiedValue = convertedValueDouble + changeValue * (add ? +1 : -1); object unconvertedValue = UnconvertValue(modifiedValue); return unconvertedValue; }); bool success = _watchVar.SetValues(newValues, addresses); if (success && GetLockedBool(addresses)) WatchVariableLockManager.UpdateLockValues(_watchVar, newValues, addresses); return success; }
protected override object HandleNumberConversion(object value) { if (value == null) { return(null); } if (TypeUtilities.IsNumber(value)) { return(value); } return(ParsingUtilities.ParseDouble(value)); }
public void Initialize(List <WatchVariableControl> controls) { ControlUtilities.InitializeThreeDimensionController( CoordinateSystem.Euler, true, groupBoxVar, groupBoxVar.Controls["buttonVarXn"] as Button, groupBoxVar.Controls["buttonVarXp"] as Button, groupBoxVar.Controls["buttonVarZn"] as Button, groupBoxVar.Controls["buttonVarZp"] as Button, groupBoxVar.Controls["buttonVarXnZn"] as Button, groupBoxVar.Controls["buttonVarXnZp"] as Button, groupBoxVar.Controls["buttonVarXpZn"] as Button, groupBoxVar.Controls["buttonVarXpZp"] as Button, groupBoxVar.Controls["buttonVarYp"] as Button, groupBoxVar.Controls["buttonVarYn"] as Button, groupBoxVar.Controls["textBoxVarXZ"] as TextBox, groupBoxVar.Controls["textBoxVarY"] as TextBox, groupBoxVar.Controls["checkBoxVarRelative"] as CheckBox, (float hOffset, float vOffset, float nOffset, bool useRelative) => { if (controls.Count < 3) { return; } List <List <object> > valueLists = new List <List <object> >() { controls[0].GetValues(handleFormatting: false), controls[1].GetValues(handleFormatting: false), controls[2].GetValues(handleFormatting: false), }; if (controls.Count >= 4) { valueLists.Add(controls[3].GetValues(handleFormatting: false)); } int minCount = valueLists.Min(valueList => valueList.Count); List <PositionAngle> posAngles = new List <PositionAngle>(); for (int i = 0; i < minCount; i++) { int index = i; List <Func <double> > getters = new List <Func <double> >() { () => ParsingUtilities.ParseDouble(valueLists[0][index]), () => ParsingUtilities.ParseDouble(valueLists[1][index]), () => ParsingUtilities.ParseDouble(valueLists[2][index]), () => controls.Count >= 4 ? ParsingUtilities.ParseDouble(valueLists[3][index]) : double.NaN, }; List <Func <double, bool> > setters = new List <Func <double, bool> >() { (double value) => controls[0].SetValueOfValues(value, index), (double value) => controls[1].SetValueOfValues(value, index), (double value) => controls[2].SetValueOfValues(value, index), (double value) => controls.Count >= 4 ? controls[3].SetValueOfValues(value, index) : true, }; PositionAngle posAngle = PositionAngle.Functions(getters, setters); posAngles.Add(posAngle); } ButtonUtilities.TranslatePosAngle( posAngles, hOffset, nOffset, -1 * vOffset, useRelative); }); }