コード例 #1
0
        protected override Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e)
        {
            var arrival = data.IsSelectedArrival;
            var isTime  = data.SelectedTextBox == null;
            int idx     = (arrival ? 1 : 2) + (isTime ? 2 : 0);
            int row     = view.SelectedRow;

            if (!e.Control)
            {
                idx++;
                if (idx > 4)
                {
                    idx = 1;
                    row++;
                }
            }
            else
            {
                idx--;
                if (idx < 1)
                {
                    idx = 4;
                    row--;
                }
            }

            return(new Point(row, idx));
        }
コード例 #2
0
        protected override void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival)
        {
            trapeztafelToggle.Checked = data.ArrDeps[sta].TrapeztafelHalt;
            requestToggle.Checked     = data.ArrDeps[sta].RequestStop || sta.RequestStop;

            trapeztafelToggle.Enabled = requestToggle.Enabled = arrival && !data.IsFirst(sta) && !sta.RequestStop;
            zlmButton.Enabled         = arrival ^ data.IsFirst(sta);
        }
コード例 #3
0
        protected void FormatCell(BaseTimetableDataElement data, Station sta, bool arrival, TextBox tb)
        {
            string val = tb.Text;

            if (string.IsNullOrEmpty(val))
            {
                data.SetError(sta, arrival, null);
                data.SetTime(sta, arrival, "0");
                return;
            }

            val = timeNormalizer.Normalize(val);
            bool error = true;

            if (val != null)
            {
                tb.Text = val;
                data.SetTime(sta, arrival, val);
                error = false;
            }
            data.SetError(sta, arrival, error ? tb.Text : null);
        }
コード例 #4
0
 protected abstract Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e);
コード例 #5
0
 protected abstract void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival);
コード例 #6
0
        public TimetableCellRenderProperties(Func <ArrDep, TimeEntry> time, Station sta, bool arrival, BaseTimetableDataElement data)
        {
            if (!initialized)
            {
                fb  = SystemFonts.Bold();
                fn  = SystemFonts.Default();
                fc  = SystemFonts.Cached(SystemFont.Default, null, FontDecoration.Underline);
                fbc = SystemFonts.Cached(SystemFont.Bold, null, FontDecoration.Underline);
                var errorHsl = Colors.Red.ToHSL();
                errorHsl.L *= 0.8f;
                errorColor  = errorHsl.ToColor();
                bgColor     = SystemColors.ControlBackground;
                textColor   = SystemColors.ControlText;
                initialized = true;
            }

            Background = bgColor;
            Font       = fn;

            var ardp = data.ArrDeps[sta];

            if (!data.HasError(sta, arrival))
            {
                Text = time(ardp) != default ? time(ardp).ToTimeString() : "";
            }
            else
            {
                Text = data.GetErrorText(sta, arrival);
            }

            var first = data.IsFirst(sta);

            if ((!arrival && data.IsLast(sta)) || (arrival && first))
            {
                ReadOnly   = true;
                Background = Colors.DarkGray;
            }
            else if (arrival ^ first)
            {
                if (first && ardp.TrapeztafelHalt)
                {
                    throw new Exception(T._("Die erste Station darf keinen Trapeztafelhalt beinhalten!"));
                }

                Background = ardp.TrapeztafelHalt ? Colors.LightGrey : bgColor;
                if (ardp.RequestStop)
                {
                    Font = fc;
                }
                if (!string.IsNullOrEmpty(ardp.Zuglaufmeldung) && !ardp.RequestStop)
                {
                    Font = fb;
                }
                if (!string.IsNullOrEmpty(ardp.Zuglaufmeldung) && ardp.RequestStop)
                {
                    Font = fbc;
                }
            }

            if (data.HasError(sta, arrival))
            {
                Background = errorColor;
            }
        }