Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        /// <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;
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 /// <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;
     }
 }
Ejemplo n.º 5
0
 /// <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;
     }
 }
Ejemplo n.º 6
0
        /// <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;
            }
        }
Ejemplo n.º 7
0
        /// <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;
            }
        }