Update all spellcheckers after adding a word
Previously adding a word to the dictionary via the spell checker dialog would not update the dictionary used by the subs edit box and vice-versa. Originally committed to SVN as r6396.
This commit is contained in:
parent
57fc4145d9
commit
4c4ea92d0f
1 changed files with 15 additions and 8 deletions
|
@ -43,7 +43,7 @@
|
||||||
#ifndef AGI_PRE
|
#ifndef AGI_PRE
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <list>
|
#include <set>
|
||||||
|
|
||||||
#include <wx/dir.h>
|
#include <wx/dir.h>
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
|
@ -89,7 +89,7 @@ void HunspellSpellChecker::AddWord(wxString word) {
|
||||||
// Add it to the in-memory dictionary
|
// Add it to the in-memory dictionary
|
||||||
hunspell->add(conv->Convert(sword).c_str());
|
hunspell->add(conv->Convert(sword).c_str());
|
||||||
|
|
||||||
std::list<std::string> words;
|
std::set<std::string> words;
|
||||||
|
|
||||||
// Ensure that the path exists
|
// Ensure that the path exists
|
||||||
wxFileName fn(userDicPath);
|
wxFileName fn(userDicPath);
|
||||||
|
@ -103,7 +103,7 @@ void HunspellSpellChecker::AddWord(wxString word) {
|
||||||
remove_copy_if(
|
remove_copy_if(
|
||||||
++agi::line_iterator<std::string>(*stream),
|
++agi::line_iterator<std::string>(*stream),
|
||||||
agi::line_iterator<std::string>(),
|
agi::line_iterator<std::string>(),
|
||||||
back_inserter(words),
|
inserter(words, words.end()),
|
||||||
mem_fun_ref(&std::string::empty));
|
mem_fun_ref(&std::string::empty));
|
||||||
}
|
}
|
||||||
catch (agi::FileNotFoundError&) {
|
catch (agi::FileNotFoundError&) {
|
||||||
|
@ -112,13 +112,20 @@ void HunspellSpellChecker::AddWord(wxString word) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the word
|
// Add the word
|
||||||
words.push_back(sword);
|
words.insert(sword);
|
||||||
words.sort();
|
|
||||||
|
|
||||||
// Write the new dictionary
|
// Write the new dictionary
|
||||||
agi::io::Save writer(STD_STR(userDicPath));
|
{
|
||||||
writer.Get() << words.size() << "\n";
|
agi::io::Save writer(STD_STR(userDicPath));
|
||||||
copy(words.begin(), words.end(), std::ostream_iterator<std::string>(writer.Get(), "\n"));
|
writer.Get() << words.size() << "\n";
|
||||||
|
copy(words.begin(), words.end(), std::ostream_iterator<std::string>(writer.Get(), "\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Announce a language change so that any other spellcheckers pick up the
|
||||||
|
// new word
|
||||||
|
lang_listener.Block();
|
||||||
|
OPT_SET("Tool/Spell Checker/Language")->SetString(OPT_GET("Tool/Spell Checker/Language")->GetString());
|
||||||
|
lang_listener.Unblock();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HunspellSpellChecker::CheckWord(wxString word) {
|
bool HunspellSpellChecker::CheckWord(wxString word) {
|
||||||
|
|
Loading…
Reference in a new issue