private void B_Verify_Click(object sender, EventArgs e)
        {
            splitToEvents.EventList = splitToEventList.Cast <SplitsToEvents.SplitEvent>().ToList();
            var result = splitToEvents.Verify(splitStates);

            if (result != "")
            {
                MessageBox.Show("Following issues were found:\n" + result, "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Everything seems fine", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        public SplitEventsEditorForm(LiveSplitState splitStates, SplitsToEvents splitToEvents)
        {
            this.splitStates   = splitStates;
            this.splitToEvents = splitToEvents;
            InitializeComponent();
            this.DialogResult = DialogResult.Cancel;
            var verficationResult = splitToEvents.Verify(splitStates);

            if (verficationResult != "")
            {
                //MessageBox.Show("Verification found following issues:\n" + verficationResult, "Notification", MessageBoxButtons.OK);
            }

            #region Setting up grid
            TimeFormatter = new ShortTimeFormatter();

            splitToEventList = new BindingList <ISplitEvent>(splitToEvents.EventList.Cast <ISplitEvent>().ToList())
            {
                AllowNew = false, AllowRemove = false
            };
            grid_SplitSettings.AutoGenerateColumns = false;
            grid_SplitSettings.AutoSize            = true;
            grid_SplitSettings.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
            grid_SplitSettings.DataSource        = splitToEventList;
            grid_SplitSettings.CellClick        += Grid_SplitSettings_CellClick;
            grid_SplitSettings.CellFormatting   += Grid_SplitSettings_CellFormatting;
            grid_SplitSettings.CellParsing      += Grid_SplitSettings_CellParsing;
            grid_SplitSettings.CellValidating   += Grid_SplitSettings_CellValidating;
            grid_SplitSettings.CellEndEdit      += Grid_SplitSettings_CellEndEdit;
            grid_SplitSettings.SelectionChanged += Grid_SplitSettings_SelectionChanged;

            var segmentNameColumn = new DataGridViewTextBoxColumn();
            segmentNameColumn.Name         = "Segment Name";
            segmentNameColumn.Width        = 350;
            segmentNameColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            segmentNameColumn.SortMode     = DataGridViewColumnSortMode.NotSortable;
            grid_SplitSettings.Columns.Add(segmentNameColumn);

            var eventTypeColumn = new DataGridViewComboBoxColumn();

            //Hide your children
            eventTypeColumn.Items.AddRange(Enum.GetValues(typeof(SplitEventType)).Cast <Enum>().Select(value => new
            {
                (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description
            }.Description).ToArray());
            eventTypeColumn.Name  = "Event Type";
            eventTypeColumn.Width = 200;
            eventTypeColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            eventTypeColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            eventTypeColumn.SortMode     = DataGridViewColumnSortMode.NotSortable;
            grid_SplitSettings.Columns.Add(eventTypeColumn);

            var eventDelayColumn = new DataGridViewTextBoxColumn();
            eventDelayColumn.Name  = "Event delay";
            eventDelayColumn.Width = 80;
            eventDelayColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            eventDelayColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            eventDelayColumn.SortMode     = DataGridViewColumnSortMode.NotSortable;
            grid_SplitSettings.Columns.Add(eventDelayColumn);

            var eventActionColumn = new DataGridViewButtonColumn();
            eventActionColumn.Name  = "Action";
            eventActionColumn.Width = 50;
            eventActionColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            eventActionColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            eventActionColumn.SortMode     = DataGridViewColumnSortMode.NotSortable;
            grid_SplitSettings.Columns.Add(eventActionColumn);

            grid_SplitSettings.EditingControlShowing += Grid_SplitSettings_EditingControlShowing;
            #endregion

            AddComboboxDataSources();
            CBox_OnRunReset.DataBindings.Add("SelectedValue", this.splitToEvents, "OnTimerResetBehaviour", false, DataSourceUpdateMode.OnPropertyChanged);
            CBox_RunCompletion.DataBindings.Add("SelectedValue", this.splitToEvents, "OnRunCompletion", false, DataSourceUpdateMode.OnPropertyChanged);
            CB_UsePBPrediction.DataBindings.Add("Checked", this.splitToEvents, "UsePBPrediction", false, DataSourceUpdateMode.OnPropertyChanged);
            CB_NotifyOfErrorsInChat.DataBindings.Add("Checked", this.splitToEvents, "NotifyOfErrorsInChat", false, DataSourceUpdateMode.OnPropertyChanged);
            TB_OnCompletionDelay.DataBindings.Add("Text", this, "EndSplitOffset");
        }