void DoThreadWork(object sender, DoWorkEventArgs e)
        {
            ThreadDoWorkParameter p = (ThreadDoWorkParameter)e.Argument;
            if (p.FixCommonErrors)
            {
                try
                {
                    var fixCommonErrors = new FixCommonErrors();
                    fixCommonErrors.RunBatch(p.Subtitle, p.Format, p.Encoding, Configuration.Settings.Tools.BatchConvertLanguage);
                    p.Subtitle = fixCommonErrors.FixedSubtitle;

                    fixCommonErrors = new FixCommonErrors();
                    fixCommonErrors.RunBatch(p.Subtitle, p.Format, p.Encoding, Configuration.Settings.Tools.BatchConvertLanguage);
                    p.Subtitle = fixCommonErrors.FixedSubtitle;
                }
                catch (Exception exception)
                {
                    p.Error = "FCE ERROR: " + exception.Message;
                }
            }
            if (p.MultipleReplaceActive)
            {
                try
                {
                    var form = new MultipleReplace();
                    form.Initialize(p.Subtitle);
                    p.Subtitle = form.FixedSubtitle;
                }
                catch (Exception exception)
                {
                    p.Error = "MultipleReplace error: " + exception.Message;
                }
            }
            if (p.SplitLongLinesActive)
            {
                try
                {
                    p.Subtitle = Logic.Forms.SplitLongLinesHelper.SplitLongLinesInSubtitle(p.Subtitle, Configuration.Settings.General.SubtitleLineMaximumLength * 2, Configuration.Settings.General.SubtitleLineMaximumLength);
                }
                catch (Exception exception)
                {
                    p.Error = "AutoBalance error: " + exception.Message;
                }
            }
            if (p.AutoBalanceActive)
            {
                try
                {
                    foreach (Paragraph paragraph in p.Subtitle.Paragraphs)
                        paragraph.Text = Utilities.AutoBreakLine(paragraph.Text);
                }
                catch (Exception exception)
                {
                    p.Error = "AutoBalance error: " + exception.Message;
                }
            }
            if (p.SetMinDisplayTimeBetweenSubtitles)
            {
                double minumumMillisecondsBetweenLines = Configuration.Settings.General.MininumMillisecondsBetweenLines;
                for (int i = 0; i < p.Subtitle.Paragraphs.Count - 1; i++)
                {
                    Paragraph current = p.Subtitle.GetParagraphOrDefault(i);
                    Paragraph next = p.Subtitle.GetParagraphOrDefault(i + 1);
                    if (next.StartTime.TotalMilliseconds - current.EndTime.TotalMilliseconds < minumumMillisecondsBetweenLines)
                        current.EndTime.TotalMilliseconds = next.StartTime.TotalMilliseconds - minumumMillisecondsBetweenLines;
                }
            }
            e.Result = p;
        }
Exemple #2
0
        private void MultipleReplaceToolStripMenuItemClick(object sender, EventArgs e)
        {
            using (var multipleReplace = new MultipleReplace())
            {
                multipleReplace.Initialize(_subtitle);
                if (multipleReplace.ShowDialog(this) == DialogResult.OK)
                {
                    MakeHistoryForUndo(_language.BeforeMultipleReplace);
                    SaveSubtitleListviewIndices();

                    for (int i = 0; i < _subtitle.Paragraphs.Count; i++)
                    {
                        _subtitle.Paragraphs[i].Text = multipleReplace.FixedSubtitle.Paragraphs[i].Text;
                    }

                    _subtitle.RemoveParagraphsByIndices(multipleReplace.DeleteIndices);
                    _subtitle.Renumber();

                    SubtitleListview1.Fill(_subtitle, _subtitleAlternate);
                    RestoreSubtitleListviewIndices();
                    RefreshSelectedParagraph();
                    ShowSource();
                    ShowStatus(string.Format(_language.NumberOfLinesReplacedX, multipleReplace.FixCount));
                }
            }
        }
 private void buttonMultipleReplaceSettings_Click(object sender, EventArgs e)
 {
     var form = new MultipleReplace();
     form.Initialize(new Subtitle());
     form.ShowDialog(this);
 }