summaryrefslogtreecommitdiffstats
path: root/editor/nsIEditorSpellCheck.idl
blob: 0849956c7abcb61b770f3761a01ebe161ad6c24b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIEditor;
interface nsIEditorSpellCheckCallback;

[scriptable, uuid(a171c25f-e4a8-4d08-adef-b797e6377bdc)]
interface nsIEditorSpellCheck : nsISupports
{

 /**
   * Returns true if we can enable spellchecking. If there are no available
   * dictionaries, this will return false.
   */
  boolean       canSpellCheck();

  /**
   * Turns on the spell checker for the given editor. enableSelectionChecking
   * set means that we only want to check the current selection in the editor,
   * (this controls the behavior of GetNextMisspelledWord). For spellchecking
   * clients with no modal UI (such as inline spellcheckers), this flag doesn't
   * matter.  Initialization is asynchronous and is not complete until the given
   * callback is called.
   */
  void          InitSpellChecker(in nsIEditor editor, in boolean enableSelectionChecking,
                                 [optional] in nsIEditorSpellCheckCallback callback);

  /**
   * When interactively spell checking the document, this will return the
   * value of the next word that is misspelled. This also computes the
   * suggestions which you can get by calling GetSuggestedWord.
   *
   * @see mozSpellChecker::GetNextMisspelledWord
   */
  [can_run_script]
  AString       GetNextMisspelledWord();

  /**
   * Used to get suggestions for the last word that was checked and found to
   * be misspelled. The first call will give you the first (best) suggestion.
   * Subsequent calls will iterate through all the suggestions, allowing you
   * to build a list. When there are no more suggestions, an empty string
   * (not a null pointer) will be returned.
   *
   * @see mozSpellChecker::GetSuggestedWord
   */
  AString       GetSuggestedWord();

  /**
   * Check a given word. In spite of the name, this function checks the word
   * you give it, returning true if the word is misspelled. If the word is
   * misspelled, it will compute the suggestions which you can get from
   * GetSuggestedWord().
   *
   * @see mozSpellChecker::CheckCurrentWord
   */
  boolean       CheckCurrentWord(in AString suggestedWord);

  /**
   * Check a given word then returns suggestion words via Promise if a given
   * word is misspelled. If not misspelled, returns empty string array.
   */
  [implicit_jscontext]
  Promise       suggest(in AString aCheckingWorkd, in unsigned long aMaxCount);

  /**
   * Use when modally checking the document to replace a word.
   *
   * @see mozSpellChecker::CheckCurrentWord
   */
  [can_run_script]
  void          ReplaceWord(in AString misspelledWord, in AString replaceWord, in boolean allOccurrences);

  /**
   * @see mozSpellChecker::IgnoreAll
   */
  void          IgnoreWordAllOccurrences(in AString word);

  /**
   * Fills an internal list of words added to the personal dictionary. These
   * words can be retrieved using GetPersonalDictionaryWord()
   *
   * @see mozSpellChecker::GetPersonalDictionary
   * @see GetPersonalDictionaryWord
   */
  void          GetPersonalDictionary();

  /**
   * Used after you call GetPersonalDictionary() to iterate through all the
   * words added to the personal dictionary. Will return the empty string when
   * there are no more words.
   */
  AString       GetPersonalDictionaryWord();

  /**
   * Adds a word to the current personal dictionary.
   *
   * @see mozSpellChecker::AddWordToDictionary
   */
  void          AddWordToDictionary(in AString word);

  /**
   * Removes a word from the current personal dictionary.
   *
   * @see mozSpellChecker::RemoveWordFromPersonalDictionary
   */
  void          RemoveWordFromDictionary(in AString word);

  /**
   * Retrieves a list of the currently available dictionaries. The strings will
   * typically be language IDs, like "en-US".
   *
   * @see mozISpellCheckingEngine::GetDictionaryList
   */
  Array<ACString> GetDictionaryList();

  /**
   * @see mozSpellChecker::GetCurrentDictionaries
   */
  Array<ACString> getCurrentDictionaries();

  /**
   * @see mozSpellChecker::SetCurrentDictionaries
   */
  [implicit_jscontext]
  Promise       setCurrentDictionaries(in Array<ACString> dictionaries);

  /**
   * Call this to free up the spell checking object. It will also save the
   * current selected language as the default for future use.
   *
   * If you have called CanSpellCheck but not InitSpellChecker, you can still
   * call this function to clear the cached spell check object, and no
   * preference saving will happen.
   */
  void          UninitSpellChecker();

  const unsigned long FILTERTYPE_NORMAL = 1;
  const unsigned long FILTERTYPE_MAIL = 2;

  /**
   * Used to filter the content (for example, to skip blockquotes in email from
   * spellchecking. Call this before calling InitSpellChecker; calling it
   * after initialization will have no effect.
   */
  void          setFilterType(in unsigned long filterType);

  /**
   * Update the dictionary in use to be sure it corresponds to what the editor
   * needs.  The update is asynchronous and is not complete until the given
   * callback is called.
   */
  void          UpdateCurrentDictionary([optional] in nsIEditorSpellCheckCallback callback);

};

[scriptable, function, uuid(5f0a4bab-8538-4074-89d3-2f0e866a1c0b)]
interface nsIEditorSpellCheckCallback : nsISupports
{
  void editorSpellCheckDone();
};