mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 03:02:35 +01:00
Toggle music symbols, now toggles via first text - thx Leon :)
Related to #7386
This commit is contained in:
parent
a2e9519725
commit
3e4bfbb9cd
@ -41,6 +41,7 @@
|
|||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Stbl/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Stbl/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tahoma/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tahoma/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tesseract/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tesseract/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ukranian/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unbreak/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unbreak/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Undocked/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Undocked/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vanc/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vanc/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
@ -856,7 +856,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
var excludes = new HashSet<string>();
|
var excludes = new HashSet<string>();
|
||||||
|
|
||||||
var languages = Configuration.Settings.General.DefaultLanguages ?? string.Empty;
|
var languages = Configuration.Settings.General.DefaultLanguages ?? string.Empty;
|
||||||
var languageList = useFilter ? languages.Split(new []{ ';' }, StringSplitOptions.RemoveEmptyEntries) : Array.Empty<string>();
|
var languageList = useFilter ? languages.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) : Array.Empty<string>();
|
||||||
|
|
||||||
foreach (var ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
|
foreach (var ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
|
||||||
{
|
{
|
||||||
@ -1048,9 +1048,9 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
if (word.Length > 0)
|
if (word.Length > 0)
|
||||||
{
|
{
|
||||||
var userWordsXmlFileName = DictionaryFolder + languageName + "_user.xml";
|
var userWordsXmlFileName = DictionaryFolder + languageName + "_user.xml";
|
||||||
if (!File.Exists(userWordsXmlFileName) && languageName != null && languageName.Length> 2)
|
if (!File.Exists(userWordsXmlFileName) && languageName != null && languageName.Length > 2)
|
||||||
{
|
{
|
||||||
var newFileName = DictionaryFolder + languageName.Substring(0,2).ToLowerInvariant() + "_user.xml";
|
var newFileName = DictionaryFolder + languageName.Substring(0, 2).ToLowerInvariant() + "_user.xml";
|
||||||
if (File.Exists(newFileName))
|
if (File.Exists(newFileName))
|
||||||
{
|
{
|
||||||
userWordsXmlFileName = newFileName;
|
userWordsXmlFileName = newFileName;
|
||||||
@ -1831,7 +1831,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
var color = text.Substring(start, end - start).TrimStart('\\').TrimStart('1').TrimStart('c');
|
var color = text.Substring(start, end - start).TrimStart('\\').TrimStart('1').TrimStart('c');
|
||||||
color = color.RemoveChar('&').TrimStart('H');
|
color = color.RemoveChar('&').TrimStart('H');
|
||||||
color = color.PadLeft(6, '0');
|
color = color.PadLeft(6, '0');
|
||||||
var c= AdvancedSubStationAlpha.GetSsaColor("h" + color, defaultColor);
|
var c = AdvancedSubStationAlpha.GetSsaColor("h" + color, defaultColor);
|
||||||
|
|
||||||
|
|
||||||
// alpha
|
// alpha
|
||||||
@ -2971,7 +2971,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var isLineContinuation = s.EndsWith("...", StringComparison.Ordinal) ||
|
var isLineContinuation = s.EndsWith("...", StringComparison.Ordinal) ||
|
||||||
(AllLetters + "…,-$%").Contains(s.Substring(s.Length - 1)) ||
|
(AllLetters + "…,-$%").Contains(s.Substring(s.Length - 1)) ||
|
||||||
CalcCjk.IsCjk(s[s.Length - 1]);
|
CalcCjk.IsCjk(s[s.Length - 1]);
|
||||||
|
|
||||||
@ -3124,7 +3124,55 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToggleSymbols(string tag, string text, string endTag = null)
|
public static string ToggleSymbols(string tag, string text, string endTag, out bool added)
|
||||||
|
{
|
||||||
|
var pre = string.Empty;
|
||||||
|
var post = string.Empty;
|
||||||
|
text = SplitStartTags(text, ref pre);
|
||||||
|
text = SplitEndTags(text, ref post);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(tag) && text.Contains(tag) || string.IsNullOrEmpty(tag) && !string.IsNullOrEmpty(endTag) && text.Contains(endTag))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(endTag) && !string.IsNullOrEmpty(tag))
|
||||||
|
{
|
||||||
|
text = pre + text.Replace(tag, string.Empty).Replace(endTag, string.Empty).Replace(Environment.NewLine + " ", Environment.NewLine).Replace(" " + Environment.NewLine, Environment.NewLine).Trim() + post;
|
||||||
|
}
|
||||||
|
else if (string.IsNullOrEmpty(endTag) && !string.IsNullOrEmpty(tag))
|
||||||
|
{
|
||||||
|
text = pre + text.Replace(tag, string.Empty).Replace(Environment.NewLine + " ", Environment.NewLine).Replace(" " + Environment.NewLine, Environment.NewLine).Trim() + post;
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(endTag))
|
||||||
|
{
|
||||||
|
text = pre + text.Replace(endTag, string.Empty).Replace(Environment.NewLine + " ", Environment.NewLine).Replace(" " + Environment.NewLine, Environment.NewLine).Trim() + post;
|
||||||
|
}
|
||||||
|
|
||||||
|
added = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (tag == Configuration.Settings.Tools.MusicSymbol)
|
||||||
|
{
|
||||||
|
if (Configuration.Settings.Tools.MusicSymbolStyle.Equals("single", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
text = string.Format("{0}{1} {2}{3}", pre, tag, text.Replace(Environment.NewLine, Environment.NewLine + tag + " "), post);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text = string.Format("{0}{1} {2} {1}{3}", pre, tag, text.Replace(Environment.NewLine, " " + tag + Environment.NewLine + tag + " "), post);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text = string.Format("{0}{1}{2}{3}{4}", pre, tag, text, endTag ?? tag, post);
|
||||||
|
}
|
||||||
|
|
||||||
|
added = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string RemoveSymbols(string tag, string text, string endTag)
|
||||||
{
|
{
|
||||||
var pre = string.Empty;
|
var pre = string.Empty;
|
||||||
var post = string.Empty;
|
var post = string.Empty;
|
||||||
@ -3146,24 +3194,35 @@ namespace Nikse.SubtitleEdit.Core.Common
|
|||||||
text = pre + text.Replace(endTag, string.Empty).Replace(Environment.NewLine + " ", Environment.NewLine).Replace(" " + Environment.NewLine, Environment.NewLine).Trim() + post;
|
text = pre + text.Replace(endTag, string.Empty).Replace(Environment.NewLine + " ", Environment.NewLine).Replace(" " + Environment.NewLine, Environment.NewLine).Trim() + post;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static string AddSymbols(string tag, string text, string endTag)
|
||||||
|
{
|
||||||
|
text = RemoveSymbols(tag, text, endTag);
|
||||||
|
|
||||||
|
var pre = string.Empty;
|
||||||
|
var post = string.Empty;
|
||||||
|
text = SplitStartTags(text, ref pre);
|
||||||
|
text = SplitEndTags(text, ref post);
|
||||||
|
|
||||||
|
if (tag == Configuration.Settings.Tools.MusicSymbol)
|
||||||
{
|
{
|
||||||
if (tag == Configuration.Settings.Tools.MusicSymbol)
|
if (Configuration.Settings.Tools.MusicSymbolStyle.Equals("single", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
if (Configuration.Settings.Tools.MusicSymbolStyle.Equals("single", StringComparison.OrdinalIgnoreCase))
|
text = string.Format("{0}{1} {2}{3}", pre, tag, text.Replace(Environment.NewLine, Environment.NewLine + tag + " "), post);
|
||||||
{
|
|
||||||
text = string.Format("{0}{1} {2}{3}", pre, tag, text.Replace(Environment.NewLine, Environment.NewLine + tag + " "), post);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
text = string.Format("{0}{1} {2} {1}{3}", pre, tag, text.Replace(Environment.NewLine, " " + tag + Environment.NewLine + tag + " "), post);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
text = string.Format("{0}{1}{2}{3}{4}", pre, tag, text, endTag ?? tag, post);
|
text = string.Format("{0}{1} {2} {1}{3}", pre, tag, text.Replace(Environment.NewLine, " " + tag + Environment.NewLine + tag + " "), post);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text = string.Format("{0}{1}{2}{3}{4}", pre, tag, text, endTag ?? tag, post);
|
||||||
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -16625,7 +16625,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
// do not check for shortcuts if text is being entered and a textbox is focused
|
// do not check for shortcuts if text is being entered and a textbox is focused
|
||||||
var textBoxTypes = new List<string> { "AdvancedTextBox", "SimpleTextBox", "SETextBox", "TextBox", "RichTextBox" };
|
var textBoxTypes = new List<string> { "AdvancedTextBox", "SimpleTextBox", "SETextBox", "TextBox", "RichTextBox" };
|
||||||
if (textBoxTypes.Contains(typeName) &&
|
if (textBoxTypes.Contains(typeName) &&
|
||||||
((e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z) ||
|
((e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z) ||
|
||||||
(e.KeyCode >= Keys.OemSemicolon && e.KeyCode <= Keys.OemBackslash) ||
|
(e.KeyCode >= Keys.OemSemicolon && e.KeyCode <= Keys.OemBackslash) ||
|
||||||
e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9 ||
|
e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9 ||
|
||||||
e.KeyCode == Keys.Multiply ||
|
e.KeyCode == Keys.Multiply ||
|
||||||
@ -31230,7 +31230,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
int selectionStart = tb.SelectionStart;
|
int selectionStart = tb.SelectionStart;
|
||||||
text = Utilities.ToggleSymbols(tag, text, endTag);
|
text = Utilities.ToggleSymbols(tag, text, endTag, out var _);
|
||||||
tb.SelectedText = text;
|
tb.SelectedText = text;
|
||||||
tb.SelectionStart = selectionStart;
|
tb.SelectionStart = selectionStart;
|
||||||
tb.SelectionLength = text.Length;
|
tb.SelectionLength = text.Length;
|
||||||
@ -31254,20 +31254,46 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
SubtitleListview1.BeginUpdate();
|
SubtitleListview1.BeginUpdate();
|
||||||
|
var first = true;
|
||||||
|
var addTags = true;
|
||||||
foreach (int i in indices)
|
foreach (int i in indices)
|
||||||
{
|
{
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
_subtitle.Paragraphs[i].Text = Utilities.ToggleSymbols(tag, _subtitle.Paragraphs[i].Text, endTag, out var added);
|
||||||
|
addTags = added;
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (addTags)
|
||||||
|
{
|
||||||
|
_subtitle.Paragraphs[i].Text = Utilities.AddSymbols(tag, _subtitle.Paragraphs[i].Text, endTag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_subtitle.Paragraphs[i].Text = Utilities.RemoveSymbols(tag, _subtitle.Paragraphs[i].Text, endTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
SubtitleListview1.SetText(i, _subtitle.Paragraphs[i].Text);
|
||||||
|
|
||||||
if (IsOriginalEditable)
|
if (IsOriginalEditable)
|
||||||
{
|
{
|
||||||
var original = Utilities.GetOriginalParagraph(i, _subtitle.Paragraphs[i], _subtitleOriginal.Paragraphs);
|
var original = Utilities.GetOriginalParagraph(i, _subtitle.Paragraphs[i], _subtitleOriginal.Paragraphs);
|
||||||
if (original != null)
|
if (original != null)
|
||||||
{
|
{
|
||||||
original.Text = Utilities.ToggleSymbols(tag, original.Text, endTag);
|
if (addTags)
|
||||||
|
{
|
||||||
|
original.Text = Utilities.AddSymbols(tag, original.Text, endTag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
original.Text = Utilities.RemoveSymbols(tag, original.Text, endTag);
|
||||||
|
}
|
||||||
|
|
||||||
SubtitleListview1.SetOriginalText(i, original.Text);
|
SubtitleListview1.SetOriginalText(i, original.Text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_subtitle.Paragraphs[i].Text = Utilities.ToggleSymbols(tag, _subtitle.Paragraphs[i].Text, endTag);
|
|
||||||
SubtitleListview1.SetText(i, _subtitle.Paragraphs[i].Text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SubtitleListview1.EndUpdate();
|
SubtitleListview1.EndUpdate();
|
||||||
|
Loading…
Reference in New Issue
Block a user