Add re-split shortcuts to UI

+ keep format/frame rate/video when merging current/original
This commit is contained in:
Nikolaj Olsson 2019-02-22 08:17:45 +01:00
parent c701804b3c
commit 9494add57a
6 changed files with 44 additions and 9 deletions

View File

@ -2041,6 +2041,8 @@ can edit in same subtitle file (collaboration)</Information>
<MainTextBoxSelectionToUpper>Selection to uppercase</MainTextBoxSelectionToUpper>
<MainTextBoxToggleAutoDuration>Toggle auto duration</MainTextBoxToggleAutoDuration>
<MainTextBoxAutoBreak>Auto break text</MainTextBoxAutoBreak>
<MainTextBoxAutoBreakFromPos>Break at first space from cursor position</MainTextBoxAutoBreakFromPos>
<MainTextBoxAutoBreakFromPosAndGoToNext>Break at first space from cursor position and go to next</MainTextBoxAutoBreakFromPosAndGoToNext>
<MainTextBoxUnbreak>Unbreak text</MainTextBoxUnbreak>
<MainFileSaveAll>Save all</MainFileSaveAll>
<Miscellaneous>Misc.</Miscellaneous>

View File

@ -2334,6 +2334,8 @@ can edit in same subtitle file (collaboration)",
MainTextBoxSelectionToUpper = "Selection to uppercase",
MainTextBoxToggleAutoDuration = "Toggle auto duration",
MainTextBoxAutoBreak = "Auto break text",
MainTextBoxAutoBreakFromPos = "Break at first space from cursor position",
MainTextBoxAutoBreakFromPosAndGoToNext = "Break at first space from cursor position and go to next",
MainTextBoxUnbreak = "Unbreak text",
MainFileSaveAll = "Save all",
Miscellaneous = "Misc.",

View File

@ -5545,6 +5545,12 @@ namespace Nikse.SubtitleEdit.Core
case "Settings/MainTextBoxAutoBreak":
language.Settings.MainTextBoxAutoBreak = reader.Value;
break;
case "Settings/MainTextBoxAutoBreakFromPos":
language.Settings.MainTextBoxAutoBreakFromPos = reader.Value;
break;
case "Settings/MainTextBoxAutoBreakFromPosAndGoToNext":
language.Settings.MainTextBoxAutoBreakFromPosAndGoToNext = reader.Value;
break;
case "Settings/MainTextBoxUnbreak":
language.Settings.MainTextBoxUnbreak = reader.Value;
break;

View File

@ -2207,6 +2207,8 @@
public string MainTextBoxSelectionToUpper { get; set; }
public string MainTextBoxToggleAutoDuration { get; set; }
public string MainTextBoxAutoBreak { get; set; }
public string MainTextBoxAutoBreakFromPos { get; set; }
public string MainTextBoxAutoBreakFromPosAndGoToNext { get; set; }
public string MainTextBoxUnbreak { get; set; }
public string MainFileSaveAll { get; set; }
public string Miscellaneous { get; set; }

View File

@ -9267,18 +9267,28 @@ namespace Nikse.SubtitleEdit.Forms
}
else if (e.KeyData == _mainTextBoxBreakAtCursorPosition)
{
textBoxListViewText.Text = Utilities.ReSplit(textBoxListViewText.Text, textBoxListViewText.SelectionStart);
var lines = textBoxListViewText.Text.SplitToLines();
if (lines.Count > 0)
var text = Utilities.ReSplit(textBoxListViewText.Text, textBoxListViewText.SelectionStart);
if (text != textBoxListViewText.Text)
{
textBoxListViewText.SelectionStart = lines[0].Length;
MakeHistoryForUndo(string.Format(_language.BeforeReplace, Configuration.Settings.Language.Settings.MainTextBoxAutoBreakFromPos));
textBoxListViewText.Text = text;
var lines = textBoxListViewText.Text.SplitToLines();
if (lines.Count > 0)
{
textBoxListViewText.SelectionStart = lines[0].Length;
}
}
e.SuppressKeyPress = true;
}
else if (e.KeyData == _mainTextBoxBreakAtCursorPositionAndGoToNext)
{
textBoxListViewText.Text = Utilities.ReSplit(textBoxListViewText.Text, textBoxListViewText.SelectionStart);
ButtonNextClick(null, null);
var text = Utilities.ReSplit(textBoxListViewText.Text, textBoxListViewText.SelectionStart);
if (text != textBoxListViewText.Text)
{
MakeHistoryForUndo(string.Format(_language.BeforeReplace, Configuration.Settings.Language.Settings.MainTextBoxAutoBreakFromPosAndGoToNext));
textBoxListViewText.Text = text;
ButtonNextClick(null, null);
}
e.SuppressKeyPress = true;
}
else if (e.KeyData == _mainTextBoxUnbreak)
@ -14203,6 +14213,10 @@ namespace Nikse.SubtitleEdit.Forms
if (ContinueNewOrExit())
{
var subtitle = new Subtitle();
subtitle.WasLoadedWithFrameNumbers = _subtitle.WasLoadedWithFrameNumbers;
var fr = CurrentFrameRate;
var format = GetCurrentSubtitleFormat();
var videoFileName = _videoFileName;
foreach (var p in _subtitle.Paragraphs)
{
var newP = new Paragraph(p);
@ -14216,12 +14230,21 @@ namespace Nikse.SubtitleEdit.Forms
}
RemoveAlternate(true);
FileNew();
SetCurrentFormat(format);
toolStripComboBoxFrameRate.Text = fr.ToString();
_subtitle = subtitle;
_subtitleListViewIndex = -1;
ShowSource();
SubtitleListview1.Fill(_subtitle, _subtitleAlternate);
SubtitleListview1.SelectIndexAndEnsureVisible(0, true);
if (!string.IsNullOrEmpty(videoFileName))
{
OpenVideo(videoFileName);
}
if (IsFramesRelevant && CurrentFrameRate > 0)
{
_subtitle.CalculateFrameNumbersFromTimeCodesNoCheck(CurrentFrameRate);
}
e.SuppressKeyPress = true;
}
}

View File

@ -1078,8 +1078,8 @@ namespace Nikse.SubtitleEdit.Forms
AddNode(textBoxNode, language.MainTextBoxSelectionToUpper, nameof(Configuration.Settings.Shortcuts.MainTextBoxSelectionToUpper));
AddNode(textBoxNode, language.MainTextBoxToggleAutoDuration, nameof(Configuration.Settings.Shortcuts.MainTextBoxToggleAutoDuration));
AddNode(textBoxNode, language.MainTextBoxAutoBreak, nameof(Configuration.Settings.Shortcuts.MainTextBoxAutoBreak));
//TODO: AddNode(textBoxNode, "Break at first space from cursor position", nameof(Configuration.Settings.Shortcuts.MainTextBoxBreakAtPosition));
//TODO: AddNode(textBoxNode, "Break at first space from cursor position and go to next", nameof(Configuration.Settings.Shortcuts.MainTextBoxBreakAtPositionAndGoToNext));
AddNode(textBoxNode, language.MainTextBoxAutoBreakFromPos, nameof(Configuration.Settings.Shortcuts.MainTextBoxBreakAtPosition));
AddNode(textBoxNode, "Break at first space from cursor position and go to next", nameof(Configuration.Settings.Shortcuts.MainTextBoxBreakAtPositionAndGoToNext));
AddNode(textBoxNode, language.MainTextBoxUnbreak, nameof(Configuration.Settings.Shortcuts.MainTextBoxUnbreak));
if (textBoxNode.Nodes.Count > 0)
{