public override async Task Execute(params object[] args) { string whatText; string withText; bool matchCase; bool useRegex; using (var one = new OneNote(out var page, out _)) { var text = page.GetSelectedText(); using (var dialog = new SearchAndReplaceDialog()) { if (text.Length > 0) { dialog.WhatText = text; } if (dialog.ShowDialog(owner) != DialogResult.OK) { return; } whatText = dialog.WhatText; withText = dialog.WithText; matchCase = dialog.MatchCase; useRegex = dialog.UseRegex; } // let user insert a newline char withText = withText.Replace("\\n", "\n"); var editor = new SearchAndReplaceEditor(whatText, withText, useRegex: useRegex, caseSensitive: matchCase ); var count = editor.SearchAndReplace(page); if (count > 0) { logger.WriteLine($"found {count} matches"); await one.Update(page); SaveSettings(whatText, withText, matchCase, useRegex); } else { logger.WriteLine("no matches found"); } } }
public override async Task Execute(params object[] args) { string whatText; string withText; bool matchCase; using (var one = new OneNote(out var page, out var ns)) { var text = page.GetSelectedText(); using (var dialog = new SearchAndReplaceDialog()) { if (text.Length > 0) { dialog.WhatText = text; } if (dialog.ShowDialog(owner) != DialogResult.OK) { return; } whatText = dialog.WhatText; withText = dialog.WithText; matchCase = dialog.MatchCase; } // let user insert a newline char withText = withText.Replace("\\n", "\n"); var cursor = page.GetTextCursor(); if (cursor != null) { MergeRuns(cursor); } IEnumerable <XElement> elements; if (cursor != null) { elements = page.Root.Elements(ns + "Outline") .Descendants(ns + "T"); } else { elements = page.Root.Elements(ns + "Outline") .Descendants(ns + "T") .Where(e => e.Attribute("selected")?.Value == "all"); } if (elements.Any()) { int count = 0; var editor = new SearchAndReplaceEditor(whatText, withText, matchCase); foreach (var element in elements) { count += editor.SearchAndReplace(element); } if (count > 0) { PatchEndingBreaks(page.Root, ns); logger.WriteLine($"found {count} matches"); await one.Update(page); } else { logger.WriteLine("no matches found"); } } } }