Beispiel #1
0
        private void OnStartup(object sender, StartupEventArgs ea)
        {
            InitializeSettings();

            if (UserSettings == null || AlreadyEditingFile())
            {
                Shutdown();
                return;
            }

            Activated       += OnActivated;
            _spellingService = new SpellingService();
            var spellCheckProvider      = new SpellCheckProvider(_spellingService);
            var snippetManager          = new SnippetManager();
            var mainWindow              = new MainWindow(spellCheckProvider, snippetManager);
            var windowPlacementSettings = mainWindow.GetWindowPlacementSettings();

            if (windowPlacementSettings.UpgradeSettings)
            {
                windowPlacementSettings.Upgrade();
                windowPlacementSettings.UpgradeSettings = false;
                windowPlacementSettings.Save();
            }

            MainWindow = mainWindow;
            MainWindow.Show();
        }
Beispiel #2
0
        private void ExecuteAddToDictionary(object sender, ExecutedRoutedEventArgs ea)
        {
            var word = (string)ea.Parameter;

            SpellCheckProvider.Add(word);
            SpellCheck = !SpellCheck;
            SpellCheck = !SpellCheck;
        }
Beispiel #3
0
 protected override void OnViewLoaded(object view)
 {
     SpellCheckProvider.Initialise((DocumentView)view);
     PairedCharsHighlightProvider.Initialise((DocumentView)view);
     SearchProvider.Initialise((DocumentView)view);
     base.OnViewLoaded(view);
     NotifyOfPropertyChange(() => View);
 }
        private void CheckAndCloseView()
        {
            if (SpellCheckProvider != null)
            {
                SpellCheckProvider.Disconnect();
            }
            var disposableSiteContext = MarkpadDocument.SiteContext as IDisposable;

            if (disposableSiteContext != null)
            {
                disposableSiteContext.Dispose();
            }
        }
Beispiel #5
0
        // Spell Check

        private void SpellCheckSuggestions(ContextMenu contextMenu)
        {
            if (SpellCheckProvider != null)
            {
                int offset;
                if (_appsKeyDown || IsAlternateAppsKeyShortcut)
                {
                    _appsKeyDown = false;
                    offset       = EditBox.SelectionStart;
                }
                else
                {
                    var editorPosition = EditBox.GetPositionFromPoint(Mouse.GetPosition(EditBox));
                    if (!editorPosition.HasValue)
                    {
                        return;
                    }
                    offset = EditBox.Document.GetOffset(editorPosition.Value.Line, editorPosition.Value.Column);
                }

                var errorSegments     = SpellCheckProvider.GetSpellCheckErrors();
                var misspelledSegment = errorSegments.FirstOrDefault(segment => segment.StartOffset <= offset && segment.EndOffset >= offset);
                if (misspelledSegment == null)
                {
                    return;
                }

                // check if the clicked offset is the beginning or end of line to prevent snapping to it
                // (like in text selection) with GetPositionFromPoint
                // in practice makes context menu not show when clicking on the first character of a line
                var currentLine = EditBox.Document.GetLineByOffset(offset);
                if (offset == currentLine.Offset || offset == currentLine.EndOffset)
                {
                    return;
                }

                var misspelledText = EditBox.Document.GetText(misspelledSegment);
                var suggestions    = SpellCheckProvider.GetSpellCheckSuggestions(misspelledText);
                foreach (var item in suggestions)
                {
                    contextMenu.Items.Add(SpellSuggestMenuItem(item, misspelledSegment));
                }
                contextMenu.Items.Add(new MenuItem
                {
                    Header           = "Add to Dictionary",
                    Command          = EditingCommands.IgnoreSpellingError,
                    CommandParameter = misspelledText
                });
                contextMenu.Items.Add(new Separator());
            }
        }
Beispiel #6
0
        void EditorContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            // don't show menu if we bail out with return
            e.Handled = true;

            if (SpellCheckProvider == null)
            {
                return;
            }

            // Bail out if the mouse isn't over the markdownEditor
            var editorPosition = Editor.GetPositionFromPoint(Mouse.GetPosition(Editor));

            if (!editorPosition.HasValue)
            {
                return;
            }

            var offset            = Editor.Document.GetOffset(editorPosition.Value.Line, editorPosition.Value.Column);
            var errorSegments     = SpellCheckProvider.GetSpellCheckErrors();
            var misspelledSegment = errorSegments.FirstOrDefault(segment => segment.StartOffset <= offset && segment.EndOffset >= offset);

            if (misspelledSegment == null)
            {
                return;
            }

            // check if the clicked offset is the beginning or end of line to prevent snapping to it (like in text selection) with GetPositionFromPoint
            // in practice makes context menu not show when clicking on the first character of a line
            var currentLine = Document.GetLineByOffset(offset);

            if (offset == currentLine.Offset || offset == currentLine.EndOffset)
            {
                return;
            }

            var misspelledWord   = editor.Document.GetText(misspelledSegment);
            var contextMenuItems = new List <object>(SpellCheckProvider.GetSpellcheckSuggestions(misspelledWord));

            contextMenuItems.Add(new Separator());
            contextMenuItems.Add(new DelegateCommand("Add to dictionary", obj =>
            {
                SpellCheckProvider.AddWordToCustomDictionary(misspelledWord);
                Editor.TextArea.TextView.Redraw();
            }));

            EditorContextMenu.ItemsSource = contextMenuItems;
            EditorContextMenu.Tag         = misspelledSegment;
            e.Handled = false;
        }
Beispiel #7
0
 public void ToggleSpellCheck(bool enable)
 {
     if (this.SpellCheckProvider != null)
     {
         this.SpellCheckProvider.ClearSpellCheckErrorsAndInvalidateLayer();
     }
     if (enable)
     {
         this.SpellCheckProvider = new SpellCheckProvider(this.SpellingService);
         this.SpellCheckProvider.Connect(this.Editor.TextArea.TextView);
         this.SpellCheckProvider.DoSpellCheck();
         return;
     }
     if (this.SpellCheckProvider != null)
     {
         this.SpellCheckProvider.Disconnect();
         this.SpellCheckProvider = null;
     }
 }
Beispiel #8
0
        private void OnStartup(object sender, StartupEventArgs ea)
        {
            InitializeSettings();
            Activated += OnActivated;

            var commonmarkConverter     = new CommonMarkConverter();
            var githubMarkdownConverter = new GitHubMarkdownConverter();

            _spellingService = new SpellingService();
            var spellCheckProvider      = new SpellCheckProvider(_spellingService);
            var snippetManager          = new SnippetManager();
            var mainWindow              = new MainWindow(commonmarkConverter, githubMarkdownConverter, spellCheckProvider, snippetManager);
            var windowPlacementSettings = mainWindow.GetWindowPlacementSettings();

            if (windowPlacementSettings.UpgradeSettings)
            {
                windowPlacementSettings.Upgrade();
                windowPlacementSettings.UpgradeSettings = false;
                windowPlacementSettings.Save();
            }

            MainWindow = mainWindow;
            MainWindow.Show();
        }
Beispiel #9
0
 public void OpenUserDictionary()
 => Utility.EditFile(SpellCheckProvider.CustomDictionaryFile());