mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
Add "continuation style" "trailing ellipsis only" - thx Joel :)
This commit is contained in:
parent
62f3fc585d
commit
0c8e30b1b8
@ -1289,6 +1289,8 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
return 7;
|
||||
case ContinuationStyle.NoneEllipsisForPauses:
|
||||
return 8;
|
||||
case ContinuationStyle.OnlyTrailingEllipsis:
|
||||
return 9;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@ -1314,6 +1316,8 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
return ContinuationStyle.LeadingTrailingEllipsis;
|
||||
case 8:
|
||||
return ContinuationStyle.NoneEllipsisForPauses;
|
||||
case 9:
|
||||
return ContinuationStyle.OnlyTrailingEllipsis;
|
||||
default:
|
||||
return ContinuationStyle.None;
|
||||
}
|
||||
@ -1321,11 +1325,11 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
|
||||
public static string GetContinuationStylePreview(ContinuationStyle continuationStyle)
|
||||
{
|
||||
string line1 = "Lorem ipsum dolor sit amet\nconsectetur adipiscing elit,";
|
||||
string line2 = "donec eget turpis consequat\nturpis commodo hendrerit";
|
||||
string line3 = "praesent vel velit rutrum tellus\npharetra tristique vel non orci";
|
||||
string linePause = "(...)";
|
||||
string line4 = "mauris mollis consectetur nibh,\nnec congue est viverra quis.";
|
||||
var line1 = "Lorem ipsum dolor sit amet\nconsectetur adipiscing elit,";
|
||||
var line2 = "donec eget turpis consequat\nturpis commodo hendrerit";
|
||||
var line3 = "praesent vel velit rutrum tellus\npharetra tristique vel non orci";
|
||||
var linePause = "(...)";
|
||||
var line4 = "mauris mollis consectetur nibh,\nnec congue est viverra quis.";
|
||||
|
||||
var profile = GetContinuationProfile(continuationStyle);
|
||||
|
||||
@ -1452,6 +1456,17 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
GapPrefix = "...",
|
||||
GapPrefixAddSpace = false
|
||||
};
|
||||
case ContinuationStyle.OnlyTrailingEllipsis:
|
||||
return new ContinuationProfile
|
||||
{
|
||||
Suffix = "…",
|
||||
SuffixApplyIfComma = true,
|
||||
SuffixAddSpace = false,
|
||||
SuffixReplaceComma = true,
|
||||
Prefix = "",
|
||||
PrefixAddSpace = false,
|
||||
UseDifferentStyleGap = false
|
||||
};
|
||||
default:
|
||||
return new ContinuationProfile
|
||||
{
|
||||
|
@ -11,5 +11,6 @@
|
||||
LeadingTrailingEllipsis,
|
||||
LeadingTrailingDash,
|
||||
LeadingTrailingDashDots,
|
||||
OnlyTrailingEllipsis,
|
||||
}
|
||||
}
|
||||
|
@ -47,12 +47,12 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
|
||||
}
|
||||
}
|
||||
|
||||
int minGapMs = ContinuationUtilities.GetMinimumGapMs();
|
||||
var minGapMs = ContinuationUtilities.GetMinimumGapMs();
|
||||
|
||||
bool inSentence = false;
|
||||
var inSentence = false;
|
||||
bool? inItalicSentence = null;
|
||||
|
||||
for (int i = 0; i < subtitle.Paragraphs.Count - 1; i++)
|
||||
for (var i = 0; i < subtitle.Paragraphs.Count - 1; i++)
|
||||
{
|
||||
var p = subtitle.Paragraphs[i];
|
||||
var pNext = subtitle.Paragraphs[i + 1];
|
||||
@ -64,7 +64,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
|
||||
var shouldProcess = true;
|
||||
|
||||
// Detect gap
|
||||
bool gap = pNext.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds >= minGapMs;
|
||||
var gap = pNext.StartTime.TotalMilliseconds - p.EndTime.TotalMilliseconds >= minGapMs;
|
||||
|
||||
// Convert for Arabic
|
||||
if (callbacks.Language == "ar")
|
||||
@ -136,7 +136,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
|
||||
var textNextWithoutPrefix = ContinuationUtilities.SanitizeString(oldTextNextWithoutPrefix, true);
|
||||
|
||||
// Get last word of this paragraph
|
||||
string lastWord = ContinuationUtilities.GetLastWord(text);
|
||||
var lastWord = ContinuationUtilities.GetLastWord(text);
|
||||
|
||||
|
||||
// If ends with dots (possible interruptions), or nothing, check if next sentence is new sentence, otherwise don't check by default
|
||||
@ -169,7 +169,7 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
|
||||
// and profile states to NOT replace comma,
|
||||
// and next sentence starts with conjunction,
|
||||
// try to re-add comma
|
||||
bool addComma = lastWord.EndsWith(",") || HasSuffix(text)
|
||||
var addComma = lastWord.EndsWith(",") || HasSuffix(text)
|
||||
&& (gap ? !_continuationProfile.GapSuffixReplaceComma : !_continuationProfile.SuffixReplaceComma)
|
||||
&& ContinuationUtilities.StartsWithConjunction(textNextWithoutPrefix, callbacks.Language);
|
||||
|
||||
|
@ -731,17 +731,17 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_ocrFixEngine = new OcrFixEngine(_ocrFixEngineLanguage, null, this);
|
||||
}
|
||||
|
||||
string fixAction = _language.FixCommonOcrErrors;
|
||||
int noOfFixes = 0;
|
||||
string lastLine = string.Empty;
|
||||
for (int i = 0; i < Subtitle.Paragraphs.Count; i++)
|
||||
var fixAction = _language.FixCommonOcrErrors;
|
||||
var noOfFixes = 0;
|
||||
var lastLine = string.Empty;
|
||||
for (var i = 0; i < Subtitle.Paragraphs.Count; i++)
|
||||
{
|
||||
var p = Subtitle.Paragraphs[i];
|
||||
string text = _ocrFixEngine.FixOcrErrors(p.Text, i, lastLine, false, OcrFixEngine.AutoGuessLevel.Cautious);
|
||||
var text = _ocrFixEngine.FixOcrErrors(p.Text, i, lastLine, false, OcrFixEngine.AutoGuessLevel.Cautious);
|
||||
lastLine = text;
|
||||
if (AllowFix(p, fixAction) && p.Text != text)
|
||||
{
|
||||
string oldText = p.Text;
|
||||
var oldText = p.Text;
|
||||
p.Text = text;
|
||||
noOfFixes++;
|
||||
AddFixToListView(p, fixAction, oldText, p.Text);
|
||||
|
@ -1195,6 +1195,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDashDots);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingEllipsis);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleOnlyTrailingEllipsis);
|
||||
comboBoxContinuationStyle.SelectedIndex = 0;
|
||||
toolTipContinuationPreview.RemoveAll();
|
||||
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(continuationStyle));
|
||||
|
@ -329,6 +329,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDots);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDash);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingDashDots);
|
||||
comboBoxContinuationStyle.Items.Add(LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis);
|
||||
comboBoxContinuationStyle.SelectedIndex = 0;
|
||||
toolTipContinuationPreview.RemoveAll();
|
||||
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));
|
||||
|
@ -2603,6 +2603,7 @@ can edit in same subtitle file (collaboration)",
|
||||
ContinuationStyleNoneLeadingTrailingDots = "None, dots for pauses",
|
||||
ContinuationStyleNoneTrailingEllipsis = "None, ellipsis for pauses",
|
||||
ContinuationStyleOnlyTrailingDots = "Dots (trailing only)",
|
||||
ContinuationStyleOnlyTrailingEllipsis = "Ellipsis (trailing only)",
|
||||
ContinuationStyleLeadingTrailingDots = "Dots",
|
||||
ContinuationStyleLeadingTrailingEllipsis = "Ellipsis",
|
||||
ContinuationStyleLeadingTrailingDash = "Dash",
|
||||
|
@ -2449,6 +2449,7 @@
|
||||
public string ContinuationStyleLeadingTrailingDots { get; set; }
|
||||
public string ContinuationStyleLeadingTrailingEllipsis { get; set; }
|
||||
public string ContinuationStyleNoneTrailingEllipsis { get; set; }
|
||||
public string ContinuationStyleOnlyTrailingEllipsis { get; set; }
|
||||
public string ContinuationStyleLeadingTrailingDash { get; set; }
|
||||
public string ContinuationStyleLeadingTrailingDashDots { get; set; }
|
||||
public string CpsLineLengthStyle { get; set; }
|
||||
|
@ -15,6 +15,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using Nikse.SubtitleEdit.Core.Enums;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Logic.Ocr
|
||||
{
|
||||
@ -1176,42 +1177,55 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
|
||||
var st = new StrippableText(text);
|
||||
if (lastLine == null || !lastLine.EndsWith("...", StringComparison.Ordinal) && !EndsWithAbbreviation(lastLine, abbreviationList))
|
||||
{
|
||||
if (st.StrippedText.Length > 0 && !char.IsUpper(st.StrippedText[0]) && !st.Pre.EndsWith('[') && !st.Pre.EndsWith('(') &&
|
||||
var skip = lastLine != null &&
|
||||
(lastLine.EndsWith("...", StringComparison.Ordinal) || lastLine.EndsWith("…")) &&
|
||||
Configuration.Settings.General.ContinuationStyle == ContinuationStyle.OnlyTrailingDots;
|
||||
|
||||
if (!skip && lastLine != null &&
|
||||
(lastLine.EndsWith("...", StringComparison.Ordinal) || lastLine.EndsWith("…")) &&
|
||||
Configuration.Settings.General.ContinuationStyle == ContinuationStyle.OnlyTrailingEllipsis)
|
||||
{
|
||||
skip = true;
|
||||
}
|
||||
|
||||
if (!skip && HtmlUtil.StartsWithUrl(st.StrippedText))
|
||||
{
|
||||
skip = true;
|
||||
}
|
||||
|
||||
if (!skip && st.StrippedText.Length > 0 && !char.IsUpper(st.StrippedText[0]) && !st.Pre.EndsWith('[') && !st.Pre.EndsWith('(') &&
|
||||
!st.Pre.Contains("...", StringComparison.Ordinal) &&
|
||||
!st.Pre.Contains('…'))
|
||||
{
|
||||
if (!HtmlUtil.StartsWithUrl(st.StrippedText))
|
||||
var uppercaseLetter = char.ToUpper(st.StrippedText[0]);
|
||||
if (st.StrippedText.Length > 1 && uppercaseLetter == 'L' && (st.StrippedText[1] == ' ' || char.IsLower(st.StrippedText[1])))
|
||||
{
|
||||
var uppercaseLetter = char.ToUpper(st.StrippedText[0]);
|
||||
if (st.StrippedText.Length > 1 && uppercaseLetter == 'L' && (st.StrippedText[1] == ' ' || char.IsLower(st.StrippedText[1])))
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
if (st.StrippedText.Length == 1 && uppercaseLetter == 'L')
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("lo ", StringComparison.Ordinal) || st.StrippedText.Equals("lo.", StringComparison.Ordinal)) && _threeLetterIsoLanguageName.Equals("ita", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("k ", StringComparison.Ordinal) || st.StrippedText.StartsWith("m ", StringComparison.Ordinal) || st.StrippedText.StartsWith("n ", StringComparison.Ordinal) || st.StrippedText.StartsWith("r ", StringComparison.Ordinal) || st.StrippedText.StartsWith("s ", StringComparison.Ordinal) || st.StrippedText.StartsWith("t ", StringComparison.Ordinal)) &&
|
||||
st.Pre.EndsWith('\'') && _threeLetterIsoLanguageName.Equals("nld", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = st.StrippedText[0];
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("l-I'll ", StringComparison.Ordinal) || st.StrippedText.StartsWith("l-l'll ", StringComparison.Ordinal)) && _threeLetterIsoLanguageName.Equals("eng", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
st.StrippedText = "I-I" + st.StrippedText.Remove(0, 3);
|
||||
}
|
||||
|
||||
st.StrippedText = uppercaseLetter + st.StrippedText.Substring(1);
|
||||
text = st.Pre + st.StrippedText + st.Post;
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
if (st.StrippedText.Length == 1 && uppercaseLetter == 'L')
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("lo ", StringComparison.Ordinal) || st.StrippedText.Equals("lo.", StringComparison.Ordinal)) && _threeLetterIsoLanguageName.Equals("ita", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("k ", StringComparison.Ordinal) || st.StrippedText.StartsWith("m ", StringComparison.Ordinal) || st.StrippedText.StartsWith("n ", StringComparison.Ordinal) || st.StrippedText.StartsWith("r ", StringComparison.Ordinal) || st.StrippedText.StartsWith("s ", StringComparison.Ordinal) || st.StrippedText.StartsWith("t ", StringComparison.Ordinal)) &&
|
||||
st.Pre.EndsWith('\'') && _threeLetterIsoLanguageName.Equals("nld", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = st.StrippedText[0];
|
||||
}
|
||||
|
||||
if ((st.StrippedText.StartsWith("l-I'll ", StringComparison.Ordinal) || st.StrippedText.StartsWith("l-l'll ", StringComparison.Ordinal)) && _threeLetterIsoLanguageName.Equals("eng", StringComparison.Ordinal))
|
||||
{
|
||||
uppercaseLetter = 'I';
|
||||
st.StrippedText = "I-I" + st.StrippedText.Remove(0, 3);
|
||||
}
|
||||
|
||||
st.StrippedText = uppercaseLetter + st.StrippedText.Substring(1);
|
||||
text = st.Pre + st.StrippedText + st.Post;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1366,6 +1366,8 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
return LanguageSettings.Current.Settings.ContinuationStyleLeadingTrailingEllipsis;
|
||||
case ContinuationStyle.NoneEllipsisForPauses:
|
||||
return LanguageSettings.Current.Settings.ContinuationStyleNoneTrailingEllipsis;
|
||||
case ContinuationStyle.OnlyTrailingEllipsis:
|
||||
return LanguageSettings.Current.Settings.ContinuationStyleOnlyTrailingEllipsis;
|
||||
default:
|
||||
return LanguageSettings.Current.Settings.ContinuationStyleNone;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user