private void ReloadFromSourceView() { if (_sourceViewChange) { SaveSubtitleListviewIndices(); if (!string.IsNullOrWhiteSpace(textBoxSource.Text)) { SubtitleFormat format = GetCurrentSubtitleFormat(); var list = textBoxSource.Lines.ToList(); format = new Subtitle().ReloadLoadSubtitle(list, null, format); if (format == null) { MessageBox.Show(_language.UnableToParseSourceView); return; } _sourceViewChange = false; MakeHistoryForUndo(_language.BeforeChangesMadeInSourceView); _subtitle.ReloadLoadSubtitle(list, null, format); if (format.IsFrameBased) _subtitle.CalculateTimeCodesFromFrameNumbers(CurrentFrameRate); int index = 0; foreach (object obj in comboBoxSubtitleFormats.Items) { if (obj.ToString() == format.FriendlyName) comboBoxSubtitleFormats.SelectedIndex = index; index++; } var formatType = format.GetType(); if (formatType == typeof(AdvancedSubStationAlpha) || formatType == typeof(SubStationAlpha)) { string errors = AdvancedSubStationAlpha.CheckForErrors(_subtitle.Header); if (!string.IsNullOrEmpty(errors)) MessageBox.Show(errors, Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (formatType == typeof(SubRip)) { string errors = (format as SubRip).Errors; if (!string.IsNullOrEmpty(errors)) MessageBox.Show(errors, Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (formatType == typeof(MicroDvd)) { string errors = (format as MicroDvd).Errors; if (!string.IsNullOrEmpty(errors)) MessageBox.Show(errors, Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (formatType == typeof(DCinemaSmpte2007)) { format.ToText(_subtitle, string.Empty); string errors = (format as DCinemaSmpte2007).Errors; if (!string.IsNullOrEmpty(errors)) MessageBox.Show(errors, Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (formatType == typeof(DCinemaSmpte2010)) { format.ToText(_subtitle, string.Empty); string errors = (format as DCinemaSmpte2010).Errors; if (!string.IsNullOrEmpty(errors)) MessageBox.Show(errors, Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { _sourceViewChange = false; MakeHistoryForUndo(_language.BeforeChangesMadeInSourceView); _sourceViewChange = false; _subtitle.Paragraphs.Clear(); } _subtitleListViewIndex = -1; SubtitleListview1.Fill(_subtitle, _subtitleAlternate); RestoreSubtitleListviewIndices(); } }