public OpenWithManualChosenEncodingController(string fileName) : base("OpenWithManualChosenEncoding") { try { using (var file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { int length = (int)file.Length; if (length > 100000) { length = 100000; } file.Position = 0; _fileBuffer = new byte[length]; file.Read(_fileBuffer, 0, length); for (int i = 0; i < length; i++) { if (_fileBuffer[i] < 10) { _fileBuffer[i] = 32; } } } ChosenEcoding = LanguageAutoDetect.GetEncodingFromFile(fileName); } catch { ChosenEcoding = Encoding.UTF8; _fileBuffer = new byte[0]; } }
private static List <string> ReadLinesFromFile(string fileName, Encoding useThisEncoding, out Encoding encoding) { StreamReader sr; if (useThisEncoding != null) { sr = new StreamReader(fileName, useThisEncoding); } else { try { sr = new StreamReader(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName), true); } catch { var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); sr = new StreamReader(fs); } } encoding = sr.CurrentEncoding; var lines = sr.ReadToEnd().SplitToLines(); sr.Close(); return(lines); }
private void LoadTextFile(string fileName) { try { Encoding encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); textBoxText.Text = File.ReadAllText(fileName, encoding); SetVideoFileName(fileName); } catch (Exception ex) { MessageBox.Show(ex.Message); } GeneratePreview(); }
private void buttonImport_Click(object sender, EventArgs e) { openFileDialog1.Title = LanguageSettings.Current.Main.Menu.File.Open.RemoveChar('&'); openFileDialog1.FileName = string.Empty; openFileDialog1.Filter = AdvancedSubStationAlpha.NameOfFormat + "|*.ass|" + SubStationAlpha.NameOfFormat + "|*.ssa;"; openFileDialog1.FilterIndex = 0; openFileDialog1.Multiselect = false; var result = openFileDialog1.ShowDialog(this); if (result != DialogResult.OK || !File.Exists(openFileDialog1.FileName)) { return; } int skipCount = 0; var skipFiles = new List <string>(); var encoding = LanguageAutoDetect.GetEncodingFromFile(openFileDialog1.FileName); var newAttachments = ListAttachments(FileUtil.ReadAllLinesShared(openFileDialog1.FileName, encoding)); var first = true; foreach (var attachment in newAttachments) { if (_attachments.Any(p => p.FileName.ToLowerInvariant() == attachment.FileName.ToLowerInvariant())) { skipCount++; skipFiles.Add(attachment.FileName); continue; } _attachments.Add(attachment); AddToListView(attachment); var idx = listViewAttachments.Items.Count - 1; if (first) { listViewAttachments.SelectedIndices.Clear(); listViewAttachments.EnsureVisible(idx); listViewAttachments.Items[idx].Focused = true; first = false; } listViewAttachments.Items[idx].Selected = true; } UpdateAfterListViewChange(); if (skipCount > 0) { MessageBox.Show(string.Format(LanguageSettings.Current.AssaAttachments.FilesSkippedX, skipCount + Environment.NewLine + Environment.NewLine + string.Join(Environment.NewLine, skipFiles))); } }
private static string GetAllText(string fileName) { try { Encoding encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); var text = FileUtil.ReadAllTextShared(fileName, encoding); if (fileName.EndsWith(".html", StringComparison.OrdinalIgnoreCase) || fileName.EndsWith(".htm", StringComparison.OrdinalIgnoreCase)) { text = HtmlToPlainText(text); } return(text); } catch (Exception ex) { MessageBox.Show(ex.Message); return(string.Empty); } }
/// <summary> /// Load subtitle type of 'formats' from file. /// </summary> /// <param name="formats">List of possible formats</param> /// <param name="fileName">Name of subtitle file</param> /// <param name="subtitle">Subtitle to load file into</param> /// <returns>The format of the file, null of not format match found</returns> public static SubtitleFormat LoadSubtitleFromFile(SubtitleFormat[] formats, string fileName, Subtitle subtitle) { if (formats == null || formats.Length == 0 || string.IsNullOrEmpty(fileName)) { return null; } var list = new List<string>(File.ReadAllLines(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName))); foreach (var subtitleFormat in formats) { if (subtitleFormat.IsMine(list, fileName)) { subtitleFormat.LoadSubtitle(subtitle, list, fileName); return subtitleFormat; } } return null; }
private void LoadTextFile(string fileName) { try { var res = LoadFromMatroskaChapterFile(fileName); if (!string.IsNullOrEmpty(res)) { textBoxText.Text = res; radioButtonHHMMSSMS.Checked = true; return; } var encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); string s = File.ReadAllText(fileName, encoding).Trim(); if (s.Contains('.')) { radioButtonSeconds.Checked = true; } if (s.Contains('.') && s.Contains(':')) { radioButtonHHMMSSMS.Checked = true; } if (!s.Contains(Environment.NewLine) && s.Contains(';')) { var sb = new StringBuilder(); foreach (string line in s.Split(';')) { if (!string.IsNullOrWhiteSpace(line)) { sb.AppendLine(line.Trim()); } } textBoxText.Text = sb.ToString(); } else { textBoxText.Text = s; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void LoadTextFile(string fileName) { try { SubtitleListview1.Items.Clear(); Encoding encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); textBoxText.Text = File.ReadAllText(fileName, encoding); // check for RTF file if (fileName.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase) && !textBoxText.Text.TrimStart().StartsWith("{\\rtf")) { using (var rtb = new RichTextBox()) { rtb.Rtf = textBoxText.Text; textBoxText.Text = rtb.Text; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private bool LoadSingleFile(string fileName, Form parentForm) { groupBoxSplitting.Enabled = true; textBoxText.Enabled = true; Format = null; string ext = string.Empty; var extension = Path.GetExtension(fileName); if (extension != null) { ext = extension.ToLowerInvariant(); } var fd = new FinalDraftTemplate2(); var list = new List <string>(FileUtil.ReadAllLinesShared(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName))); bool isFinalDraft = fd.IsMine(list, fileName); if (ext == ".astx") { LoadAdobeStory(fileName); } else if (isFinalDraft) { return(LoadFinalDraftTemplate(fileName, parentForm ?? this)); } else if (ext == ".tx3g" && new Tx3GTextOnly().IsMine(null, fileName)) { LoadTx3G(fileName); } else if (ext == ".rtf" && FileUtil.IsRtf(fileName)) { LoadRtf(fileName); } else { LoadTextFile(fileName); } return(true); }
public static bool IsPlainText(string fileName) { var fileInfo = new FileInfo(fileName); if (fileInfo.Length < 20) { return(false); // too short to be plain text } if (fileInfo.Length > 5000000) { return(false); // too large to be plain text } var enc = LanguageAutoDetect.GetEncodingFromFile(fileName); var s = ReadAllTextShared(fileName, enc); int numberCount = 0; int letterCount = 0; int len = s.Length; for (int i = 0; i < len; i++) { var ch = s[i]; if (char.IsLetter(ch) || " -,.!?[]()\r\n".Contains(ch)) { letterCount++; } else if (char.IsControl(ch) && ch != '\t') // binary found { return(false); } else if (CharUtils.IsDigit(ch)) { numberCount++; } } if (len < 100) { return(numberCount < 5 && letterCount > 20); } var numberPatternMatches = new Regex(@"\d+[.:,; -]\d+").Matches(s); if (numberPatternMatches.Count > 30) { return(false); // looks like time codes } var largeBlocksOfLargeNumbers = new Regex(@"\d{3,8}").Matches(s); if (largeBlocksOfLargeNumbers.Count > 30) { return(false); // looks like time codes } if (len < 1000 && largeBlocksOfLargeNumbers.Count > 10) { return(false); // looks like time codes } var partsWithMoreThan100CharsOfNonNumbers = new Regex(@"[^\d]{150,100000}").Matches(s); if (partsWithMoreThan100CharsOfNonNumbers.Count > 10) { return(true); // looks like text } var numberThreshold = len * 0.015 + 25; var letterThreshold = len * 0.8; return(numberCount < numberThreshold && letterCount > letterThreshold); }
private void SortAndLoad() { JoinedFormat = new SubRip(); // default subtitle format string header = null; SubtitleFormat lastFormat = null; var subtitles = new List <Subtitle>(); for (int k = 0; k < _fileNamesToJoin.Count; k++) { string fileName = _fileNamesToJoin[k]; try { var sub = new Subtitle(); var format = sub.LoadSubtitle(fileName, out _, null); if (format == null) { foreach (var binaryFormat in SubtitleFormat.GetBinaryFormats(true)) { if (binaryFormat.IsMine(null, fileName)) { _fileNamesToJoin.Add(fileName); binaryFormat.LoadSubtitle(sub, null, fileName); format = binaryFormat; break; } } } if (format == null) { var encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); var lines = FileUtil.ReadAllTextShared(fileName, encoding).SplitToLines(); foreach (var f in SubtitleFormat.GetTextOtherFormats()) { if (f.IsMine(lines, fileName)) { _fileNamesToJoin.Add(fileName); f.LoadSubtitle(sub, lines, fileName); format = f; break; } } } if (format == null) { for (int j = k; j < _fileNamesToJoin.Count; j++) { _fileNamesToJoin.RemoveAt(j); } MessageBox.Show("Unkown subtitle format: " + fileName); return; } if (sub.Header != null) { header = sub.Header; } if (lastFormat == null || lastFormat.FriendlyName == format.FriendlyName) { lastFormat = format; } else { lastFormat = new SubRip(); // default subtitle format } subtitles.Add(sub); } catch (Exception exception) { for (int j = k; j < _fileNamesToJoin.Count; j++) { _fileNamesToJoin.RemoveAt(j); } MessageBox.Show(exception.Message); return; } } JoinedFormat = lastFormat; for (int outer = 0; outer < subtitles.Count; outer++) { for (int inner = 1; inner < subtitles.Count; inner++) { var a = subtitles[inner - 1]; var b = subtitles[inner]; if (a.Paragraphs.Count > 0 && b.Paragraphs.Count > 0 && a.Paragraphs[0].StartTime.TotalMilliseconds > b.Paragraphs[0].StartTime.TotalMilliseconds) { string t1 = _fileNamesToJoin[inner - 1]; _fileNamesToJoin[inner - 1] = _fileNamesToJoin[inner]; _fileNamesToJoin[inner] = t1; var t2 = subtitles[inner - 1]; subtitles[inner - 1] = subtitles[inner]; subtitles[inner] = t2; } } } listViewParts.BeginUpdate(); listViewParts.Items.Clear(); int i = 0; foreach (string fileName in _fileNamesToJoin) { var sub = subtitles[i]; var lvi = new ListViewItem($"{sub.Paragraphs.Count:#,###,###}"); if (sub.Paragraphs.Count > 0) { lvi.SubItems.Add(sub.Paragraphs[0].StartTime.ToString()); lvi.SubItems.Add(sub.Paragraphs[sub.Paragraphs.Count - 1].StartTime.ToString()); } else { lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); } lvi.SubItems.Add(fileName); listViewParts.Items.Add(lvi); i++; } listViewParts.EndUpdate(); JoinedSubtitle = new Subtitle(); if (JoinedFormat != null && JoinedFormat.FriendlyName != SubRip.NameOfFormat) { JoinedSubtitle.Header = header; } foreach (var sub in subtitles) { foreach (var p in sub.Paragraphs) { JoinedSubtitle.Paragraphs.Add(p); } } JoinedSubtitle.Renumber(); labelTotalLines.Text = string.Format(Configuration.Settings.Language.JoinSubtitles.TotalNumberOfLinesX, JoinedSubtitle.Paragraphs.Count); }
private void SortAndLoad() { JoinedFormat = new SubRip(); // default subtitle format string header = null; SubtitleFormat lastFormat = null; var subtitles = new List <Subtitle>(); for (int k = 0; k < _fileNamesToJoin.Count; k++) { string fileName = _fileNamesToJoin[k]; try { var sub = new Subtitle(); SubtitleFormat format; var lines = FileUtil.ReadAllLinesShared(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName)); if (lastFormat != null && lastFormat.IsMine(lines, fileName)) { format = lastFormat; format.LoadSubtitle(sub, lines, fileName); } format = sub.LoadSubtitle(fileName, out _, null); if (format == null) { if (lines.Count > 0 && lines.Count < 10 && lines[0].Trim() == "WEBVTT") { format = new WebVTT(); // empty WebVTT } } if (format == null) { foreach (var binaryFormat in SubtitleFormat.GetBinaryFormats(true)) { if (binaryFormat.IsMine(null, fileName)) { binaryFormat.LoadSubtitle(sub, null, fileName); format = binaryFormat; break; } } } if (format == null) { foreach (var f in SubtitleFormat.GetTextOtherFormats()) { if (f.IsMine(lines, fileName)) { f.LoadSubtitle(sub, lines, fileName); format = f; break; } } } if (format == null) { Revert(k, Configuration.Settings.Language.UnknownSubtitle.Title + Environment.NewLine + fileName); break; } if (sub.Header != null) { header = sub.Header; } lastFormat = lastFormat == null || lastFormat.FriendlyName == format.FriendlyName ? format : new SubRip(); subtitles.Add(sub); } catch (Exception exception) { Revert(k, exception.Message); return; } } JoinedFormat = lastFormat; if (!radioButtonJoinAddTime.Checked) { for (int outer = 0; outer < subtitles.Count; outer++) { for (int inner = 1; inner < subtitles.Count; inner++) { var a = subtitles[inner - 1]; var b = subtitles[inner]; if (a.Paragraphs.Count > 0 && b.Paragraphs.Count > 0 && a.Paragraphs[0].StartTime.TotalMilliseconds > b.Paragraphs[0].StartTime.TotalMilliseconds) { string t1 = _fileNamesToJoin[inner - 1]; _fileNamesToJoin[inner - 1] = _fileNamesToJoin[inner]; _fileNamesToJoin[inner] = t1; var t2 = subtitles[inner - 1]; subtitles[inner - 1] = subtitles[inner]; subtitles[inner] = t2; } } } } listViewParts.BeginUpdate(); listViewParts.Items.Clear(); int i = 0; foreach (string fileName in _fileNamesToJoin) { var sub = subtitles[i]; var lvi = new ListViewItem($"{sub.Paragraphs.Count:#,###,###}"); if (sub.Paragraphs.Count > 0) { lvi.SubItems.Add(sub.Paragraphs[0].StartTime.ToString()); lvi.SubItems.Add(sub.Paragraphs[sub.Paragraphs.Count - 1].StartTime.ToString()); } else { lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); } lvi.SubItems.Add(fileName); listViewParts.Items.Add(lvi); i++; } listViewParts.EndUpdate(); JoinedSubtitle = new Subtitle(); if (JoinedFormat != null && JoinedFormat.FriendlyName != SubRip.NameOfFormat) { JoinedSubtitle.Header = header; } var addTime = radioButtonJoinAddTime.Checked; foreach (var sub in subtitles) { double addMs = 0; if (addTime && JoinedSubtitle.Paragraphs.Count > 0) { addMs = JoinedSubtitle.Paragraphs.Last().EndTime.TotalMilliseconds + Convert.ToDouble(numericUpDownAddMs.Value); } foreach (var p in sub.Paragraphs) { p.StartTime.TotalMilliseconds += addMs; p.EndTime.TotalMilliseconds += addMs; JoinedSubtitle.Paragraphs.Add(p); } } JoinedSubtitle.Renumber(); labelTotalLines.Text = string.Format(Configuration.Settings.Language.JoinSubtitles.TotalNumberOfLinesX, JoinedSubtitle.Paragraphs.Count); }
public Idx(string fileName) : this(FileUtil.ReadAllLinesShared(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName)).ToList()) { }
private void SortAndLoad() { JoinedFormat = new SubRip(); // default subtitle format string header = null; SubtitleFormat lastFormat = null; var subtitles = new List <Subtitle>(); for (int k = 0; k < _fileNamesToJoin.Count; k++) { var fileName = _fileNamesToJoin[k]; try { var sub = new Subtitle(); SubtitleFormat format = null; if (fileName.EndsWith(".ismt", StringComparison.InvariantCultureIgnoreCase) || fileName.EndsWith(".mp4", StringComparison.InvariantCultureIgnoreCase) || fileName.EndsWith(".m4v", StringComparison.InvariantCultureIgnoreCase) || fileName.EndsWith(".3gp", StringComparison.InvariantCultureIgnoreCase)) { format = new IsmtDfxp(); if (format.IsMine(null, fileName)) { var s = new Subtitle(); format.LoadSubtitle(s, null, fileName); if (s.Paragraphs.Count > 0) { lastFormat = format; } } } var lines = FileUtil.ReadAllLinesShared(fileName, LanguageAutoDetect.GetEncodingFromFile(fileName)); if (lastFormat != null && lastFormat.IsMine(lines, fileName)) { format = lastFormat; format.LoadSubtitle(sub, lines, fileName); } if (sub.Paragraphs.Count == 0 || format == null) { format = sub.LoadSubtitle(fileName, out _, null); } if (format == null && lines.Count > 0 && lines.Count < 10 && lines[0].Trim() == "WEBVTT") { format = new WebVTT(); // empty WebVTT } if (format == null) { foreach (var binaryFormat in SubtitleFormat.GetBinaryFormats(true)) { if (binaryFormat.IsMine(null, fileName)) { binaryFormat.LoadSubtitle(sub, null, fileName); format = binaryFormat; break; } } } if (format == null) { foreach (var f in SubtitleFormat.GetTextOtherFormats()) { if (f.IsMine(lines, fileName)) { f.LoadSubtitle(sub, lines, fileName); format = f; break; } } } if (format == null) { Revert(k, LanguageSettings.Current.UnknownSubtitle.Title + Environment.NewLine + fileName); break; } if (sub.Header != null) { if (format.Name == AdvancedSubStationAlpha.NameOfFormat && header != null) { var oldPlayResX = AdvancedSubStationAlpha.GetTagFromHeader("PlayResX", "[Script Info]", header); var oldPlayResY = AdvancedSubStationAlpha.GetTagFromHeader("PlayResY", "[Script Info]", header); var newPlayResX = AdvancedSubStationAlpha.GetTagFromHeader("PlayResX", "[Script Info]", sub.Header); var newPlayResY = AdvancedSubStationAlpha.GetTagFromHeader("PlayResY", "[Script Info]", sub.Header); var stylesInHeader = AdvancedSubStationAlpha.GetStylesFromHeader(header); var styles = new List <SsaStyle>(); foreach (var styleName in stylesInHeader) { styles.Add(AdvancedSubStationAlpha.GetSsaStyle(styleName, header)); } foreach (var newStyle in AdvancedSubStationAlpha.GetStylesFromHeader(sub.Header)) { if (stylesInHeader.Any(p => p == newStyle)) { var styleToBeRenamed = AdvancedSubStationAlpha.GetSsaStyle(newStyle, sub.Header); var newName = styleToBeRenamed.Name + "_" + Guid.NewGuid(); foreach (var p in sub.Paragraphs.Where(p => p.Extra == styleToBeRenamed.Name)) { p.Extra = newName; } styleToBeRenamed.Name = newName; styles.Add(styleToBeRenamed); } else { styles.Add(AdvancedSubStationAlpha.GetSsaStyle(newStyle, sub.Header)); } } header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(header, styles); if (!string.IsNullOrEmpty(oldPlayResX) && string.IsNullOrEmpty(newPlayResX)) { header = AdvancedSubStationAlpha.AddTagToHeader("PlayResX", oldPlayResX, "[Script Info]", header); } if (!string.IsNullOrEmpty(oldPlayResY) && string.IsNullOrEmpty(newPlayResY)) { header = AdvancedSubStationAlpha.AddTagToHeader("PlayResY", oldPlayResY, "[Script Info]", header); } } else { header = sub.Header; } } lastFormat = lastFormat == null || lastFormat.FriendlyName == format.FriendlyName ? format : new SubRip(); subtitles.Add(sub); } catch (Exception exception) { Revert(k, exception.Message); return; } } JoinedFormat = lastFormat; if (!radioButtonJoinAddTime.Checked) { for (int outer = 0; outer < subtitles.Count; outer++) { for (int inner = 1; inner < subtitles.Count; inner++) { var a = subtitles[inner - 1]; var b = subtitles[inner]; if (a.Paragraphs.Count > 0 && b.Paragraphs.Count > 0 && a.Paragraphs[0].StartTime.TotalMilliseconds > b.Paragraphs[0].StartTime.TotalMilliseconds) { var t1 = _fileNamesToJoin[inner - 1]; _fileNamesToJoin[inner - 1] = _fileNamesToJoin[inner]; _fileNamesToJoin[inner] = t1; var t2 = subtitles[inner - 1]; subtitles[inner - 1] = subtitles[inner]; subtitles[inner] = t2; } } } } listViewParts.BeginUpdate(); listViewParts.Items.Clear(); int i = 0; foreach (var fileName in _fileNamesToJoin) { var sub = subtitles[i]; var lvi = new ListViewItem($"{sub.Paragraphs.Count:#,###,###}"); if (sub.Paragraphs.Count > 0) { lvi.SubItems.Add(sub.Paragraphs[0].StartTime.ToString()); lvi.SubItems.Add(sub.Paragraphs[sub.Paragraphs.Count - 1].StartTime.ToString()); } else { lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); } lvi.SubItems.Add(fileName); listViewParts.Items.Add(lvi); i++; } listViewParts.EndUpdate(); JoinedSubtitle = new Subtitle(); if (JoinedFormat != null && JoinedFormat.FriendlyName != SubRip.NameOfFormat) { JoinedSubtitle.Header = header; } var addTime = radioButtonJoinAddTime.Checked; foreach (var sub in subtitles) { double addMs = 0; if (addTime && JoinedSubtitle.Paragraphs.Count > 0) { addMs = JoinedSubtitle.Paragraphs.Last().EndTime.TotalMilliseconds + Convert.ToDouble(numericUpDownAddMs.Value); } foreach (var p in sub.Paragraphs) { p.StartTime.TotalMilliseconds += addMs; p.EndTime.TotalMilliseconds += addMs; JoinedSubtitle.Paragraphs.Add(p); } } JoinedSubtitle.Renumber(); labelTotalLines.Text = string.Format(LanguageSettings.Current.JoinSubtitles.TotalNumberOfLinesX, JoinedSubtitle.Paragraphs.Count); }
private void AddInputFile(string fileName) { foreach (ListViewItem lvi in listViewInputFiles.Items) { if (lvi.Text.Equals(fileName, StringComparison.OrdinalIgnoreCase)) { return; } } var fi = new FileInfo(fileName); var ext = fi.Extension.ToLowerInvariant(); var item = new ListViewItem(fileName); item.SubItems.Add(Utilities.FormatBytesToDisplayFileSize(fi.Length)); var sub = new Subtitle(); if (fi.Length < 500_000) { if (!FileUtil.IsBluRaySup(fileName) && !FileUtil.IsVobSub(fileName) && !((ext == ".mkv" || ext == ".mks") && FileUtil.IsMatroskaFile(fileName))) { var format = sub.LoadSubtitle(fileName, out _, null); if (format == null) { foreach (var f in SubtitleFormat.GetBinaryFormats(true)) { if (f.IsMine(null, fileName)) { f.LoadSubtitle(sub, null, fileName); format = f; break; } } } if (format == null) { var encoding = LanguageAutoDetect.GetEncodingFromFile(fileName); var lines = FileUtil.ReadAllTextShared(fileName, encoding).SplitToLines(); foreach (var f in SubtitleFormat.GetTextOtherFormats()) { if (f.IsMine(lines, fileName)) { f.LoadSubtitle(sub, lines, fileName); format = f; break; } } } if (format != null) { item.SubItems.Add(format.Name); listViewInputFiles.Items.Add(item); _subtitleList.Add(sub); } } } }