From 747f3f3189506e4536e1c5cfe0cf4caa21f1a541 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Mon, 3 Jun 2024 13:33:28 +0200 Subject: [PATCH 1/6] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index e10caa06b..bd205dd0a 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -876,6 +876,7 @@ + @@ -2710,6 +2711,7 @@ + @@ -3035,6 +3037,7 @@ + @@ -5517,6 +5520,7 @@ + @@ -5720,6 +5724,7 @@ + From 5803cedf85820c6a28f1857411aad700ba09d679 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Mon, 3 Jun 2024 15:08:20 +0200 Subject: [PATCH 2/6] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index bd205dd0a..89a248cf5 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -5556,7 +5556,7 @@ - + From 5d1626428bf10bec80714adde1c1035316c188a9 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Mon, 3 Jun 2024 19:06:21 +0200 Subject: [PATCH 3/6] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index 89a248cf5..860a91b0e 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -5383,6 +5383,7 @@ + From ebc789afbbbc01a1be597e1c5656018f97835ffc Mon Sep 17 00:00:00 2001 From: Nikolaj Olsson Date: Tue, 4 Jun 2024 17:52:09 +0200 Subject: [PATCH 4/6] Improve context menu for Find/Replace - thx Nthoney :) Work on #8466 --- src/ui/Forms/FindDialog.Designer.cs | 55 +++++++++ src/ui/Forms/FindDialog.cs | 145 +++++++++++++++++++--- src/ui/Forms/FindDialog.resx | 3 + src/ui/Forms/ReplaceDialog.Designer.cs | 110 +++++++++++++++++ src/ui/Forms/ReplaceDialog.cs | 159 ++++++++++++++++++++++++- src/ui/Forms/ReplaceDialog.resx | 6 + 6 files changed, 458 insertions(+), 20 deletions(-) diff --git a/src/ui/Forms/FindDialog.Designer.cs b/src/ui/Forms/FindDialog.Designer.cs index daf2a4974..eafdf98f4 100644 --- a/src/ui/Forms/FindDialog.Designer.cs +++ b/src/ui/Forms/FindDialog.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.textBoxFind = new Nikse.SubtitleEdit.Controls.NikseTextBox(); this.buttonFind = new System.Windows.Forms.Button(); this.radioButtonNormal = new System.Windows.Forms.RadioButton(); @@ -39,6 +40,12 @@ this.checkBoxWholeWord = new System.Windows.Forms.CheckBox(); this.buttonFindPrev = new System.Windows.Forms.Button(); this.labelFindWhat = new System.Windows.Forms.Label(); + this.contextMenuStripNormal = new System.Windows.Forms.ContextMenuStrip(this.components); + this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStripNormal.SuspendLayout(); this.SuspendLayout(); // // textBoxFind @@ -171,6 +178,48 @@ this.labelFindWhat.TabIndex = 12; this.labelFindWhat.Text = "Find what:"; // + // contextMenuStripNormal + // + this.contextMenuStripNormal.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cutToolStripMenuItem, + this.copyToolStripMenuItem, + this.pasteToolStripMenuItem, + this.deleteToolStripMenuItem}); + this.contextMenuStripNormal.Name = "contextMenuStripNormal"; + this.contextMenuStripNormal.Size = new System.Drawing.Size(145, 92); + this.contextMenuStripNormal.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripNormal_Opening); + // + // cutToolStripMenuItem + // + this.cutToolStripMenuItem.Name = "cutToolStripMenuItem"; + this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); + this.cutToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.cutToolStripMenuItem.Text = "Cut"; + this.cutToolStripMenuItem.Click += new System.EventHandler(this.cutToolStripMenuItem_Click); + // + // copyToolStripMenuItem + // + this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; + this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.copyToolStripMenuItem.Text = "Copy"; + this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); + // + // pasteToolStripMenuItem + // + this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; + this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.pasteToolStripMenuItem.Text = "Paste"; + this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); + // + // deleteToolStripMenuItem + // + this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + this.deleteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.deleteToolStripMenuItem.Text = "Delete"; + this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); + // // FindDialog // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -199,6 +248,7 @@ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FindDialog_FormClosing); this.Shown += new System.EventHandler(this.FindDialog_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormFindDialog_KeyDown); + this.contextMenuStripNormal.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -217,5 +267,10 @@ private System.Windows.Forms.CheckBox checkBoxWholeWord; private System.Windows.Forms.Button buttonFindPrev; private System.Windows.Forms.Label labelFindWhat; + private System.Windows.Forms.ContextMenuStrip contextMenuStripNormal; + private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem; } } diff --git a/src/ui/Forms/FindDialog.cs b/src/ui/Forms/FindDialog.cs index 05512b240..4c0a2e14b 100644 --- a/src/ui/Forms/FindDialog.cs +++ b/src/ui/Forms/FindDialog.cs @@ -32,6 +32,11 @@ namespace Nikse.SubtitleEdit.Forms radioButtonRegEx.Text = LanguageSettings.Current.FindDialog.RegularExpression; checkBoxWholeWord.Text = LanguageSettings.Current.FindDialog.WholeWord; buttonCount.Text = LanguageSettings.Current.FindDialog.Count; + cutToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Cut; + copyToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Copy; + pasteToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Paste; + deleteToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Delete; + labelCount.Text = string.Empty; _subtitle = subtitle; _findAndReplaceMethods = findAndReplaceMethods; @@ -213,22 +218,7 @@ namespace Nikse.SubtitleEdit.Forms private void RadioButton_CheckedChanged(object sender, EventArgs e) { - // remove any existing context menu - textBoxFind.ContextMenuStrip = null; - comboBoxFind.ContextMenuStrip = null; - - // only hook context menu if regex radio button is checked - if (sender == radioButtonRegEx && radioButtonRegEx.Checked) - { - if (textBoxFind.Visible) - { - textBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(textBoxFind); - } - else if (radioButtonRegEx.Checked) - { - comboBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(comboBoxFind); - } - } + SetContextMenuStrip(); checkBoxWholeWord.Enabled = !radioButtonRegEx.Checked; labelCount.Text = string.Empty; @@ -337,6 +327,32 @@ namespace Nikse.SubtitleEdit.Forms buttonFindPrev.Focus(); } + private void SetContextMenuStrip() + { + comboBoxFind.ContextMenuStrip = null; + textBoxFind.ContextMenuStrip = null; + + if (radioButtonRegEx.Checked) + { + if (textBoxFind.Visible) + { + textBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(textBoxFind); + } + else if (radioButtonRegEx.Checked) + { + comboBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(comboBoxFind); + } + } + else if (comboBoxFind.Visible) + { + comboBoxFind.ContextMenuStrip = contextMenuStripNormal; + } + else + { + textBoxFind.ContextMenuStrip = contextMenuStripNormal; + } + } + private void FindDialog_Shown(object sender, EventArgs e) { if (comboBoxFind.Visible) @@ -347,6 +363,103 @@ namespace Nikse.SubtitleEdit.Forms { textBoxFind.Focus(); } + + SetContextMenuStrip(); + } + + private void cutToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.Cut(); + } + else if (comboBoxFind.Visible) + { + if (comboBoxFind.SelectedText.Length > 0) + { + Clipboard.SetText(comboBoxFind.SelectedText); + comboBoxFind.SelectedText = string.Empty; + } + } + } + catch + { + // ignore + } + } + + private void copyToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.Copy(); + } + else if (comboBoxFind.Visible) + { + if (comboBoxFind.SelectedText.Length > 0) + { + Clipboard.SetText(comboBoxFind.SelectedText); + } + } + } + catch + { + // ignore + } + } + + private void pasteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + var text = Clipboard.GetText(); + if (string.IsNullOrEmpty(text)) + { + return; + } + + if (textBoxFind.Visible) + { + textBoxFind.Paste(text); + } + else if (comboBoxFind.Visible) + { + comboBoxFind.SelectedText = text; + } + + } + catch + { + // ignore + } + } + + private void deleteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.SelectedText = string.Empty; + } + else if (comboBoxFind.Visible) + { + comboBoxFind.SelectedText = string.Empty; + } + } + catch + { + // ignore + } + } + + private void contextMenuStripNormal_Opening(object sender, System.ComponentModel.CancelEventArgs e) + { + pasteToolStripMenuItem.Enabled = Clipboard.ContainsText(); } } } diff --git a/src/ui/Forms/FindDialog.resx b/src/ui/Forms/FindDialog.resx index d58980a38..d42225b8f 100644 --- a/src/ui/Forms/FindDialog.resx +++ b/src/ui/Forms/FindDialog.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/src/ui/Forms/ReplaceDialog.Designer.cs b/src/ui/Forms/ReplaceDialog.Designer.cs index 89a8696cb..c093d692f 100644 --- a/src/ui/Forms/ReplaceDialog.Designer.cs +++ b/src/ui/Forms/ReplaceDialog.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.radioButtonRegEx = new System.Windows.Forms.RadioButton(); this.radioButtonCaseSensitive = new System.Windows.Forms.RadioButton(); this.radioButtonNormal = new System.Windows.Forms.RadioButton(); @@ -42,6 +43,18 @@ this.comboBoxFindReplaceIn = new Nikse.SubtitleEdit.Controls.NikseComboBox(); this.labelFindReplaceIn = new Nikse.SubtitleEdit.Controls.NikseLabel(); this.comboBoxFind = new Nikse.SubtitleEdit.Controls.NikseComboBox(); + this.contextMenuStripNormal = new System.Windows.Forms.ContextMenuStrip(this.components); + this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStripReplace = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItemCutReplace = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemCopyReplace = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemPasteReplace = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemDeleteReplace = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStripNormal.SuspendLayout(); + this.contextMenuStripReplace.SuspendLayout(); this.SuspendLayout(); // // radioButtonRegEx @@ -116,6 +129,7 @@ // // textBoxReplace // + this.textBoxReplace.ContextMenuStrip = this.contextMenuStripReplace; this.textBoxReplace.FocusedColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215))))); this.textBoxReplace.Location = new System.Drawing.Point(15, 71); this.textBoxReplace.Name = "textBoxReplace"; @@ -220,6 +234,90 @@ this.comboBoxFind.UsePopupWindow = false; this.comboBoxFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.comboBoxFind_KeyDown); // + // contextMenuStripNormal + // + this.contextMenuStripNormal.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cutToolStripMenuItem, + this.copyToolStripMenuItem, + this.pasteToolStripMenuItem, + this.deleteToolStripMenuItem}); + this.contextMenuStripNormal.Name = "contextMenuStripNormal"; + this.contextMenuStripNormal.Size = new System.Drawing.Size(181, 114); + this.contextMenuStripNormal.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripNormal_Opening); + // + // cutToolStripMenuItem + // + this.cutToolStripMenuItem.Name = "cutToolStripMenuItem"; + this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); + this.cutToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.cutToolStripMenuItem.Text = "Cut"; + this.cutToolStripMenuItem.Click += new System.EventHandler(this.cutToolStripMenuItem_Click); + // + // copyToolStripMenuItem + // + this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; + this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.copyToolStripMenuItem.Text = "Copy"; + this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); + // + // pasteToolStripMenuItem + // + this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; + this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.pasteToolStripMenuItem.Text = "Paste"; + this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); + // + // deleteToolStripMenuItem + // + this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + this.deleteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.deleteToolStripMenuItem.Text = "Delete"; + this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); + // + // contextMenuStripReplace + // + this.contextMenuStripReplace.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemCutReplace, + this.toolStripMenuItemCopyReplace, + this.toolStripMenuItemPasteReplace, + this.toolStripMenuItemDeleteReplace}); + this.contextMenuStripReplace.Name = "contextMenuStripNormal"; + this.contextMenuStripReplace.Size = new System.Drawing.Size(145, 92); + this.contextMenuStripReplace.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripReplace_Opening); + // + // toolStripMenuItemCutReplace + // + this.toolStripMenuItemCutReplace.Name = "toolStripMenuItemCutReplace"; + this.toolStripMenuItemCutReplace.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); + this.toolStripMenuItemCutReplace.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemCutReplace.Text = "Cut"; + this.toolStripMenuItemCutReplace.Click += new System.EventHandler(this.toolStripMenuItemCutReplace_Click); + // + // toolStripMenuItemCopyReplace + // + this.toolStripMenuItemCopyReplace.Name = "toolStripMenuItemCopyReplace"; + this.toolStripMenuItemCopyReplace.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.toolStripMenuItemCopyReplace.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemCopyReplace.Text = "Copy"; + this.toolStripMenuItemCopyReplace.Click += new System.EventHandler(this.toolStripMenuItemCopyReplace_Click); + // + // toolStripMenuItemPasteReplace + // + this.toolStripMenuItemPasteReplace.Name = "toolStripMenuItemPasteReplace"; + this.toolStripMenuItemPasteReplace.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); + this.toolStripMenuItemPasteReplace.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemPasteReplace.Text = "Paste"; + this.toolStripMenuItemPasteReplace.Click += new System.EventHandler(this.toolStripMenuItemPasteReplace_Click); + // + // toolStripMenuItemDeleteReplace + // + this.toolStripMenuItemDeleteReplace.Name = "toolStripMenuItemDeleteReplace"; + this.toolStripMenuItemDeleteReplace.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemDeleteReplace.Text = "Delete"; + this.toolStripMenuItemDeleteReplace.Click += new System.EventHandler(this.toolStripMenuItemDeleteReplace_Click); + // // ReplaceDialog // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -252,6 +350,8 @@ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ReplaceDialog_FormClosing); this.Shown += new System.EventHandler(this.ReplaceDialog_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormReplaceDialog_KeyDown); + this.contextMenuStripNormal.ResumeLayout(false); + this.contextMenuStripReplace.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -273,5 +373,15 @@ private Nikse.SubtitleEdit.Controls.NikseComboBox comboBoxFindReplaceIn; private Nikse.SubtitleEdit.Controls.NikseLabel labelFindReplaceIn; private Nikse.SubtitleEdit.Controls.NikseComboBox comboBoxFind; + private System.Windows.Forms.ContextMenuStrip contextMenuStripNormal; + private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip contextMenuStripReplace; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCutReplace; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCopyReplace; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemPasteReplace; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDeleteReplace; } } \ No newline at end of file diff --git a/src/ui/Forms/ReplaceDialog.cs b/src/ui/Forms/ReplaceDialog.cs index e439378c7..c7966aeeb 100644 --- a/src/ui/Forms/ReplaceDialog.cs +++ b/src/ui/Forms/ReplaceDialog.cs @@ -37,6 +37,10 @@ namespace Nikse.SubtitleEdit.Forms buttonReplace.Text = LanguageSettings.Current.ReplaceDialog.Replace; buttonReplaceAll.Text = LanguageSettings.Current.ReplaceDialog.ReplaceAll; labelFindReplaceIn.Text = LanguageSettings.Current.ReplaceDialog.FindReplaceIn; + cutToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Cut; + copyToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Copy; + pasteToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Paste; + deleteToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.Delete; if (Width < radioButtonRegEx.Right + 5) { @@ -134,6 +138,7 @@ namespace Nikse.SubtitleEdit.Forms var s = Configuration.Settings.Tools.FindHistory[index]; comboBoxFind.Items.Add(s); } + comboBoxFind.Text = selectedText; comboBoxFind.SelectAll(); } @@ -155,6 +160,7 @@ namespace Nikse.SubtitleEdit.Forms { textBoxReplace.Text = findHelper.ReplaceText.Replace(Environment.NewLine, "\\n"); } + textBoxFind.SelectAll(); if (findHelper.FindReplaceType.FindType == FindType.RegEx) { @@ -310,11 +316,8 @@ namespace Nikse.SubtitleEdit.Forms private void RadioButtonCheckedChanged(object sender, EventArgs e) { - textBoxFind.ContextMenuStrip = sender == radioButtonRegEx - ? FindReplaceDialogHelper.GetRegExContextMenu(textBoxFind) - : null; - checkBoxWholeWord.Enabled = !radioButtonRegEx.Checked; + SetContextMenuStrip(); } private void TextBoxFindKeyDown(object sender, KeyEventArgs e) @@ -410,6 +413,154 @@ namespace Nikse.SubtitleEdit.Forms BringToFront(); Activate(); }); + + SetContextMenuStrip(); + } + + private void SetContextMenuStrip() + { + comboBoxFind.ContextMenuStrip = null; + textBoxFind.ContextMenuStrip = null; + + if (radioButtonRegEx.Checked) + { + if (textBoxFind.Visible) + { + textBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(textBoxFind); + } + else if (radioButtonRegEx.Checked) + { + comboBoxFind.ContextMenuStrip = FindReplaceDialogHelper.GetRegExContextMenu(comboBoxFind); + } + } + else if (comboBoxFind.Visible) + { + comboBoxFind.ContextMenuStrip = contextMenuStripNormal; + } + else + { + textBoxFind.ContextMenuStrip = contextMenuStripNormal; + } + } + + private void cutToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.Cut(); + } + else if (comboBoxFind.Visible) + { + if (comboBoxFind.SelectedText.Length > 0) + { + Clipboard.SetText(comboBoxFind.SelectedText); + comboBoxFind.SelectedText = string.Empty; + } + } + } + catch + { + // ignore + } + } + + private void copyToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.Copy(); + } + else if (comboBoxFind.Visible) + { + if (comboBoxFind.SelectedText.Length > 0) + { + Clipboard.SetText(comboBoxFind.SelectedText); + } + } + } + catch + { + // ignore + } + } + + private void pasteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + var text = Clipboard.GetText(); + if (string.IsNullOrEmpty(text)) + { + return; + } + + if (textBoxFind.Visible) + { + textBoxFind.Paste(text); + } + else if (comboBoxFind.Visible) + { + comboBoxFind.SelectedText = text; + } + + } + catch + { + // ignore + } + } + + private void deleteToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (textBoxFind.Visible) + { + textBoxFind.SelectedText = string.Empty; + } + else if (comboBoxFind.Visible) + { + comboBoxFind.SelectedText = string.Empty; + } + } + catch + { + // ignore + } + } + + private void toolStripMenuItemCutReplace_Click(object sender, EventArgs e) + { + textBoxReplace.Cut(); + } + + private void toolStripMenuItemCopyReplace_Click(object sender, EventArgs e) + { + textBoxReplace.Copy(); + } + + private void toolStripMenuItemPasteReplace_Click(object sender, EventArgs e) + { + textBoxReplace.Paste(); + } + + private void toolStripMenuItemDeleteReplace_Click(object sender, EventArgs e) + { + textBoxReplace.SelectedText = string.Empty; + } + + private void contextMenuStripReplace_Opening(object sender, System.ComponentModel.CancelEventArgs e) + { + toolStripMenuItemPasteReplace.Enabled = Clipboard.ContainsText(); + } + + private void contextMenuStripNormal_Opening(object sender, System.ComponentModel.CancelEventArgs e) + { + pasteToolStripMenuItem.Enabled = Clipboard.ContainsText(); } } } diff --git a/src/ui/Forms/ReplaceDialog.resx b/src/ui/Forms/ReplaceDialog.resx index d58980a38..1ca3ffbc0 100644 --- a/src/ui/Forms/ReplaceDialog.resx +++ b/src/ui/Forms/ReplaceDialog.resx @@ -117,4 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 172, 17 + + + 17, 17 + \ No newline at end of file From 50a9cf5b986b66f4574069f3d7a0ec8fbfc3042b Mon Sep 17 00:00:00 2001 From: Nikolaj Olsson Date: Tue, 4 Jun 2024 20:03:20 +0200 Subject: [PATCH 5/6] Fix crash in TS convert - thx MounaLafi :) Work on #8470 --- src/ui/Forms/ExportPngXml.cs | 7 +++++++ src/ui/Logic/CommandLineConvert/TsToBluRaySup.cs | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ui/Forms/ExportPngXml.cs b/src/ui/Forms/ExportPngXml.cs index 5136fc24f..3834684de 100644 --- a/src/ui/Forms/ExportPngXml.cs +++ b/src/ui/Forms/ExportPngXml.cs @@ -474,6 +474,11 @@ namespace Nikse.SubtitleEdit.Forms internal MakeBitmapParameter MakeMakeBitmapParameter(int index, int screenWidth, int screenHeight) { var p = _subtitle.GetParagraphOrDefault(index); + if (p == null) + { + p = new Paragraph(); + } + var parameter = new MakeBitmapParameter { Type = _exportType, @@ -510,6 +515,7 @@ namespace Nikse.SubtitleEdit.Forms FullFrame = checkBoxFullFrameImage.Checked, FullFrameBackgroundColor = panelFullFrameBackground.BackColor, }; + if (index < _subtitle.Paragraphs.Count) { parameter.P = _subtitle.Paragraphs[index]; @@ -571,6 +577,7 @@ namespace Nikse.SubtitleEdit.Forms { parameter.P = null; } + return parameter; } diff --git a/src/ui/Logic/CommandLineConvert/TsToBluRaySup.cs b/src/ui/Logic/CommandLineConvert/TsToBluRaySup.cs index 3a9bdb0a2..2daf926b3 100644 --- a/src/ui/Logic/CommandLineConvert/TsToBluRaySup.cs +++ b/src/ui/Logic/CommandLineConvert/TsToBluRaySup.cs @@ -21,13 +21,19 @@ namespace Nikse.SubtitleEdit.Logic.CommandLineConvert using (var form = new ExportPngXml()) { - form.Initialize(new Subtitle(), new SubRip(), BatchConvert.BluRaySubtitle, fileName, null, fileName); + var sub = tsParser.GetDvbSubtitles(pid); + var tempSubtitle = new Subtitle(); + foreach (var x in sub) + { + tempSubtitle.Paragraphs.Add(new Paragraph(string.Empty, x.StartMilliseconds, x.EndMilliseconds)); + } + + form.Initialize(tempSubtitle, new SubRip(), BatchConvert.BluRaySubtitle, fileName, null, fileName); var language = GetFileNameEnding(programMapTableParser, pid); var outputFileName = CommandLineConverter.FormatOutputFileNameForBatchConvert(Utilities.GetPathAndFileNameWithoutExtension(fileName) + language + Path.GetExtension(fileName), ".sup", outputFolder, overwrite); stdOutWriter?.Write($"{count}: {Path.GetFileName(fileName)} -> PID {pid} to {outputFileName}..."); - var sub = tsParser.GetDvbSubtitles(pid); progressCallback?.Invoke($"Save PID {pid}"); var subtitleScreenSize = GetSubtitleScreenSize(sub, overrideScreenSize, resolution); using (var binarySubtitleFile = new FileStream(outputFileName, FileMode.Create)) From b9373ed0eacf7763b757a320287188a113e14e95 Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Tue, 4 Jun 2024 19:52:31 +0100 Subject: [PATCH 6/6] Update pt-PT.xml --- src/ui/Languages/pt-PT.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ui/Languages/pt-PT.xml b/src/ui/Languages/pt-PT.xml index 36c54d01d..c949603fa 100644 --- a/src/ui/Languages/pt-PT.xml +++ b/src/ui/Languages/pt-PT.xml @@ -2132,10 +2132,12 @@ Transferir e continuar? Expressão regular Linhas ímpares Linhas pares - Duração menor que - Duração maior que - CPS menor que - CPS maior que + Duração inferior a + Duração superior a + CPS inferior a + CPS superior a + Comprimento inferior a + Comprimento superior a Exactamente uma linha Exactamente duas linhas Mais de duas linhas