Add "Bookmark contains..." option to "Modify selection" - thx BlohoJo :)

Fix #9229
This commit is contained in:
Nikolaj Olsson 2025-01-16 09:12:09 +01:00
parent 9136e21150
commit cff1053f30
5 changed files with 30 additions and 3 deletions

View File

@ -2144,6 +2144,7 @@ Download and continue?</VideoFromUrlRequirements>
<ExactlyTwoLines>Exactly two lines</ExactlyTwoLines> <ExactlyTwoLines>Exactly two lines</ExactlyTwoLines>
<MoreThanTwoLines>More than two lines</MoreThanTwoLines> <MoreThanTwoLines>More than two lines</MoreThanTwoLines>
<Bookmarked>Bookmarked</Bookmarked> <Bookmarked>Bookmarked</Bookmarked>
<BookmarkContains>Bookmark contains</BookmarkContains>
<BlankLines>Blank lines</BlankLines> <BlankLines>Blank lines</BlankLines>
</ModifySelection> </ModifySelection>
<MultipleReplace> <MultipleReplace>

View File

@ -8,6 +8,7 @@ using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Windows.Forms; using System.Windows.Forms;
using Nikse.SubtitleEdit.Controls.Adapters; using Nikse.SubtitleEdit.Controls.Adapters;
using System.CodeDom;
namespace Nikse.SubtitleEdit.Forms namespace Nikse.SubtitleEdit.Forms
{ {
@ -36,9 +37,10 @@ namespace Nikse.SubtitleEdit.Forms
private const int FunctionExactlyTwoLines = 15; private const int FunctionExactlyTwoLines = 15;
private const int FunctionMoreThanTwoLines = 16; private const int FunctionMoreThanTwoLines = 16;
private const int FunctionBookmarked = 17; private const int FunctionBookmarked = 17;
private const int FunctionBlankLines = 18; private const int FunctionBookmarkContains = 18;
private const int FunctionStyle = 19; private const int FunctionBlankLines = 19;
private const int FunctionActor = 20; private const int FunctionStyle = 20;
private const int FunctionActor = 21;
private const string ContainsString = "Contains"; private const string ContainsString = "Contains";
private const string StartsWith = "Starts with"; private const string StartsWith = "Starts with";
@ -58,6 +60,7 @@ namespace Nikse.SubtitleEdit.Forms
private const string ExactlyTwoLines = "Exactly two lines"; private const string ExactlyTwoLines = "Exactly two lines";
private const string MoreThanTwoLines = "More than two lines"; private const string MoreThanTwoLines = "More than two lines";
private const string Bookmarked = "Bookmarked"; private const string Bookmarked = "Bookmarked";
private const string BookmarkContains = "Bookmark contains";
private const string BlankLines = "Blank lines"; private const string BlankLines = "Blank lines";
private const string Style = "Style"; private const string Style = "Style";
private const string Actor = "Actor"; private const string Actor = "Actor";
@ -113,6 +116,7 @@ namespace Nikse.SubtitleEdit.Forms
comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.ExactlyTwoLines); comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.ExactlyTwoLines);
comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.MoreThanTwoLines); comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.MoreThanTwoLines);
comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.Bookmarked); comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.Bookmarked);
comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.BookmarkContains);
comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.BlankLines); comboBoxRule.Items.Add(LanguageSettings.Current.ModifySelection.BlankLines);
if (_format.HasStyleSupport) if (_format.HasStyleSupport)
{ {
@ -178,6 +182,9 @@ namespace Nikse.SubtitleEdit.Forms
case Bookmarked: case Bookmarked:
comboBoxRule.SelectedIndex = FunctionBookmarked; comboBoxRule.SelectedIndex = FunctionBookmarked;
break; break;
case BookmarkContains:
comboBoxRule.SelectedIndex = FunctionBookmarkContains;
break;
case BlankLines: case BlankLines:
comboBoxRule.SelectedIndex = FunctionBlankLines; comboBoxRule.SelectedIndex = FunctionBlankLines;
break; break;
@ -274,6 +281,9 @@ namespace Nikse.SubtitleEdit.Forms
case FunctionBookmarked: case FunctionBookmarked:
Configuration.Settings.Tools.ModifySelectionRule = Bookmarked; Configuration.Settings.Tools.ModifySelectionRule = Bookmarked;
break; break;
case FunctionBookmarkContains:
Configuration.Settings.Tools.ModifySelectionRule = BookmarkContains;
break;
case FunctionBlankLines: case FunctionBlankLines:
Configuration.Settings.Tools.ModifySelectionRule = BlankLines; Configuration.Settings.Tools.ModifySelectionRule = BlankLines;
break; break;
@ -496,6 +506,17 @@ namespace Nikse.SubtitleEdit.Forms
listViewItems.Add(MakeListViewItem(p, i)); listViewItems.Add(MakeListViewItem(p, i));
} }
} }
else if (comboBoxRule.SelectedIndex == FunctionBookmarkContains) // Bookmark contains
{
if (p.Bookmark != null && !string.IsNullOrEmpty(text))
{
var comparison = checkBoxCaseSensitive.Checked ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
if (p.Bookmark.Contains(text, comparison))
{
listViewItems.Add(MakeListViewItem(p, i));
}
}
}
else if (comboBoxRule.SelectedIndex == FunctionBlankLines) // Select blank lines else if (comboBoxRule.SelectedIndex == FunctionBlankLines) // Select blank lines
{ {
if (string.IsNullOrWhiteSpace(HtmlUtil.RemoveHtmlTags(p.Text, true))) if (string.IsNullOrWhiteSpace(HtmlUtil.RemoveHtmlTags(p.Text, true)))

View File

@ -2477,6 +2477,7 @@ namespace Nikse.SubtitleEdit.Logic
ExactlyTwoLines = "Exactly two lines", ExactlyTwoLines = "Exactly two lines",
MoreThanTwoLines = "More than two lines", MoreThanTwoLines = "More than two lines",
Bookmarked = "Bookmarked", Bookmarked = "Bookmarked",
BookmarkContains = "Bookmark contains",
BlankLines = "Blank lines", BlankLines = "Blank lines",
}; };

View File

@ -5824,6 +5824,9 @@ namespace Nikse.SubtitleEdit.Logic
case "ModifySelection/Bookmarked": case "ModifySelection/Bookmarked":
language.ModifySelection.Bookmarked = reader.Value; language.ModifySelection.Bookmarked = reader.Value;
break; break;
case "ModifySelection/BookmarkContains":
language.ModifySelection.BookmarkContains = reader.Value;
break;
case "ModifySelection/BlankLines": case "ModifySelection/BlankLines":
language.ModifySelection.BlankLines = reader.Value; language.ModifySelection.BlankLines = reader.Value;
break; break;

View File

@ -2289,6 +2289,7 @@
public string ExactlyTwoLines { get; set; } public string ExactlyTwoLines { get; set; }
public string MoreThanTwoLines { get; set; } public string MoreThanTwoLines { get; set; }
public string Bookmarked { get; set; } public string Bookmarked { get; set; }
public string BookmarkContains { get; set; }
public string BlankLines { get; set; } public string BlankLines { get; set; }
} }