Example #1
0
        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");
                }
            }
        }
Example #2
0
        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");
                    }
                }
            }
        }