From 85065110e5d773390d48932c94a9e233f7b6dc50 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 12 Jun 2022 13:20:40 +0200 Subject: [PATCH] Add ocr unknown word context menu "Remove 'word'" - thx voska7 :) Fix #6036 --- src/ui/Forms/Ocr/VobSubOcr.Designer.cs | 21 ++++++--- src/ui/Forms/Ocr/VobSubOcr.cs | 62 +++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/src/ui/Forms/Ocr/VobSubOcr.Designer.cs b/src/ui/Forms/Ocr/VobSubOcr.Designer.cs index ed864e23d..9c43bfb8e 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.Designer.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.Designer.cs @@ -111,6 +111,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.listBoxUnknownWords = new System.Windows.Forms.ListBox(); this.contextMenuStripUnknownWords = new System.Windows.Forms.ContextMenuStrip(this.components); this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.removeAllXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tabPageAllFixes = new System.Windows.Forms.TabPage(); this.listBoxLog = new System.Windows.Forms.ListBox(); this.tabPageSuggestions = new System.Windows.Forms.TabPage(); @@ -230,7 +231,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.toolStripSeparator3, this.deleteToolStripMenuItem}); this.contextMenuStripListview.Name = "contextMenuStripListview"; - this.contextMenuStripListview.Size = new System.Drawing.Size(306, 408); + this.contextMenuStripListview.Size = new System.Drawing.Size(306, 386); this.contextMenuStripListview.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListviewOpening); // // normalToolStripMenuItem @@ -1324,17 +1325,26 @@ namespace Nikse.SubtitleEdit.Forms.Ocr // contextMenuStripUnknownWords // this.contextMenuStripUnknownWords.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.clearToolStripMenuItem}); + this.clearToolStripMenuItem, + this.removeAllXToolStripMenuItem}); this.contextMenuStripUnknownWords.Name = "contextMenuStripUnknownWords"; - this.contextMenuStripUnknownWords.Size = new System.Drawing.Size(102, 26); + this.contextMenuStripUnknownWords.Size = new System.Drawing.Size(139, 48); + this.contextMenuStripUnknownWords.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripUnknownWords_Opening); // // clearToolStripMenuItem // this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(101, 22); + this.clearToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.clearToolStripMenuItem.Text = "Clear"; this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click); // + // removeAllXToolStripMenuItem + // + this.removeAllXToolStripMenuItem.Name = "removeAllXToolStripMenuItem"; + this.removeAllXToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.removeAllXToolStripMenuItem.Text = "RemoveAllX"; + this.removeAllXToolStripMenuItem.Click += new System.EventHandler(this.removeAllXToolStripMenuItem_Click); + // // tabPageAllFixes // this.tabPageAllFixes.Controls.Add(this.listBoxLog); @@ -1787,7 +1797,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr | System.Windows.Forms.AnchorStyles.Right))); this.textBoxCurrentText.BackColor = System.Drawing.SystemColors.WindowFrame; this.textBoxCurrentText.ContextMenuStrip = this.contextMenuStripTextBox; - this.textBoxCurrentText.CurrentLanguage = null; + this.textBoxCurrentText.CurrentLanguage = ""; this.textBoxCurrentText.CurrentLineIndex = 0; this.textBoxCurrentText.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.textBoxCurrentText.HideSelection = true; @@ -2164,5 +2174,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr private System.Windows.Forms.ToolStripMenuItem italicToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem underlineToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem imageWithTimeCodeInFileNameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem removeAllXToolStripMenuItem; } } \ No newline at end of file diff --git a/src/ui/Forms/Ocr/VobSubOcr.cs b/src/ui/Forms/Ocr/VobSubOcr.cs index a9d50b930..1e17789cd 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.cs @@ -565,7 +565,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr vobSubToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportVobSub; bDNXMLToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportBdnXml; bluraySupToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportBluRaySup; - imageWithTimeCodeInFileNameToolStripMenuItem.Text = language.ImagesWithTimeCodesInFileName; + imageWithTimeCodeInFileNameToolStripMenuItem.Text = language.ImagesWithTimeCodesInFileName; toolStripMenuItemClearFixes.Text = LanguageSettings.Current.DvdSubRip.Clear; toolStripMenuItemClearGuesses.Text = LanguageSettings.Current.DvdSubRip.Clear; @@ -9939,7 +9939,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr Application.DoEvents(); } } - finally + finally { Cursor = Cursors.Default; _ocrMethodIndex = oldOcrIndex; @@ -9952,5 +9952,63 @@ namespace Nikse.SubtitleEdit.Forms.Ocr f.ShowDialog(this); } } + + private string GetUnknownComboBoxWord(string s) + { + if (s == null || !s.Contains(':')) + { + return string.Empty; + } + + return s.Remove(0, s.IndexOf(':') + 1).Trim(); + } + + private void removeAllXToolStripMenuItem_Click(object sender, EventArgs e) + { + var word = GetUnknownComboBoxWord(listBoxUnknownWords.Text); + if (string.IsNullOrEmpty(word)) + { + return; + } + + var unkownWords = new List(); + foreach (var item in listBoxUnknownWords.Items) + { + var raw = item as LogItem; + if (raw == null) + { + continue; + } + + if (!word.Equals(raw.Text, StringComparison.OrdinalIgnoreCase)) + { + unkownWords.Add(raw); + } + } + + listBoxUnknownWords.BeginUpdate(); + listBoxUnknownWords.Items.Clear(); + listBoxUnknownWords.Items.AddRange(unkownWords.Cast().ToArray()); + listBoxUnknownWords.EndUpdate(); + + if (listBoxUnknownWords.Items.Count > 0) + { + listBoxUnknownWords.SelectedIndex = 0; + } + } + + private void contextMenuStripUnknownWords_Opening(object sender, CancelEventArgs e) + { + var word = GetUnknownComboBoxWord(listBoxUnknownWords.Text); + if (string.IsNullOrEmpty(word)) + { + removeAllXToolStripMenuItem.Visible = false; + } + else + { + removeAllXToolStripMenuItem.Visible = true; + removeAllXToolStripMenuItem.Text = string.Format(LanguageSettings.Current.Settings.RemoveX.RemoveChar('?'), word); + } + } } }