More paste lin waveform

This commit is contained in:
Nikolaj Olsson 2019-01-12 23:20:36 +01:00
parent 568b0ba7e1
commit 45230b3dd2
2 changed files with 31 additions and 5 deletions

View File

@ -569,7 +569,7 @@ namespace Nikse.SubtitleEdit.Core
} }
} }
public void InsertParagraphInCorrectTimeOrder(Paragraph newParagraph) public int InsertParagraphInCorrectTimeOrder(Paragraph newParagraph)
{ {
for (int i = 0; i < Paragraphs.Count; i++) for (int i = 0; i < Paragraphs.Count; i++)
{ {
@ -577,10 +577,11 @@ namespace Nikse.SubtitleEdit.Core
if (newParagraph.StartTime.TotalMilliseconds < p.StartTime.TotalMilliseconds) if (newParagraph.StartTime.TotalMilliseconds < p.StartTime.TotalMilliseconds)
{ {
Paragraphs.Insert(i, newParagraph); Paragraphs.Insert(i, newParagraph);
return; return i;
} }
} }
Paragraphs.Add(newParagraph); Paragraphs.Add(newParagraph);
return Paragraphs.Count - 1;
} }
public Paragraph GetFirstParagrapOrDefaultByTime(double milliseconds) public Paragraph GetFirstParagrapOrDefaultByTime(double milliseconds)

View File

@ -668,7 +668,7 @@ namespace Nikse.SubtitleEdit.Forms
if (tmp.Paragraphs[0].StartTime.TotalMilliseconds > videoPositionInMilliseconds) if (tmp.Paragraphs[0].StartTime.TotalMilliseconds > videoPositionInMilliseconds)
{ {
var c = tmp.Paragraphs[0].StartTime.TotalMilliseconds - videoPositionInMilliseconds; var c = tmp.Paragraphs[0].StartTime.TotalMilliseconds - videoPositionInMilliseconds;
tmp.AddTimeToAllParagraphs(TimeSpan.FromMilliseconds(c)); tmp.AddTimeToAllParagraphs(TimeSpan.FromMilliseconds(-c));
} }
else else
{ {
@ -692,7 +692,33 @@ namespace Nikse.SubtitleEdit.Forms
if (tmp.Paragraphs.Count > 0) if (tmp.Paragraphs.Count > 0)
{ {
PasteInsertSubtitle(tmp); MakeHistoryForUndo(_language.BeforeInsertLine);
var selectIndices = new List<int>();
for (int i = 0; i < tmp.Paragraphs.Count; i++)
{
var p = tmp.Paragraphs[i];
var idx = _subtitle.InsertParagraphInCorrectTimeOrder(p);
selectIndices.Add(idx);
if (_subtitleAlternate != null && Configuration.Settings.General.AllowEditOfOriginalSubtitle && SubtitleListview1.IsAlternateTextColumnVisible)
{
var original = Utilities.GetOriginalParagraph(idx + i + 1, p, _subtitleAlternate.Paragraphs);
if (original == null)
{
_subtitleAlternate.InsertParagraphInCorrectTimeOrder(new Paragraph(string.Empty, p.StartTime.TotalMilliseconds, p.EndTime.TotalMilliseconds));
}
}
_subtitle.Renumber();
}
SubtitleListview1.Fill(_subtitle, _subtitleAlternate);
SubtitleListview1.BeginUpdate();
SubtitleListview1.SelectIndexAndEnsureVisible(selectIndices[0], true);
foreach (var selectIndex in selectIndices)
{
SubtitleListview1.Items[selectIndex].Selected = true;
}
SubtitleListview1.EndUpdate();
if (_subtitleListViewIndex >= 0) if (_subtitleListViewIndex >= 0)
{ {
UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText);
@ -719,7 +745,6 @@ namespace Nikse.SubtitleEdit.Forms
{ // inserting between two subtitle... with overlapping codes { // inserting between two subtitle... with overlapping codes
addMs = lastParagraph.EndTime.TotalMilliseconds - tmp.Paragraphs[0].StartTime.TotalMilliseconds + Configuration.Settings.General.MinimumMillisecondsBetweenLines; addMs = lastParagraph.EndTime.TotalMilliseconds - tmp.Paragraphs[0].StartTime.TotalMilliseconds + Configuration.Settings.General.MinimumMillisecondsBetweenLines;
} }
var selectIndices = new List<int>(); var selectIndices = new List<int>();
for (int i = 0; i < tmp.Paragraphs.Count; i++) for (int i = 0; i < tmp.Paragraphs.Count; i++)
{ {