]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
Cleanup: Replace a bunch of Cursor arguments with DocIterators.
[lyx.git] / src / LyX.cpp
index 8acdb53a788f758525931854deab862bad7c7141..e2e5b0c925a9ab378eafcebc947449a845c0a93a 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "LyX.h"
 
-#include "ASpell_local.h"
+#include "AspellChecker.h"
 #include "Buffer.h"
 #include "BufferList.h"
 #include "CmdDef.h"
@@ -29,6 +29,7 @@
 #include "ErrorList.h"
 #include "Format.h"
 #include "FuncStatus.h"
+#include "HunspellChecker.h"
 #include "KeyMap.h"
 #include "Language.h"
 #include "LayoutFile.h"
@@ -118,27 +119,21 @@ void reconfigureUserLyXDir()
 
 } // namespace anon
 
-
 /// The main application class private implementation.
 struct LyX::Impl
 {
-       Impl()
+       Impl() : spell_checker_(0), aspell_checker_(0), hunspell_checker_(0)
        {
                // Set the default User Interface language as soon as possible.
                // The language used will be derived from the environment
                // variables.
                messages_["GUI"] = Messages();
-
-#if defined(USE_ASPELL)
-               spell_checker_ = new ASpell();
-#else
-               spell_checker_ = 0;
-#endif
        }
 
        ~Impl()
        {
-               delete spell_checker_;
+               delete aspell_checker_;
+               delete hunspell_checker_;
        }
 
        /// our function handler
@@ -184,6 +179,10 @@ struct LyX::Impl
        graphics::Previews preview_;
        ///
        SpellChecker * spell_checker_;
+       ///
+       SpellChecker * aspell_checker_;
+       ///
+       SpellChecker * hunspell_checker_;
 };
 
 ///
@@ -1275,7 +1274,31 @@ CmdDef & theTopLevelCmdDef()
 
 SpellChecker * theSpellChecker()
 {
+       if (!singleton_->pimpl_->spell_checker_)
+               setSpellChecker();
        return singleton_->pimpl_->spell_checker_;
 }
 
+
+void setSpellChecker()
+{
+#if defined(USE_ASPELL)
+       if (lyxrc.spellchecker == "aspell") {
+               if (!singleton_->pimpl_->aspell_checker_)
+                       singleton_->pimpl_->aspell_checker_ = new AspellChecker();
+               singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->aspell_checker_;
+               return;
+       }
+#endif
+#if defined(USE_HUNSPELL)
+       if (lyxrc.spellchecker == "hunspell") {
+               if (!singleton_->pimpl_->hunspell_checker_)
+                       singleton_->pimpl_->hunspell_checker_ = new HunspellChecker();
+               singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->hunspell_checker_;
+               return;
+       }
+#endif
+       singleton_->pimpl_->spell_checker_ = 0;
+}
+
 } // namespace lyx