#include "LyX.h"
-#include "ASpell_local.h"
+#include "AspellChecker.h"
#include "Buffer.h"
#include "BufferList.h"
#include "CmdDef.h"
#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 ASpell();
-#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_;
};
///
easyParse(argc, argv);
try {
- init_package(to_utf8(from_local8bit(argv[0])),
+ init_package(os::utf8_argv(0),
cl_system_support, cl_user_support,
top_build_dir_is_one_level_up);
} catch (ExceptionMessage const & message) {
*/
// 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.
if (argv[argi][0] == '-') {
lyxerr << to_utf8(
bformat(_("Wrong command line option `%1$s'. Exiting."),
- from_utf8(argv[argi]))) << endl;
+ from_utf8(os::utf8_argv(argi)))) << endl;
return EXIT_FAILURE;
}
}
// Remaining arguments are assumed to be files to load.
for (int argi = argc - 1; argi >= 1; --argi)
- pimpl_->files_to_load_.push_back(to_utf8(from_local8bit(argv[argi])));
+ pimpl_->files_to_load_.push_back(os::utf8_argv(argi));
if (first_start) {
pimpl_->files_to_load_.push_back(
{
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;
}
continue;
string const arg =
- (i + 1 < argc) ? to_utf8(from_local8bit(argv[i + 1])) : string();
+ (i + 1 < argc) ? os::utf8_argv(i + 1) : string();
string const arg2 =
- (i + 2 < argc) ? to_utf8(from_local8bit(argv[i + 2])) : string();
+ (i + 2 < argc) ? os::utf8_argv(i + 2) : string();
string batch;
int const remove = 1 + it->second(arg, arg2, batch);
// Now, remove used arguments by shifting
// the following ones remove places down.
if (remove > 0) {
+ os::remove_internal_args(i, remove);
argc -= remove;
for (int j = i; j < argc; ++j)
argv[j] = argv[j + remove];
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_;
}
}
-Messages & getMessages(string const & language)
+Messages const & getMessages(string const & language)
{
LASSERT(singleton_, /**/);
return singleton_->messages(language);
}
-Messages & getGuiMessages()
+Messages const & getGuiMessages()
{
LASSERT(singleton_, /**/);
return singleton_->pimpl_->messages_["GUI"];
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