X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_main.C;h=95b1a857723c7c8e979af4f2e652596d5f9a3e7e;hb=c727c6db7f2dd7f6a727462f5d11964888d0e76e;hp=2f50c17ad652a57ae40a115c27bda8e00c22af61;hpb=2049cc5afc11392d06f4356bd6c22a42a6bfb2b0;p=lyx.git diff --git a/src/lyx_main.C b/src/lyx_main.C index 2f50c17ad6..95b1a85772 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -40,6 +40,7 @@ #include "lyxsocket.h" #include "lyxtextclasslist.h" #include "MenuBackend.h" +#include "messages.h" #include "mover.h" #include "ToolbarBackend.h" @@ -50,7 +51,6 @@ #include "support/environment.h" #include "support/filetools.h" -#include "support/fontutils.h" #include "support/lyxlib.h" #include "support/convert.h" #include "support/os.h" @@ -64,6 +64,8 @@ #include #include +#include +#include #include @@ -90,9 +92,11 @@ namespace os = support::os; namespace fs = boost::filesystem; using std::endl; +using std::for_each; +using std::map; +using std::make_pair; using std::string; using std::vector; -using std::for_each; #ifndef CXX_GLOBAL_CSTD using std::exit; @@ -110,9 +114,6 @@ bool use_gui = true; namespace { -/// Don't try to remove the temporary directory if it has not been created -bool remove_tmpdir = false; - // Filled with the command line arguments "foo" of "-sysdir foo" or // "-userdir foo". string cl_system_support; @@ -149,6 +150,10 @@ struct LyX::Singletons { Singletons(): iconv(ucs4_codeset, "UTF-8") { + // Set the default User Interface language as soon as possible. + // The language used will be derived from the environment + // variables. + messages_["GUI"] = Messages(); } /// our function handler LyXFunc lyxfunc_; @@ -170,6 +175,15 @@ struct LyX::Singletons /// Files to load at start. vector files_to_load_; + + /// The messages translators. + map messages_; + + /// The file converters. + Converters converters_; + + // The system converters copy after reading lyxrc.defaults. + Converters system_converters_; }; /// @@ -297,6 +311,18 @@ kb_keymap & LyX::topLevelKeymap() } +Converters & LyX::converters() +{ + return pimpl_->converters_; +} + + +Converters & LyX::systemConverters() +{ + return pimpl_->system_converters_; +} + + IconvProcessor & LyX::iconvProcessor() { return pimpl_->iconv; @@ -310,6 +336,33 @@ kb_keymap const & LyX::topLevelKeymap() const } +Messages & LyX::getMessages(std::string const & language) +{ + map::iterator it = pimpl_->messages_.find(language); + + if (it != pimpl_->messages_.end()) + return it->second; + + std::pair::iterator, bool> result = + pimpl_->messages_.insert(std::make_pair(language, Messages(language))); + + BOOST_ASSERT(result.second); + return result.first->second; +} + + +Messages & LyX::getGuiMessages() +{ + return pimpl_->messages_["GUI"]; +} + + +void LyX::setGuiLanguage(std::string const & language) +{ + pimpl_->messages_["GUI"] = Messages(language); +} + + Buffer const * const LyX::updateInset(InsetBase const * inset) const { if (!inset) @@ -369,7 +422,7 @@ int LyX::exec(int & argc, char * argv[]) } // Force adding of font path _before_ Application is initialized - support::addFontResources(); + support::os::addFontResources(); // Let the frontend parse and remove all arguments that it knows pimpl_->application_.reset(createApplication(argc, argv)); @@ -406,7 +459,7 @@ int LyX::exec(int & argc, char * argv[]) prepareExit(); // Restore original font resources after Application is destroyed. - support::restoreFontResources(); + support::os::restoreFontResources(); return exit_status; } @@ -422,7 +475,7 @@ void LyX::prepareExit() pimpl_->buffer_list_.closeAll(); // do any other cleanup procedures now - if (remove_tmpdir) { + if (package().temp_dir() != package().system_temp_dir()) { lyxerr[Debug::INFO] << "Deleting tmp dir " << package().temp_dir() << endl; @@ -483,7 +536,8 @@ int LyX::init(int & argc, char * argv[]) // get absolute path of file and add ".lyx" to // the filename if necessary pimpl_->files_to_load_.push_back(fileSearch(string(), - os::internal_path(to_utf8(from_local8bit(argv[argi]))), "lyx")); + os::internal_path(to_utf8(from_local8bit(argv[argi]))), + "lyx", support::allow_unreadable)); } if (first_start) @@ -768,6 +822,9 @@ bool LyX::init() if (!readRcFile("lyxrc.dist")) return false; + // Set the language defined by the distributor. + //setGuiLanguage(lyxrc.gui_language); + // Set the PATH correctly. #if !defined (USE_POSIX_PACKAGING) // Add the directory containing the LyX executable to the path @@ -799,7 +856,7 @@ bool LyX::init() system_lyxrc = lyxrc; system_formats = formats; - system_converters = converters; + pimpl_->system_converters_ = pimpl_->converters_; system_movers = movers; system_lcolor = lcolor; @@ -818,6 +875,9 @@ bool LyX::init() return false; if (use_gui) { + // Set the language defined by the user. + //setGuiLanguage(lyxrc.gui_language); + // Set up bindings pimpl_->toplevel_keymap_.reset(new kb_keymap); defaultKeyBindings(pimpl_->toplevel_keymap_.get()); @@ -856,7 +916,6 @@ bool LyX::init() // trying again but simply exit. return false; } - remove_tmpdir = true; if (lyxerr.debugging(Debug::INIT)) { lyxerr << "LyX tmp dir: `" << package().temp_dir() << '\'' << endl; @@ -1401,9 +1460,33 @@ kb_keymap & theTopLevelKeymap() } +Converters & theConverters() +{ + return LyX::ref().converters(); +} + + +Converters & theSystemConverters() +{ + return LyX::ref().systemConverters(); +} + + IconvProcessor & utf8ToUcs4() { return LyX::ref().iconvProcessor(); } + +Messages & getMessages(std::string const & language) +{ + return LyX::ref().getMessages(language); +} + + +Messages & getGuiMessages() +{ + return LyX::ref().getGuiMessages(); +} + } // namespace lyx