private void importTimeCodesToolStripMenuItem_Click(object sender, EventArgs e) { if (_subtitle.Paragraphs.Count < 1) { return; } openFileDialog1.Title = Configuration.Settings.Language.General.OpenSubtitle; openFileDialog1.FileName = string.Empty; openFileDialog1.Filter = UiUtil.SubtitleExtensionFilter.Value; if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { var timeCodeSubtitle = new Subtitle(); SubtitleFormat format = null; if (openFileDialog1.FileName.EndsWith(".sup", StringComparison.OrdinalIgnoreCase) && FileUtil.IsBluRaySup(openFileDialog1.FileName)) { var log = new StringBuilder(); var subtitles = BluRaySupParser.ParseBluRaySup(openFileDialog1.FileName, log); if (subtitles.Count > 0) { foreach (var sup in subtitles) { timeCodeSubtitle.Paragraphs.Add(new Paragraph(sup.StartTimeCode, sup.EndTimeCode, string.Empty)); } format = new SubRip(); // just to set format to something } } if (format == null) { format = timeCodeSubtitle.LoadSubtitle(openFileDialog1.FileName, out var encoding, null); } if (format == null) { var formats = SubtitleFormat.GetBinaryFormats(true).Union(SubtitleFormat.GetTextOtherFormats()).Union(new SubtitleFormat[] { new TimeCodesOnly1(), new TimeCodesOnly2() }).ToArray(); format = SubtitleFormat.LoadSubtitleFromFile(formats, openFileDialog1.FileName, timeCodeSubtitle); } if (format == null) { return; } if (timeCodeSubtitle.Paragraphs.Count != _subtitle.Paragraphs.Count) { var text = string.Format(Configuration.Settings.Language.Main.ImportTimeCodesDifferentNumberOfLinesWarning, timeCodeSubtitle.Paragraphs.Count, _subtitle.Paragraphs.Count); if (MessageBox.Show(this, text, Text, MessageBoxButtons.YesNoCancel) != DialogResult.Yes) { return; } } int count = 0; for (int i = 0; i < timeCodeSubtitle.Paragraphs.Count; i++) { var existing = _subtitle.GetParagraphOrDefault(i); var newTimeCode = timeCodeSubtitle.GetParagraphOrDefault(i); if (existing == null || newTimeCode == null) { break; } existing.StartTime.TotalMilliseconds = newTimeCode.StartTime.TotalMilliseconds; existing.EndTime.TotalMilliseconds = newTimeCode.EndTime.TotalMilliseconds; count++; } MessageBox.Show(string.Format(Configuration.Settings.Language.Main.TimeCodeImportedFromXY, Path.GetFileName(openFileDialog1.FileName), count)); var idx = subtitleListView1.SelectedItems[0].Index; subtitleListView1.Fill(_subtitle); subtitleListView1.SelectIndexAndEnsureVisible(_subtitle.GetParagraphOrDefault(idx)); } }