/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: _paragraphs = _paragraphs.OrderBy(p => p.Number).ThenBy(p => p.StartTime.TotalMilliseconds).ToList(); break; case SubtitleSortCriteria.StartTime: _paragraphs = _paragraphs.OrderBy(p => p.StartTime.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.EndTime: _paragraphs = _paragraphs.OrderBy(p => p.EndTime.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Duration: _paragraphs = _paragraphs.OrderBy(p => p.Duration.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Text: _paragraphs = _paragraphs.OrderBy(p => p.Text, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextMaxLineLength: _paragraphs = _paragraphs.OrderBy(p => Utilities.GetMaxLineLength(p.Text)).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextTotalLength: _paragraphs = _paragraphs.OrderBy(p => p.Text.Length).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextNumberOfLines: _paragraphs = _paragraphs.OrderBy(p => p.NumberOfLines).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextCharactersPerSeconds: _paragraphs = _paragraphs.OrderBy(Utilities.GetCharactersPerSecond).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.WordsPerMinute: _paragraphs = _paragraphs.OrderBy(p => p.WordsPerMinute).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Style: _paragraphs = _paragraphs.OrderBy(p => p.Extra, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Actor: _paragraphs = _paragraphs.OrderBy(p => p.Actor, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; } }
/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: _paragraphs.Sort((p1, p2) => p1.Number.CompareTo(p2.Number)); break; case SubtitleSortCriteria.StartTime: _paragraphs.Sort((p1, p2) => p1.StartTime.TotalMilliseconds.CompareTo(p2.StartTime.TotalMilliseconds)); break; case SubtitleSortCriteria.EndTime: _paragraphs.Sort((p1, p2) => p1.EndTime.TotalMilliseconds.CompareTo(p2.EndTime.TotalMilliseconds)); break; case SubtitleSortCriteria.Duration: _paragraphs.Sort((p1, p2) => p1.Duration.TotalMilliseconds.CompareTo(p2.Duration.TotalMilliseconds)); break; case SubtitleSortCriteria.Text: _paragraphs.Sort((p1, p2) => string.Compare(p1.Text, p2.Text, StringComparison.Ordinal)); break; case SubtitleSortCriteria.TextMaxLineLength: _paragraphs.Sort((p1, p2) => Utilities.GetMaxLineLength(p1.Text).CompareTo(Utilities.GetMaxLineLength(p2.Text))); break; case SubtitleSortCriteria.TextTotalLength: _paragraphs.Sort((p1, p2) => p1.Text.Length.CompareTo(p2.Text.Length)); break; case SubtitleSortCriteria.TextNumberOfLines: _paragraphs.Sort((p1, p2) => p1.NumberOfLines.CompareTo(p2.NumberOfLines)); break; case SubtitleSortCriteria.TextCharactersPerSeconds: _paragraphs.Sort((p1, p2) => Utilities.GetCharactersPerSecond(p1).CompareTo(Utilities.GetCharactersPerSecond(p2))); break; case SubtitleSortCriteria.WordsPerMinute: _paragraphs.Sort((p1, p2) => p1.WordsPerMinute.CompareTo(p2.WordsPerMinute)); break; case SubtitleSortCriteria.Style: _paragraphs.Sort((p1, p2) => string.Compare(p1.Extra, p2.Extra, StringComparison.Ordinal)); break; } }
private void SortSubtitle(SubtitleSortCriteria subtitleSortCriteria, string description) { Paragraph firstSelectedParagraph = null; if (SubtitleListview1.SelectedItems.Count > 0) firstSelectedParagraph = _subtitle.Paragraphs[SubtitleListview1.SelectedItems[0].Index]; _subtitleListViewIndex = -1; MakeHistoryForUndo(string.Format(_language.BeforeSortX, description)); _subtitle.Sort(subtitleSortCriteria); if (descendingToolStripMenuItem.Checked) _subtitle.Paragraphs.Reverse(); ShowSource(); SubtitleListview1.Fill(_subtitle, _subtitleAlternate); SubtitleListview1.SelectIndexAndEnsureVisible(firstSelectedParagraph); ShowStatus(string.Format(_language.SortedByX, description)); }
/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: _paragraphs.Sort((p1, p2) => p1.Number.CompareTo(p2.Number)); break; case SubtitleSortCriteria.StartTime: _paragraphs.Sort((p1, p2) => p1.StartTime.TotalMilliseconds.CompareTo(p2.StartTime.TotalMilliseconds)); break; case SubtitleSortCriteria.EndTime: _paragraphs.Sort((p1, p2) => p1.EndTime.TotalMilliseconds.CompareTo(p2.EndTime.TotalMilliseconds)); break; case SubtitleSortCriteria.Duration: _paragraphs.Sort((p1, p2) => p1.Duration.TotalMilliseconds.CompareTo(p2.Duration.TotalMilliseconds)); break; case SubtitleSortCriteria.Text: _paragraphs.Sort((p1, p2) => string.Compare(p1.Text, p2.Text, StringComparison.Ordinal)); break; case SubtitleSortCriteria.TextMaxLineLength: _paragraphs.Sort((p1, p2) => Utilities.GetMaxLineLength(p1.Text).CompareTo(Utilities.GetMaxLineLength(p2.Text))); break; case SubtitleSortCriteria.TextTotalLength: _paragraphs.Sort((p1, p2) => p1.Text.Length.CompareTo(p2.Text.Length)); break; case SubtitleSortCriteria.TextNumberOfLines: _paragraphs.Sort((p1, p2) => p1.NumberOfLines.CompareTo(p2.NumberOfLines)); break; case SubtitleSortCriteria.TextCharactersPerSeconds: _paragraphs.Sort((p1, p2) => Utilities.GetCharactersPerSecond(p1).CompareTo(Utilities.GetCharactersPerSecond(p2))); break; case SubtitleSortCriteria.WordsPerMinute: _paragraphs.Sort((p1, p2) => p1.WordsPerMinute.CompareTo(p2.WordsPerMinute)); break; case SubtitleSortCriteria.Style: _paragraphs.Sort((p1, p2) => string.Compare(p1.Extra, p2.Extra, StringComparison.Ordinal)); break; } }
/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.Number.CompareTo(p2.Number); }); break; case SubtitleSortCriteria.StartTime: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.StartTime.TotalMilliseconds.CompareTo(p2.StartTime.TotalMilliseconds); }); break; case SubtitleSortCriteria.EndTime: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.EndTime.TotalMilliseconds.CompareTo(p2.EndTime.TotalMilliseconds); }); break; case SubtitleSortCriteria.Duration: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.Duration.TotalMilliseconds.CompareTo(p2.Duration.TotalMilliseconds); }); break; case SubtitleSortCriteria.Text: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.Text.CompareTo(p2.Text); }); break; case SubtitleSortCriteria.TextMaxLineLength: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return Utilities.GetMaxLineLength(p1.Text).CompareTo(Utilities.GetMaxLineLength(p2.Text)); }); break; case SubtitleSortCriteria.TextTotalLength: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.Text.Length.CompareTo(p2.Text.Length); }); break; case SubtitleSortCriteria.TextNumberOfLines: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.NumberOfLines.CompareTo(p2.NumberOfLines); }); break; case SubtitleSortCriteria.TextCharactersPerSeconds: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return Utilities.GetCharactersPerSecond(p1).CompareTo(Utilities.GetCharactersPerSecond(p2)); }); break; case SubtitleSortCriteria.WordsPerMinute: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return p1.WordsPerMinute.CompareTo(p2.WordsPerMinute); }); break; case SubtitleSortCriteria.Style: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { if (p1.Extra == null) return 1; return p1.Extra.CompareTo(p2.Extra); }); break; default: break; } }
/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.Number.CompareTo(p2.Number)); }); break; case SubtitleSortCriteria.StartTime: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.StartTime.TotalMilliseconds.CompareTo(p2.StartTime.TotalMilliseconds)); }); break; case SubtitleSortCriteria.EndTime: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.EndTime.TotalMilliseconds.CompareTo(p2.EndTime.TotalMilliseconds)); }); break; case SubtitleSortCriteria.Duration: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.Duration.TotalMilliseconds.CompareTo(p2.Duration.TotalMilliseconds)); }); break; case SubtitleSortCriteria.Text: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.Text.CompareTo(p2.Text)); }); break; case SubtitleSortCriteria.TextMaxLineLength: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(Utilities.GetMaxLineLength(p1.Text).CompareTo(Utilities.GetMaxLineLength(p2.Text))); }); break; case SubtitleSortCriteria.TextTotalLength: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.Text.Length.CompareTo(p2.Text.Length)); }); break; case SubtitleSortCriteria.TextNumberOfLines: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(p1.NumberOfLines.CompareTo(p2.NumberOfLines)); }); break; case SubtitleSortCriteria.TextCharactersPerSeconds: _paragraphs.Sort(delegate(Paragraph p1, Paragraph p2) { return(Utilities.GetCharactersPerSecond(p1).CompareTo(Utilities.GetCharactersPerSecond(p2))); }); break; default: break; } }
/// <summary> /// Sort subtitle paragraphs /// </summary> /// <param name="sortCriteria">Paragraph sort criteria</param> public void Sort(SubtitleSortCriteria sortCriteria) { switch (sortCriteria) { case SubtitleSortCriteria.Number: Paragraphs = Paragraphs.OrderBy(p => p.Number).ThenBy(p => p.StartTime.TotalMilliseconds).ToList(); break; case SubtitleSortCriteria.StartTime: Paragraphs = Paragraphs.OrderBy(p => p.StartTime.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.EndTime: Paragraphs = Paragraphs.OrderBy(p => p.EndTime.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Duration: Paragraphs = Paragraphs.OrderBy(p => p.Duration.TotalMilliseconds).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Gap: var lookupDictionary = new Dictionary <string, double>(); for (var index = 0; index < Paragraphs.Count; index++) { var paragraph = Paragraphs[index]; var next = GetParagraphOrDefault(index + 1); if (next == null) { lookupDictionary.Add(paragraph.Id, 100_000); } else { var gapMilliseconds = next.StartTime.TotalMilliseconds - paragraph.EndTime.TotalMilliseconds; lookupDictionary.Add(paragraph.Id, gapMilliseconds); } } Paragraphs = Paragraphs.OrderBy(p => lookupDictionary[p.Id]).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Text: Paragraphs = Paragraphs.OrderBy(p => p.Text, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextMaxLineLength: Paragraphs = Paragraphs.OrderBy(p => Utilities.GetMaxLineLength(p.Text)).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextTotalLength: Paragraphs = Paragraphs.OrderBy(p => p.Text.Length).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextNumberOfLines: Paragraphs = Paragraphs.OrderBy(p => p.NumberOfLines).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.TextCharactersPerSeconds: Paragraphs = Paragraphs.OrderBy(Utilities.GetCharactersPerSecond).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.WordsPerMinute: Paragraphs = Paragraphs.OrderBy(p => p.WordsPerMinute).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Style: Paragraphs = Paragraphs.OrderBy(p => p.Extra, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; case SubtitleSortCriteria.Actor: Paragraphs = Paragraphs.OrderBy(p => p.Actor, StringComparer.Ordinal).ThenBy(p => p.Number).ToList(); break; } }