Refactoring, add "None, only trailing dots for pauses" style for NF

This commit is contained in:
Martijn van Berkel (Flitskikker) 2020-04-10 22:45:55 +02:00
parent 069cd2dbfa
commit 254575ab82
10 changed files with 107 additions and 103 deletions

View File

@ -1968,6 +1968,7 @@ can edit in same subtitle file (collaboration)</Information>
<DialogStyleDashSecondLineWithoutSpace>Dash second line without space</DialogStyleDashSecondLineWithoutSpace>
<ContinuationStyle>Continuation style</ContinuationStyle>
<ContinuationStyleNone>None</ContinuationStyleNone>
<ContinuationStyleNoneTrailingDots>None, dots for pauses (trailing only)</ContinuationStyleNoneTrailingDots>
<ContinuationStyleNoneLeadingTrailingDots>None, dots for pauses</ContinuationStyleNoneLeadingTrailingDots>
<ContinuationStyleOnlyTrailingDots>Dots (trailing only)</ContinuationStyleOnlyTrailingDots>
<ContinuationStyleLeadingTrailingDots>Dots</ContinuationStyleLeadingTrailingDots>

View File

@ -319,51 +319,7 @@ namespace Nikse.SubtitleEdit.Core
return DialogType.DashBothLinesWithSpace;
}
}
public static ContinuationStyle GetContinuationStyleFromIndex(int index)
{
switch (index)
{
case 1:
return ContinuationStyle.NoneLeadingTrailingDots;
case 2:
return ContinuationStyle.OnlyTrailingDots;
case 3:
return ContinuationStyle.LeadingTrailingDots;
case 4:
return ContinuationStyle.LeadingTrailingDash;
case 5:
return ContinuationStyle.LeadingTrailingDashDots;
default:
return ContinuationStyle.None;
}
}
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.";
switch (continuationStyle)
{
case ContinuationStyle.NoneLeadingTrailingDots:
return line1 + ",\n\n" + line2 + "\n\n" + line3 + "...\n\n" + linePause + "\n\n..." + line4;
case ContinuationStyle.OnlyTrailingDots:
return line1 + "...\n\n" + line2 + "...\n\n" + line3 + "...\n\n" + linePause + "\n\n" + line4;
case ContinuationStyle.LeadingTrailingDots:
return line1 + "...\n\n..." + line2 + "...\n\n..." + line3 + "...\n\n" + linePause + "\n\n..." + line4;
case ContinuationStyle.LeadingTrailingDash:
return line1 + " -\n\n- " + line2 + " -\n\n- " + line3 + " -\n\n" + linePause + "\n\n- " + line4;
case ContinuationStyle.LeadingTrailingDashDots:
return line1 + " -\n\n- " + line2 + " -\n\n- " + line3 + "...\n\n" + linePause + "\n\n..." + line4;
default:
return line1 + ",\n\n" + line2 + "\n\n" + line3 + "\n\n" + linePause + "\n\n" + line4;
}
}
private static string GetStartTags(string input)
{
var pre = new StringBuilder();

View File

@ -3,6 +3,7 @@
public enum ContinuationStyle
{
None,
NoneTrailingDots,
NoneLeadingTrailingDots,
OnlyTrailingDots,
LeadingTrailingDots,

View File

@ -2262,6 +2262,7 @@ can edit in same subtitle file (collaboration)",
DialogStyleDashSecondLineWithoutSpace = "Dash second line without space",
ContinuationStyle = "Continuation style",
ContinuationStyleNone = "None",
ContinuationStyleNoneTrailingDots = "None, dots for pauses (trailing only)",
ContinuationStyleNoneLeadingTrailingDots = "None, dots for pauses",
ContinuationStyleOnlyTrailingDots = "Dots (trailing only)",
ContinuationStyleLeadingTrailingDots = "Dots",

View File

@ -5326,6 +5326,9 @@ namespace Nikse.SubtitleEdit.Core
case "Settings/ContinuationStyleNone":
language.Settings.ContinuationStyleNone = reader.Value;
break;
case "Settings/ContinuationStyleNoneTrailingDots":
language.Settings.ContinuationStyleNoneTrailingDots = reader.Value;
break;
case "Settings/ContinuationStyleNoneLeadingTrailingDots":
language.Settings.ContinuationStyleNoneLeadingTrailingDots = reader.Value;
break;

View File

@ -2133,6 +2133,7 @@
public string DialogStyleDashSecondLineWithoutSpace { get; set; }
public string ContinuationStyle { get; set; }
public string ContinuationStyleNone { get; set; }
public string ContinuationStyleNoneTrailingDots { get; set; }
public string ContinuationStyleNoneLeadingTrailingDots { get; set; }
public string ContinuationStyleOnlyTrailingDots { get; set; }
public string ContinuationStyleLeadingTrailingDots { get; set; }

View File

@ -1020,7 +1020,7 @@ $HorzAlign = Center
CpsIncludesSpace = true,
MinimumMillisecondsBetweenLines = 84, // 2 frames for 23.976 fps videos
DialogStyle = DialogType.DashBothLinesWithoutSpace,
ContinuationStyle = ContinuationStyle.NoneLeadingTrailingDots
ContinuationStyle = ContinuationStyle.NoneTrailingDots
});
profiles.Add(new RulesProfile
{
@ -1036,7 +1036,7 @@ $HorzAlign = Center
CpsIncludesSpace = true,
MinimumMillisecondsBetweenLines = 84, // 2 frames for 23.976 fps videos
DialogStyle = DialogType.DashBothLinesWithSpace,
ContinuationStyle = ContinuationStyle.NoneLeadingTrailingDots
ContinuationStyle = ContinuationStyle.NoneTrailingDots
});
profiles.Add(new RulesProfile
{

View File

@ -2871,13 +2871,18 @@ namespace Nikse.SubtitleEdit.Core
// Remove single-char quotes from the ending
if (quotes.Contains(checkString[checkString.Length - 1]))
{
if (singleQuotes.Contains(checkString[checkString.Length - 1]))
if (checkString[checkString.Length - 1] == '\'' && checkString.EndsWith("in'") && Char.IsLetter(checkString[checkString.Length - 4]))
{
// Could be something like: nothin'
// TODO
// nothin' -- Don't remove
}
else if (checkString[checkString.Length - 1] == '\'' && (checkString.EndsWith("déj'") || checkString.EndsWith("bon ap'") || checkString.EndsWith("bon app'")))
{
// déj' -- Don't remove
}
else
{
checkString = checkString.Substring(0, checkString.Length - 1).Trim();
}
checkString = checkString.Substring(0, checkString.Length - 1).Trim();
}
// Remove double-char quotes from the ending
@ -3292,6 +3297,8 @@ namespace Nikse.SubtitleEdit.Core
{
switch (continuationStyle)
{
case ContinuationStyle.NoneTrailingDots:
return Configuration.Settings.Language.Settings.ContinuationStyleNoneTrailingDots;
case ContinuationStyle.NoneLeadingTrailingDots:
return Configuration.Settings.Language.Settings.ContinuationStyleNoneLeadingTrailingDots;
case ContinuationStyle.OnlyTrailingDots:
@ -3307,10 +3314,84 @@ namespace Nikse.SubtitleEdit.Core
}
}
public static int GetIndexFromContinuationStyle(ContinuationStyle continuationStyle)
{
switch (continuationStyle)
{
case ContinuationStyle.NoneTrailingDots:
return 1;
case ContinuationStyle.NoneLeadingTrailingDots:
return 2;
case ContinuationStyle.OnlyTrailingDots:
return 3;
case ContinuationStyle.LeadingTrailingDots:
return 4;
case ContinuationStyle.LeadingTrailingDash:
return 5;
case ContinuationStyle.LeadingTrailingDashDots:
return 6;
default:
return 0;
}
}
public static ContinuationStyle GetContinuationStyleFromIndex(int index)
{
switch (index)
{
case 1:
return ContinuationStyle.NoneTrailingDots;
case 2:
return ContinuationStyle.NoneLeadingTrailingDots;
case 3:
return ContinuationStyle.OnlyTrailingDots;
case 4:
return ContinuationStyle.LeadingTrailingDots;
case 5:
return ContinuationStyle.LeadingTrailingDash;
case 6:
return ContinuationStyle.LeadingTrailingDashDots;
default:
return ContinuationStyle.None;
}
}
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 profile = GetContinuationProfile(continuationStyle);
return AddSuffixIfNeeded(line1, profile, false) + "\n\n"
+ AddSuffixIfNeeded(AddPrefixIfNeeded(line2, profile, false), profile, false) + "\n\n"
+ AddSuffixIfNeeded(AddPrefixIfNeeded(line3, profile, false), profile, true) + "\n\n"
+ linePause + "\n\n"
+ AddPrefixIfNeeded(line4, profile, false);
}
public static ContinuationProfile GetContinuationProfile(ContinuationStyle continuationStyle)
{
switch (continuationStyle)
{
case ContinuationStyle.NoneTrailingDots:
return new ContinuationProfile
{
Suffix = "",
SuffixAddSpace = false,
SuffixReplaceComma = false,
Prefix = "",
PrefixAddSpace = false,
UseDifferentStyleGap = true,
GapSuffix = "...",
GapSuffixAddSpace = false,
GapSuffixReplaceComma = true,
GapPrefix = "",
GapPrefixAddSpace = false
};
case ContinuationStyle.NoneLeadingTrailingDots:
return new ContinuationProfile
{

View File

@ -998,6 +998,7 @@ namespace Nikse.SubtitleEdit.Forms
{
comboBoxContinuationStyle.Items.Clear();
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNone);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNoneTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNoneLeadingTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleOnlyTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleLeadingTrailingDots);
@ -1005,28 +1006,8 @@ namespace Nikse.SubtitleEdit.Forms
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleLeadingTrailingDashDots);
comboBoxContinuationStyle.SelectedIndex = 0;
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, DialogSplitMerge.GetContinuationStylePreview(continuationStyle));
switch (continuationStyle)
{
case ContinuationStyle.None:
comboBoxContinuationStyle.SelectedIndex = 0;
break;
case ContinuationStyle.NoneLeadingTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 1;
break;
case ContinuationStyle.OnlyTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 2;
break;
case ContinuationStyle.LeadingTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 3;
break;
case ContinuationStyle.LeadingTrailingDash:
comboBoxContinuationStyle.SelectedIndex = 4;
break;
case ContinuationStyle.LeadingTrailingDashDots:
comboBoxContinuationStyle.SelectedIndex = 5;
break;
}
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(continuationStyle));
comboBoxContinuationStyle.SelectedIndex = ContinuationUtilities.GetIndexFromContinuationStyle(continuationStyle);
}
private Guid _oldProfileId = Guid.Empty;
@ -1733,7 +1714,7 @@ namespace Nikse.SubtitleEdit.Forms
}
gs.DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
gs.ContinuationStyle = DialogSplitMerge.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
gs.ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
toolsSettings.MusicSymbol = comboBoxToolsMusicSymbol.SelectedItem.ToString();
toolsSettings.MusicSymbolReplace = textBoxMusicSymbolsToReplace.Text;
@ -3231,10 +3212,10 @@ namespace Nikse.SubtitleEdit.Forms
_rulesProfiles[idx].CpsIncludesSpace = checkBoxCpsIncludeWhiteSpace.Checked;
_rulesProfiles[idx].MergeLinesShorterThan = comboBoxMergeShortLineLength.SelectedIndex + 5;
_rulesProfiles[idx].DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
_rulesProfiles[idx].ContinuationStyle = DialogSplitMerge.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
_rulesProfiles[idx].ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, DialogSplitMerge.GetContinuationStylePreview(_rulesProfiles[idx].ContinuationStyle));
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(_rulesProfiles[idx].ContinuationStyle));
}
private void checkBoxToolsBreakByPixelWidth_CheckedChanged(object sender, EventArgs e)

View File

@ -196,11 +196,11 @@ namespace Nikse.SubtitleEdit.Forms
RulesProfiles[idx].CpsIncludesSpace = checkBoxCpsIncludeWhiteSpace.Checked;
RulesProfiles[idx].MergeLinesShorterThan = comboBoxMergeShortLineLength.SelectedIndex + 10;
RulesProfiles[idx].DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
RulesProfiles[idx].ContinuationStyle = DialogSplitMerge.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
RulesProfiles[idx].ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
UpdateRulesProfilesLine(idx);
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, DialogSplitMerge.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));
}
private void listViewProfiles_SelectedIndexChanged(object sender, EventArgs e)
@ -286,6 +286,7 @@ namespace Nikse.SubtitleEdit.Forms
comboBoxContinuationStyle.Items.Clear();
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNone);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNoneTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleNoneLeadingTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleOnlyTrailingDots);
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleLeadingTrailingDots);
@ -293,30 +294,8 @@ namespace Nikse.SubtitleEdit.Forms
comboBoxContinuationStyle.Items.Add(Configuration.Settings.Language.Settings.ContinuationStyleLeadingTrailingDashDots);
comboBoxContinuationStyle.SelectedIndex = 0;
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, DialogSplitMerge.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));
switch (RulesProfiles[idx].ContinuationStyle)
{
case ContinuationStyle.None:
comboBoxContinuationStyle.SelectedIndex = 0;
break;
case ContinuationStyle.NoneLeadingTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 1;
break;
case ContinuationStyle.OnlyTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 2;
break;
case ContinuationStyle.LeadingTrailingDots:
comboBoxContinuationStyle.SelectedIndex = 3;
break;
case ContinuationStyle.LeadingTrailingDash:
comboBoxContinuationStyle.SelectedIndex = 4;
break;
case ContinuationStyle.LeadingTrailingDashDots:
comboBoxContinuationStyle.SelectedIndex = 5;
break;
default:
throw new ArgumentOutOfRangeException();
}
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(RulesProfiles[idx].ContinuationStyle));
comboBoxContinuationStyle.SelectedIndex = ContinuationUtilities.GetIndexFromContinuationStyle(RulesProfiles[idx].ContinuationStyle);
_editOn = oldEditOn;
}