Exemple #1
0
        public RedUnderlineAdorner(SpellTextBox textbox) : base(textbox)
        {
            sizeChangedEventHandler = new SizeChangedEventHandler(
                delegate
            {
                SignalInvalidate();
            });

            routedEventHandler = new RoutedEventHandler(
                delegate
            {
                SignalInvalidate();
            });

            scrollChangedEventHandler = new ScrollChangedEventHandler(
                delegate
            {
                SignalInvalidate();
            });

            textbox.SizeChanged += sizeChangedEventHandler;

            textbox.SpellcheckCompleted += routedEventHandler;

            textbox.AddHandler(ScrollViewer.ScrollChangedEvent, scrollChangedEventHandler);
        }
 public SpellChecker(Hunspell HunSpell, SpellTextBox Parent)
 {
     hunSpell        = HunSpell;
     box             = Parent;
     Words           = new List <Word>();
     MisspelledWords = new ObservableCollection <Word>();
     IgnoredWords    = new List <Word>();
     SuggestedWords  = new ObservableCollection <Word>();
 }
        public ObservableCollection <Word> CheckSpelling(SpellTextBox textBox)
        {
            ObservableCollection <Word> ret = new ObservableCollection <Word>();

            for (int lineIndex = 0; lineIndex < textBox.LineCount; lineIndex++)
            {
                var matches = Regex.Matches(textBox.GetLineText(lineIndex), @"\w+[^\s]*\w+|\w");

                for (var i = 0; i < matches.Count; i++)
                {
                    Match match = matches[i];
                    if (!IgnoredWords.Contains(match.Value) && !_hunSpell.Spell(match.Value) && !Regex.IsMatch(match.Value, "^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$"))
                    {
                        ret.Add(new Word(match.Value, match.Index, lineIndex));
                    }
                }
            }
            return(ret);
        }
        public RedUnderlineAdorner(SpellTextBox textbox) : base(textbox)
        {
            timer.Tick    += timer_Tick;
            timer.Interval = new TimeSpan(0, 0, 0, 0, 200);

            stopwatch.Start();
            timer.Start();

            sizeChangedEventHandler = new SizeChangedEventHandler(
                delegate
            {
                adornerClear = true;
                SignalInvalidate();
                timer.Start();
            });

            routedEventHandler = new RoutedEventHandler(
                delegate
            {
                adornerClear = true;
                SignalInvalidate();
                timer.Start();
            });

            scrollChangedEventHandler = new ScrollChangedEventHandler(
                delegate
            {
                adornerClear = true;
                SignalInvalidate();
                timer.Start();
            });

            textbox.SizeChanged         += sizeChangedEventHandler;
            textbox.SpellcheckCompleted += routedEventHandler;
            textbox.AddHandler(ScrollViewer.ScrollChangedEvent, scrollChangedEventHandler);
        }
Exemple #5
0
 void SignalInvalidate()
 {
     box = (SpellTextBox)this.AdornedElement;
     box.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)InvalidateVisual);
 }