Add more braces

This commit is contained in:
Nikolaj Olsson 2019-01-13 00:42:30 +01:00
parent a0d880add1
commit 08a6a45777
3 changed files with 127 additions and 26 deletions

View File

@ -23,16 +23,26 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
if (encoding.Equals(Encoding.UTF8))
{
if (letter == 'ı')
{
return 'I';
}
if (letter == 'i')
{
return 'İ';
}
}
else
{
if (letter == 'i')
{
return 'Ý';
}
if (letter == 'ý')
{
return 'I';
}
}
return letter;
}
@ -40,7 +50,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
public static string FixEllipsesStartHelper(string text)
{
if (string.IsNullOrEmpty(text) || text.Trim().Length < 4 || !(text.Contains("..", StringComparison.Ordinal) || text.Contains(". .", StringComparison.Ordinal)))
{
return text;
}
var pre = string.Empty;
if (text.StartsWith("<font ", StringComparison.Ordinal) && text.IndexOf('>', 5) >= 0)
@ -63,7 +75,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
int removeLength = 0;
while (removeLength + 1 < text.Length && (text[1 + removeLength] == '.' || text[1 + removeLength] == ' '))
{
removeLength++;
}
text = text.Remove(1, removeLength);
}
@ -84,14 +98,18 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
text = "<i>" + text.Substring(tag.Length);
while (text.StartsWith("<i>.", StringComparison.Ordinal) || text.StartsWith("<i> ", StringComparison.Ordinal))
{
text = "<i>" + text.Substring(4);
}
}
tag = "<i> ...";
if (text.StartsWith(tag, StringComparison.Ordinal))
{
text = "<i>" + text.Substring(tag.Length);
while (text.StartsWith("<i>.", StringComparison.Ordinal) || text.StartsWith("<i> ", StringComparison.Ordinal))
{
text = "<i>" + text.Substring(4, text.Length - 4);
}
}
tag = "- <i>...";
@ -99,14 +117,18 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
text = "- <i>" + text.Substring(tag.Length);
while (text.StartsWith("- <i>.", StringComparison.Ordinal))
{
text = "- <i>" + text.Substring(6);
}
}
tag = "- <i> ...";
if (text.StartsWith(tag, StringComparison.Ordinal))
{
text = "- <i>" + text.Substring(tag.Length);
while (text.StartsWith("- <i>.", StringComparison.Ordinal))
{
text = "- <i>" + text.Substring(6);
}
}
// Narrator:... Hello foo!
@ -116,7 +138,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
text = text.Replace(": ..", ": ");
while (text.Contains(": ."))
{
text = text.Replace(": .", ": ");
}
}
// <i>- ... Foo</i>
@ -135,7 +159,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
pre += text.Substring(0, index + 1);
if (pre.Length < 2)
{
return text;
}
text = text.Remove(0, index + 1).TrimStart();
text = FixEllipsesStartHelper(text);
@ -163,9 +189,13 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
if (char.IsLetter((part0[0])) || CharUtils.IsDigit(part0[0]))
{
if (text.Length > 3 && text[0] == '<' && text[2] == '>')
{
text = "<" + text[1] + ">" + "- " + text.Substring(3).TrimStart();
}
else
{
text = "- " + text;
}
}
}
}
@ -185,7 +215,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var secLine = HtmlUtil.RemoveHtmlTags(arr[1]).TrimStart();
var secLineTemp = HtmlUtil.RemoveHtmlTags(arrTemp[1]).TrimStart();
if (secLineTemp.StartsWith('-') && !secLine.StartsWith('-'))
{
text = temp;
}
}
}
else if (lineCount == 1)
@ -196,13 +228,18 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
var secLineTemp = HtmlUtil.RemoveHtmlTags(arrTemp[1]).TrimStart();
if (secLineTemp.StartsWith('-'))
{
text = temp;
}
}
else
{
int index = text.IndexOfAny(EndPlusDashListShort, StringComparison.Ordinal);
if (index < 0 && text.IndexOf("-- -", StringComparison.Ordinal) > 0)
{
index = text.IndexOf("-- -", StringComparison.Ordinal) + 1;
}
if (index > 0)
{
text = text.Remove(index + 1, 1).Insert(index + 1, Environment.NewLine);
@ -229,7 +266,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
if (isPrevEndOfLine && prevText.Length > 5 && prevText.EndsWith('.') &&
prevText[prevText.Length - 3] == '.' &&
char.IsLetter(prevText[prevText.Length - 2]))
{
isPrevEndOfLine = false;
}
return isPrevEndOfLine;
}
@ -256,10 +295,11 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var noTagparts = HtmlUtil.RemoveHtmlTags(text).SplitToLines();
if (noTagparts.Count == 2)
{
if (noTagparts[0].TrimStart().StartsWith('-') && noTagparts[1].Contains(": "))
remove = false;
if (noTagparts[1].TrimStart().StartsWith('-') && noTagparts[0].Contains(": "))
if (noTagparts[0].TrimStart().StartsWith('-') && noTagparts[1].Contains(": ") ||
noTagparts[1].TrimStart().StartsWith('-') && noTagparts[0].Contains(": "))
{
remove = false;
}
}
if (remove)
@ -278,8 +318,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
}
idx = text.IndexOf('-');
if (idx >= 0 && st.Pre.Length >= idx)
{
text = text.Remove(idx, 1).TrimStart();
}
text = RemoveSpacesBeginLine(text);
}
else
@ -345,7 +386,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
var closeIdx = text.IndexOf('>');
if (closeIdx > 6 && text[closeIdx + 1] == 0x20)
{
text = text.Remove(closeIdx + 1, 1);
}
}
return text;
}
@ -353,14 +396,18 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
public static string RemoveSpacesBeginLineAfterEllipses(string line)
{
if (line.StartsWith("... ", StringComparison.Ordinal))
{
line = line.Remove(3, 1);
}
if (line.Length > 6 && line.LineStartsWithHtmlTag(true)) // <i>... foobar
{
var idx = line.IndexOf('>') + 1;
var pre = line.Substring(0, idx);
line = line.Remove(0, idx).TrimStart();
if (line.StartsWith("... ", StringComparison.Ordinal))
{
line = line.Remove(3, 1);
}
line = pre + line;
}
if (line.LineStartsWithHtmlTag(false, true)) //<font color="#000000"> and <font>
@ -371,7 +418,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var fontTag = line.Substring(0, closeIdx + 1).TrimStart();
line = line.Substring(closeIdx + 1).TrimStart();
if (line.StartsWith("... ", StringComparison.Ordinal))
{
line = line.Remove("... ".Length - 1, 1);
}
line = fontTag + line;
}
}
@ -399,10 +448,11 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
var part0 = parts[0].TrimEnd().Trim('"');
bool doAdd = "!?.".Contains(part0[part0.Length - 1]) || language == "ko";
if (parts[0].TrimStart().StartsWith('-') && parts[1].Contains(':') && doAdd)
doAdd = false;
if (parts[1].TrimStart().StartsWith('-') && parts[0].Contains(':') && doAdd)
if (parts[0].TrimStart().StartsWith('-') && parts[1].Contains(':') && doAdd ||
parts[1].TrimStart().StartsWith('-') && parts[0].Contains(':') && doAdd)
{
doAdd = false;
}
if (doAdd)
{
@ -417,22 +467,34 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
// add dash in second line.
var originalParts = text.SplitToLines();
if (originalParts[1].LineStartsWithHtmlTag(true))
{
originalParts[1] = originalParts[1].Substring(0, 3) + "- " + originalParts[1].Remove(0, 3).TrimEnd();
}
else if (originalParts[1].StartsWith("{\\an", StringComparison.Ordinal) && originalParts[1].Length > 6 && originalParts[1][5] == '}')
{
originalParts[1] = originalParts[1].Insert(6, "- ");
}
else
{
originalParts[1] = "- " + originalParts[1].Trim();
}
text = originalParts[0] + Environment.NewLine + originalParts[1];
}
else
{
// add dash in first line.
if (text.LineStartsWithHtmlTag(true))
{
text = text.Substring(0, 3) + "- " + text.Remove(0, 3).TrimEnd();
}
else if (text.StartsWith("{\\an", StringComparison.Ordinal) && text.Length > 6 && text[5] == '}')
{
text = text.Insert(6, "- ");
}
else
{
text = "- " + text.Trim();
}
}
}
}
@ -471,7 +533,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
}
}
if (text.StartsWith(">>", StringComparison.Ordinal) && text.Length > 3)
{
text = text.TrimStart('>', ' ').TrimStart();
}
return post + text;
}
@ -480,7 +544,9 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
public static string FixShortLines(string text)
{
if (string.IsNullOrWhiteSpace(text) || !text.Contains(Environment.NewLine, StringComparison.Ordinal))
{
return text;
}
string s = HtmlUtil.RemoveHtmlTags(text, true);
if (s.Contains(Environment.NewLine) && s.Replace(Environment.NewLine, " ").Replace(" ", " ").Length < Configuration.Settings.Tools.MergeLinesShorterThan)

View File

@ -315,11 +315,8 @@ namespace Nikse.SubtitleEdit.Forms.Styles
int count = 0;
foreach (Paragraph p in subtitle.Paragraphs)
{
if (string.IsNullOrEmpty(p.Extra) && ssaStyle.Name.TrimStart('*') == "Default")
{
count++;
}
else if (p.Extra != null && ssaStyle.Name.TrimStart('*').Equals(p.Extra.TrimStart('*'), StringComparison.OrdinalIgnoreCase))
if (string.IsNullOrEmpty(p.Extra) && ssaStyle.Name.TrimStart('*') == "Default" ||
p.Extra != null && ssaStyle.Name.TrimStart('*').Equals(p.Extra.TrimStart('*'), StringComparison.OrdinalIgnoreCase))
{
count++;
}

View File

@ -32,7 +32,9 @@ namespace Nikse.SubtitleEdit.Forms.Styles
var xnsmgr = new XmlNamespaceManager(_xml.NameTable);
xnsmgr.AddNamespace("ttml", "http://www.w3.org/ns/ttml");
if (_xml.DocumentElement.SelectSingleNode("ttml:head", xnsmgr) == null)
{
_xml.LoadXml(new TimedText10().ToText(new Subtitle(), "tt")); // load default xml
}
}
catch
{
@ -47,7 +49,9 @@ namespace Nikse.SubtitleEdit.Forms.Styles
var xnsmgr = new XmlNamespaceManager(_xml.NameTable);
xnsmgr.AddNamespace("ttml", "http://www.w3.org/ns/ttml");
if (_xml.DocumentElement.SelectSingleNode("ttml:head", xnsmgr) == null)
{
_xml.LoadXml(new TimedText10().ToText(new Subtitle(), "tt")); // load default xml
}
}
catch
{
@ -59,26 +63,21 @@ namespace Nikse.SubtitleEdit.Forms.Styles
_xmlHead = _xml.DocumentElement.SelectSingleNode("ttml:head", _nsmgr);
foreach (FontFamily ff in FontFamily.Families)
{
comboBoxFontName.Items.Add(char.ToLower(ff.Name[0]) + ff.Name.Substring(1));
}
InitializeListView();
}
public override string Header
{
get
{
return _xml.OuterXml;
}
}
public override string Header => _xml.OuterXml;
protected override void GeneratePreviewReal()
{
if (listViewStyles.SelectedItems.Count != 1)
return;
if (pictureBoxPreview.Image != null)
pictureBoxPreview.Image.Dispose();
pictureBoxPreview.Image?.Dispose();
var bmp = new Bitmap(pictureBoxPreview.Width, pictureBoxPreview.Height);
using (Graphics g = Graphics.FromImage(bmp))
@ -93,12 +92,16 @@ namespace Nikse.SubtitleEdit.Forms.Styles
if (y % (rectangleSize * 2) == 0)
{
if (x % (rectangleSize * 2) == 0)
{
c = Color.LightGray;
}
}
else
{
if (x % (rectangleSize * 2) != 0)
{
c = Color.LightGray;
}
}
g.FillRectangle(new SolidBrush(c), x, y, rectangleSize, rectangleSize);
}
@ -117,7 +120,9 @@ namespace Nikse.SubtitleEdit.Forms.Styles
else if (textBoxFontSize.Text.EndsWith('%'))
{
if (int.TryParse(textBoxFontSize.Text.TrimEnd('%'), out fontSizeInt))
{
fontSize *= fontSizeInt / 100.0f;
}
}
font = new Font(comboBoxFontName.Text, fontSize);
}
@ -181,11 +186,15 @@ namespace Nikse.SubtitleEdit.Forms.Styles
{
XmlNode head = _xml.DocumentElement.SelectSingleNode("ttml:head", _nsmgr);
if (head == null)
{
return;
}
XmlNode styling = head.SelectSingleNode("ttml:styling", _nsmgr);
if (styling == null)
{
return;
}
foreach (XmlNode node in styling.SelectNodes("ttml:style", _nsmgr))
{
@ -249,28 +258,32 @@ namespace Nikse.SubtitleEdit.Forms.Styles
}
catch
{
// ignored
}
subItem.BackColor = c;
item.SubItems.Add(subItem);
int count = 0;
foreach (var p in Subtitle.Paragraphs)
{
if (string.IsNullOrEmpty(p.Extra) && name.Trim() == "Default")
count++;
else if (p.Extra != null && name.Trim().Equals(p.Extra.TrimStart(), StringComparison.OrdinalIgnoreCase))
if (string.IsNullOrEmpty(p.Extra) && name.Trim() == "Default" ||
p.Extra != null && name.Trim().Equals(p.Extra.TrimStart(), StringComparison.OrdinalIgnoreCase))
{
count++;
}
}
subItem = new ListViewItem.ListViewSubItem(item, count.ToString());
item.SubItems.Add(subItem);
listViewStyles.Items.Add(item);
}
private void TimedTextStyles_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
DialogResult = DialogResult.Cancel;
}
}
private void listViewStyles_SelectedIndexChanged(object sender, EventArgs e)
@ -292,30 +305,45 @@ namespace Nikse.SubtitleEdit.Forms.Styles
{
string name = "default";
if (node.Attributes["xml:id"] != null)
{
name = node.Attributes["xml:id"].Value;
}
else if (node.Attributes["id"] != null)
{
name = node.Attributes["id"].Value;
}
if (name == styleName)
{
string fontFamily = "Arial";
if (node.Attributes["tts:fontFamily"] != null)
{
fontFamily = node.Attributes["tts:fontFamily"].Value;
}
string fontWeight = "normal";
if (node.Attributes["tts:fontWeight"] != null)
{
fontWeight = node.Attributes["tts:fontWeight"].Value;
}
string fontStyle = "normal";
if (node.Attributes["tts:fontStyle"] != null)
{
fontStyle = node.Attributes["tts:fontStyle"].Value;
}
string fontColor = "white";
if (node.Attributes["tts:color"] != null)
{
fontColor = node.Attributes["tts:color"].Value;
}
string fontSize = "100%";
if (node.Attributes["tts:fontSize"] != null)
{
fontSize = node.Attributes["tts:fontSize"].InnerText;
}
textBoxStyleName.Text = name;
comboBoxFontName.Text = fontFamily;
@ -325,14 +353,20 @@ namespace Nikse.SubtitleEdit.Forms.Styles
// normal | italic | oblique
comboBoxFontStyle.SelectedIndex = 0;
if (fontStyle.Equals("italic", StringComparison.OrdinalIgnoreCase))
{
comboBoxFontStyle.SelectedIndex = 1;
}
if (fontStyle.Equals("oblique", StringComparison.OrdinalIgnoreCase))
{
comboBoxFontStyle.SelectedIndex = 2;
}
// normal | bold
comboBoxFontWeight.SelectedIndex = 0;
if (fontWeight.Equals("bold", StringComparison.OrdinalIgnoreCase))
{
comboBoxFontWeight.SelectedIndex = 1;
}
Color color = Color.White;
try
@ -389,7 +423,9 @@ namespace Nikse.SubtitleEdit.Forms.Styles
listViewStyles.Items.RemoveAt(listViewStyles.SelectedItems[0].Index);
if (index >= listViewStyles.Items.Count)
{
index--;
}
listViewStyles.Items[index].Selected = true;
}
}
@ -418,7 +454,9 @@ namespace Nikse.SubtitleEdit.Forms.Styles
foreach (ListViewItem item in listViewStyles.Items)
{
if (item.Text == name)
{
return true;
}
}
return false;
}
@ -446,7 +484,7 @@ namespace Nikse.SubtitleEdit.Forms.Styles
private void UpdateHeaderXml(string id, string tag, string value)
{
XmlNodeList styles = _xml.DocumentElement.SelectNodes("//ttml:head//ttml:styling/ttml:style", _nsmgr);
foreach (XmlNode style in styles)
{
XmlAttribute idAttr = style.Attributes["xml:id"];