Пример #1
0
 /// <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;
 }
Пример #2
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);
        }
Пример #3
0
        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();
        }
Пример #4
0
        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;
            }
        }
Пример #5
0
 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;
     }
 }
Пример #6
0
        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();
        }
Пример #7
0
        /// <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();
        }