/// <summary>if anything happening; safely ignored otherwise</summary> public void Cancel() { m_Timer.Enabled = false; m_fnTimeUp = null; m_Duration = 0; m_StartAt = Environment.TickCount; Meaning = 0; }
private void TimingChanged(object sender, EventArgs e) { if (m_Engine == null) { return; } ctrEditTiming ctr = (ctrEditTiming)sender; Engine.Timings eTiming = ctr.Meaning; Config.UserUser.Write(Engine.TimingConfigField(eTiming), ctr.Value); }
private void ctrTiming_UserChangedValue(object sender, EventArgs e) { // used for all of them if (m_Filling) { return; } ctrEditTiming ctr = (ctrEditTiming)sender; Engine.Timings time = (Engine.Timings)Convert.ToInt32(ctr.Tag); m_Config.Write(Engine.TimingConfigField(time), ctr.Value); WrittenToCurrent(); }
public cfgSwitching() { PhysicalSwitch.Initialise(); // will be ignored if already done. Required for detect mechanism to work InitializeComponent(); Strings.Translate(this); TimingLabels = new[] { lblAcceptance, lblPostActivation, lblLongPress, lblScanTime, lblFirstRepeat, lblSubsequentRepeat, lblDwellSelect, lblCriticalReverse }; TimingControls = new[] { ctrTimingAcceptance, ctrTimingPostActivation, ctrTimingLongPress, ctrTimingScanTime, ctrTimingFirstRepeat, ctrTimingSubsequentRepeat, ctrTimingDwellTime, ctrTimingCriticalReverse }; foreach (Label lbl in TimingLabels) { Engine.Timings timing = (Engine.Timings)Convert.ToInt32(lbl.Tag); lbl.Text = Strings.Item("Switch_Timing_" + timing); } foreach (ctrEditTiming ctr in TimingControls) { ctr.UserChangedValue += ctrTiming_UserChangedValue; } }
public void Start(int time, TimerFunction fnTimeUp, Engine.Timings meaning = 0) { m_Timer.Enabled = false; m_fnTimeUp = null; m_Duration = time; m_StartAt = Environment.TickCount; Meaning = meaning; if (time <= 0) { // fire now fnTimeUp.Invoke(); } else { m_fnTimeUp = fnTimeUp; m_Timer.Interval = time; m_Timer.Enabled = true; } }
private void FillTimings() { tblTimings.SuspendLayout(); while (tblTimings.Controls.Count > 0) { tblTimings.Controls[0].Dispose(); } if (m_Engine == null || !m_Loaded) { return; } Engine.Timings needed = m_Engine.RelevantTimings; for (int index = 0; index <= Logical.Count - 1; index++) { Logical logical = Logical.Switch(index); if (logical != null) { needed = needed | logical.RequiredTimings; } } int row = 0; foreach (Engine.Timings timing in Enum.GetValues(typeof(Engine.Timings))) { if ((needed & timing) > 0) { Label label = new Label { Text = Strings.Item("Switch_Timing_" + timing), TextAlign = System.Drawing.ContentAlignment.MiddleRight, Dock = DockStyle.Fill }; tblTimings.Controls.Add(label); tblTimings.SetRow(label, row); ctrEditTiming ctr = new ctrEditTiming { Meaning = timing, Value = m_Engine.ConfiguredTiming(timing), Dock = DockStyle.Fill }; ctr.UserChangedValue += TimingChanged; tblTimings.Controls.Add(ctr); tblTimings.SetRow(ctr, row); tblTimings.SetColumn(ctr, 1); row++; } } tblTimings.ResumeLayout(); }
/// <summary>Updates timing GUI based on the selected engine</summary> private void ReflectEngine() { SuspendLayout(); int switches = m_Applied.ReadInteger(Config.Number_Switches, 1); Engine engine = Engine.Create((Engine.Methods)m_Applied.ReadInteger(Config.Switch_Engine, (int)Engine.DefaultMethodForSwitches(switches))); var timings = engine.RelevantTimings; // bit field of ones which apply foreach (Label ctr in TimingLabels) { int time = Convert.ToInt32(ctr.Tag); ctr.Visible = (timings & (Engine.Timings)time) > 0; } foreach (ctrEditTiming ctr in TimingControls) { Engine.Timings time = (Engine.Timings)Convert.ToInt32(ctr.Tag); ctr.Visible = (timings & time) > 0; ctr.Value = engine.ConfiguredTiming(time); } ResumeLayout(); }