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); }
void SignalInvalidate() { box = (SpellTextBox)this.AdornedElement; box.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)InvalidateVisual); }