#include "ConverterCache.h"
#include "Converter.h"
#include "CutAndPaste.h"
+#include "EnchantChecker.h"
#include "Encoding.h"
#include "ErrorList.h"
#include "Format.h"
#include "FuncStatus.h"
+#include "HunspellChecker.h"
#include "KeyMap.h"
#include "Language.h"
#include "LayoutFile.h"
#include "Lexer.h"
+#include "LyX.h"
#include "LyXAction.h"
-#include "LyXFunc.h"
#include "LyXRC.h"
#include "ModuleList.h"
#include "Mover.h"
} // namespace anon
-
/// The main application class private implementation.
struct LyX::Impl
{
- Impl()
+ Impl() : spell_checker_(0), aspell_checker_(0), enchant_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 AspellChecker();
-#else
- spell_checker_ = 0;
-#endif
}
~Impl()
{
- delete spell_checker_;
+ delete aspell_checker_;
+ delete enchant_checker_;
+ delete hunspell_checker_;
}
- /// our function handler
- LyXFunc lyxfunc_;
///
BufferList buffer_list_;
///
graphics::Previews preview_;
///
SpellChecker * spell_checker_;
+ ///
+ SpellChecker * aspell_checker_;
+ ///
+ SpellChecker * enchant_checker_;
+ ///
+ SpellChecker * hunspell_checker_;
};
///
*/
// Note: socket callback must be registered after init(argc, argv)
// such that package().temp_dir() is properly initialized.
- pimpl_->lyx_server_.reset(new Server(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
- pimpl_->lyx_socket_.reset(new ServerSocket(&pimpl_->lyxfunc_,
+ pimpl_->lyx_server_.reset(new Server(lyxrc.lyxpipes));
+ pimpl_->lyx_socket_.reset(new ServerSocket(
FileName(package().temp_dir().absFilename() + "/lyxsocket")));
// Start the real execution loop.
{
case 0:
// regular reconfigure
- pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_RECONFIGURE, ""));
+ lyx::dispatch(FuncRequest(LFUN_RECONFIGURE, ""));
break;
case 1:
// reconfigure --without-latex-config
- pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_RECONFIGURE,
+ lyx::dispatch(FuncRequest(LFUN_RECONFIGURE,
" --without-latex-config"));
break;
default:
- pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_LYX_QUIT));
+ lyx::dispatch(FuncRequest(LFUN_LYX_QUIT));
return;
}
}
// create the first main window
- pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg));
+ lyx::dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg));
if (!pimpl_->files_to_load_.empty()) {
// if some files were specified at command-line we assume that the
// user wants to edit *these* files and not to restore the session.
for (size_t i = 0; i != pimpl_->files_to_load_.size(); ++i) {
- pimpl_->lyxfunc_.dispatch(
+ lyx::dispatch(
FuncRequest(LFUN_FILE_OPEN, pimpl_->files_to_load_[i]));
}
// clear this list to save a few bytes of RAM
vector<string>::const_iterator bcend = pimpl_->batch_commands.end();
for (; bcit != bcend; bcit++) {
LYXERR(Debug::INIT, "About to handle -x '" << *bcit << '\'');
- pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(*bcit));
+ lyx::dispatch(lyxaction.lookupFunc(*bcit));
}
}
if (!LyXSetStyle())
return false;
//...and the modules
- moduleList.read();
+ theModuleList.read();
// read keymap and ui files in batch mode as well
// because InsetInfo needs to know these to produce
// load user bind file user.bind
pimpl_->toplevel_keymap_.read("user", 0, KeyMap::MissingOK);
- pimpl_->lyxfunc_.initKeySequences(&pimpl_->toplevel_keymap_);
-
if (lyxerr.debugging(Debug::LYXRC))
lyxrc.print();
}
lyxerr << to_utf8(bformat(_("Setting debug level to %1$s"), from_utf8(arg))) << endl;
- lyxerr.level(Debug::value(arg));
+ lyxerr.setLevel(Debug::value(arg));
Debug::showLevel(lyxerr, lyxerr.level());
return 1;
}
FuncStatus getStatus(FuncRequest const & action)
{
- LASSERT(singleton_, /**/);
- return singleton_->pimpl_->lyxfunc_.getStatus(action);
+ LASSERT(theApp(), /**/);
+ return theApp()->getStatus(action);
}
void dispatch(FuncRequest const & action)
{
- LASSERT(singleton_, /**/);
- singleton_->pimpl_->lyxfunc_.dispatch(action);
+ LASSERT(theApp(), /**/);
+ return theApp()->dispatch(action);
}
-BufferList & theBufferList()
+void dispatch(FuncRequest const & action, DispatchResult & dr)
{
- LASSERT(singleton_, /**/);
- return singleton_->pimpl_->buffer_list_;
+ LASSERT(theApp(), /**/);
+ return theApp()->dispatch(action, dr);
}
-LyXFunc & theLyXFunc()
+BufferList & theBufferList()
{
LASSERT(singleton_, /**/);
- return singleton_->pimpl_->lyxfunc_;
+ return singleton_->pimpl_->buffer_list_;
}
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_ENCHANT)
+ if (lyxrc.spellchecker == "enchant") {
+ if (!singleton_->pimpl_->enchant_checker_)
+ singleton_->pimpl_->enchant_checker_ = new EnchantChecker();
+ singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->enchant_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