tbf/TestBenchFramework/Boxes/DoubleBox.cs
Milan Hanajik 2f6f24e281 As sent to ST for the last test on Fuzhou300 system
- new component with VZ15 and modified position of VZ13
- fixed start method evaluation OK
- handling of entry forms cleaned-up
2014-09-23 13:16:59 +02:00

120 lines
2.9 KiB
C#

namespace TBF.Boxes
{
public class DoubleBox
{
/// Box value
private double val;
public double Val
{
get { return (valid ? val : 0); }
set { val = value; valid = true; }
}
/// Box name
string name;
public string Name
{
get { return name; }
set { name = value; }
}
/// Validity flag: true = the box value is valid
private bool valid = false;
public bool Valid
{
get { return valid; }
}
/// <summary> Parameterless constructor </summary>
public DoubleBox()
{
}
/// <summary> Constructor that initializes the value </summary>
public DoubleBox(double val)
{
this.Val = val;
}
/// <summary>
/// Clear the box value and the valid flag
/// </summary>
public void Clear()
{
val = 0;
valid = false;
}
///
/// Specifies a conversion to a string.
/// In the most complex case the conversion is:
/// string.Format(FormatEx, val.ToString(Format))
/// If the value is invalid, the conversion result is 'FormatInvalid'.
///
public string Format = null;
public string FormatEx = "{0}";
public string FormatInvalid = "---";
public double Factor = 1.0;
public double LimitLo = double.MinValue;
public double LimitHi = double.MaxValue;
/// <summary>
/// Converts the box value to a string representation
/// </summary>
public override string ToString()
{
if (!valid)
{
return FormatInvalid;
}
else if (Format == null)
{
return string.Format(FormatEx, Val * Factor);
}
else
{
return string.Format(FormatEx, (Val * Factor).ToString(Format));
}
}
/// <summary>
/// Validate the string representation of the box value
/// </summary>
/// <param name="strVal">String representation of the parameter</param>
/// <returns>true = string is OK, false = string is wrong (see 'message')</returns>
public bool ValidateParam(string strVal)
{
float dummy;
return Utils.TryParseSFloat(strVal, out dummy) &&
((dummy / Factor) >= LimitLo) &&
((dummy / Factor) <= LimitHi);
}
/// <summary>
/// Update the parameter from a string
/// </summary>
/// <param name="strVal">String representation of the box value</param>
public void UpdateParam(string strVal)
{
try
{
Val = (double)Utils.ParseSFloat(strVal) / Factor;
}
catch { };
}
public DoubleBox Clone()
{
DoubleBox newDoubleBox = new DoubleBox();
newDoubleBox.name = name;
newDoubleBox.val = val;
newDoubleBox.valid = valid;
newDoubleBox.Format = Format;
newDoubleBox.FormatInvalid = FormatInvalid;
newDoubleBox.FormatEx = FormatEx;
newDoubleBox.Factor = Factor;
return newDoubleBox;
}
}
}