Allow "Typewriter effect" for multiple lines - thx andradadad :)

Fix #3843
This commit is contained in:
Nikolaj Olsson 2019-11-21 07:25:16 +01:00
parent 8a5e2a6711
commit aa67b7a9cf
2 changed files with 23 additions and 14 deletions

View File

@ -272,10 +272,10 @@ namespace Nikse.SubtitleEdit.Forms
return duration / text.Length;
}
private void MakeAnimation()
public void MakeAnimation()
{
TypewriterParagraphs = new List<Paragraph>();
double duration = _paragraph.Duration.TotalMilliseconds - ((double)numericUpDownDelay.Value * TimeCode.BaseUnit);
double duration = _paragraph.Duration.TotalMilliseconds - (double)numericUpDownDelay.Value * TimeCode.BaseUnit;
double stepsLength = CalculateStepLength(_paragraph.Text, duration);
double startMilliseconds;

View File

@ -7484,7 +7484,6 @@ namespace Nikse.SubtitleEdit.Forms
mergeAfterToolStripMenuItem.Visible = false;
mergeBeforeToolStripMenuItem.Visible = false;
splitLineToolStripMenuItem.Visible = false;
typeEffectToolStripMenuItem.Visible = false;
toolStripMenuItemMergeDialog.Visible = true;
}
else if (SubtitleListview1.SelectedItems.Count >= 2)
@ -7496,7 +7495,6 @@ namespace Nikse.SubtitleEdit.Forms
splitLineToolStripMenuItem.Visible = false;
mergeAfterToolStripMenuItem.Visible = false;
mergeBeforeToolStripMenuItem.Visible = false;
typeEffectToolStripMenuItem.Visible = false;
toolStripSeparator7.Visible = false;
if (SubtitleListview1.SelectedItems.Count > 25)
@ -7527,7 +7525,6 @@ namespace Nikse.SubtitleEdit.Forms
if (formatType != typeof(SubRip))
{
karokeeEffectToolStripMenuItem.Visible = false;
toolStripSeparatorAdvancedFunctions.Visible = SubtitleListview1.SelectedItems.Count == 1 && noNetWorkSession;
}
}
@ -11364,19 +11361,31 @@ namespace Nikse.SubtitleEdit.Forms
if (typewriter.ShowDialog(this) == DialogResult.OK)
{
MakeHistoryForUndo(_language.BeforeTypeWriterEffect);
int lastSelectedIndex = SubtitleListview1.SelectedItems[0].Index;
int index = lastSelectedIndex;
_subtitle.Paragraphs.RemoveAt(index);
bool isframeBased = GetCurrentSubtitleFormat().IsFrameBased;
foreach (var p in typewriter.TypewriterParagraphs)
int lastSelectedIndex = SubtitleListview1.SelectedItems[0].Index;
int i = SubtitleListview1.SelectedItems.Count - 1;
while (i >= 0)
{
if (isframeBased)
var item = SubtitleListview1.SelectedItems[i];
var p = _subtitle.GetParagraphOrDefault(item.Index);
if (p != null)
{
p.CalculateFrameNumbersFromTimeCodes(CurrentFrameRate);
p.CalculateTimeCodesFromFrameNumbers(CurrentFrameRate);
typewriter.Initialize(p);
typewriter.MakeAnimation();
int index = item.Index;
_subtitle.Paragraphs.RemoveAt(index);
foreach (var tp in typewriter.TypewriterParagraphs)
{
if (isframeBased)
{
tp.CalculateFrameNumbersFromTimeCodes(CurrentFrameRate);
tp.CalculateTimeCodesFromFrameNumbers(CurrentFrameRate);
}
_subtitle.Paragraphs.Insert(index, tp);
index++;
}
}
_subtitle.Paragraphs.Insert(index, p);
index++;
i--;
}
_subtitle.Renumber();
_subtitleListViewIndex = -1;