X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=c2b2b62845a7aa75f16a24a6cb16a3810afa5283;hb=2515a3bded01e27dcc3b19502e649f01fff5ace0;hp=77d5b179e19cf395437445155d14e82b63480662;hpb=e36fba33abc2e80599b164d91e90e1558225576d;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index 77d5b179e1..c2b2b62845 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -36,9 +36,9 @@ #include "LyXFunc.h" #include "Lexer.h" #include "LyXRC.h" -#include "LyXServer.h" -#include "LyXServerSocket.h" -#include "LyXTextClassList.h" +#include "Server.h" +#include "ServerSocket.h" +#include "TextClassList.h" #include "MenuBackend.h" #include "Messages.h" #include "Mover.h" @@ -46,6 +46,7 @@ #include "frontends/alert.h" #include "frontends/Application.h" +#include "frontends/Dialogs.h" #include "frontends/Gui.h" #include "frontends/LyXView.h" @@ -62,6 +63,7 @@ #include #include +#include #include #include #include @@ -107,7 +109,7 @@ using std::system; /// are we using the GUI at all? -/** +/** * We default to true and this is changed to false when the export feature is used. */ bool use_gui = true; @@ -147,7 +149,7 @@ void reconfigureUserLyXDir() /// The main application class private implementation. -struct LyX::Singletons +struct LyX::Singletons { Singletons() { @@ -163,9 +165,9 @@ struct LyX::Singletons /// boost::scoped_ptr toplevel_keymap_; /// - boost::scoped_ptr lyx_server_; + boost::scoped_ptr lyx_server_; /// - boost::scoped_ptr lyx_socket_; + boost::scoped_ptr lyx_socket_; /// boost::scoped_ptr application_; /// lyx session, containing lastfiles, lastfilepos, and lastopened @@ -182,10 +184,10 @@ struct LyX::Singletons // The system converters copy after reading lyxrc.defaults. Converters system_converters_; - + /// Movers movers_; - + /// Movers system_movers_; }; @@ -265,28 +267,28 @@ LyXFunc const & LyX::lyxFunc() const } -LyXServer & LyX::server() +Server & LyX::server() { BOOST_ASSERT(pimpl_->lyx_server_.get()); - return *pimpl_->lyx_server_.get(); + return *pimpl_->lyx_server_.get(); } -LyXServer const & LyX::server() const +Server const & LyX::server() const { BOOST_ASSERT(pimpl_->lyx_server_.get()); - return *pimpl_->lyx_server_.get(); + return *pimpl_->lyx_server_.get(); } -LyXServerSocket & LyX::socket() +ServerSocket & LyX::socket() { BOOST_ASSERT(pimpl_->lyx_socket_.get()); return *pimpl_->lyx_socket_.get(); } -LyXServerSocket const & LyX::socket() const +ServerSocket const & LyX::socket() const { BOOST_ASSERT(pimpl_->lyx_socket_.get()); return *pimpl_->lyx_socket_.get(); @@ -340,7 +342,7 @@ Messages & LyX::getMessages(std::string const & language) if (it != pimpl_->messages_.end()) return it->second; - std::pair::iterator, bool> result = + std::pair::iterator, bool> result = pimpl_->messages_.insert(std::make_pair(language, Messages(language))); BOOST_ASSERT(result.second); @@ -360,9 +362,9 @@ void LyX::setGuiLanguage(std::string const & language) } -Buffer const * const LyX::updateInset(InsetBase const * inset) const +Buffer const * const LyX::updateInset(Inset const * inset) const { - if (!inset) + if (quitting || !inset) return 0; Buffer const * buffer_ptr = 0; @@ -379,6 +381,20 @@ Buffer const * const LyX::updateInset(InsetBase const * inset) const } +void LyX::hideDialogs(std::string const & name, Inset * inset) const +{ + if (quitting || !use_gui) + return; + + vector const & view_ids = pimpl_->application_->gui().viewIds(); + vector::const_iterator it = view_ids.begin(); + vector::const_iterator const end = view_ids.end(); + for (; it != end; ++it) + pimpl_->application_->gui().view(*it).getDialogs(). + hide(name, inset); +} + + int LyX::exec(int & argc, char * argv[]) { // Here we need to parse the command line. At least @@ -386,8 +402,8 @@ int LyX::exec(int & argc, char * argv[]) easyParse(argc, argv); try { support::init_package(to_utf8(from_local8bit(argv[0])), - cl_system_support, cl_user_support, - support::top_build_dir_is_one_level_up); + cl_system_support, cl_user_support, + support::top_build_dir_is_one_level_up); } catch (support::ExceptionMessage const & message) { if (message.type_ == support::ErrorException) { Alert::error(message.title_, message.details_); @@ -397,6 +413,10 @@ int LyX::exec(int & argc, char * argv[]) } } + // Reinit the messages machinery in case package() knows + // something interesting about the locale directory. + Messages::init(); + if (!use_gui) { // FIXME: create a ConsoleApplication int exit_status = init(argc, argv); @@ -420,7 +440,7 @@ int LyX::exec(int & argc, char * argv[]) Buffer * buf = *I; bool success = false; buf->dispatch(batch_command, &success); - final_success |= success; + final_success |= success; } prepareExit(); return !final_success; @@ -454,13 +474,13 @@ int LyX::exec(int & argc, char * argv[]) */ // Note: socket callback must be registered after init(argc, argv) // such that package().temp_dir() is properly initialized. - pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes)); - pimpl_->lyx_socket_.reset(new LyXServerSocket(&pimpl_->lyxfunc_, + pimpl_->lyx_server_.reset(new Server(&pimpl_->lyxfunc_, lyxrc.lyxpipes)); + pimpl_->lyx_socket_.reset(new ServerSocket(&pimpl_->lyxfunc_, FileName(package().temp_dir().absFilename() + "/lyxsocket"))); // Start the real execution loop. exit_status = pimpl_->application_->exec(); - + prepareExit(); // Restore original font resources after Application is destroyed. @@ -552,6 +572,17 @@ int LyX::init(int & argc, char * argv[]) } +void LyX::addFileToLoad(FileName const & fname) +{ + vector::const_iterator cit = std::find( + pimpl_->files_to_load_.begin(), pimpl_->files_to_load_.end(), + fname); + + if (cit == pimpl_->files_to_load_.end()) + pimpl_->files_to_load_.push_back(fname); +} + + void LyX::loadFiles() { vector::const_iterator it = pimpl_->files_to_load_.begin(); @@ -601,7 +632,7 @@ void LyX::restoreGuiSession() if (!pimpl_->files_to_load_.empty()) { for_each(pimpl_->files_to_load_.begin(), pimpl_->files_to_load_.end(), - bind(&LyXView::loadLyXFile, view, _1, true)); + bind(&LyXView::loadLyXFile, view, _1, true, false, false)); // clear this list to save a few bytes of RAM pimpl_->files_to_load_.clear(); pimpl_->session_->lastOpened().clear(); @@ -616,7 +647,7 @@ void LyX::restoreGuiSession() // last session, and should be already there (regular files), or should // not be added at all (help files). for_each(lastopened.begin(), lastopened.end(), - bind(&LyXView::loadLyXFile, view, _1, false)); + bind(&LyXView::loadLyXFile, view, _1, false, false, false)); // clear this list to save a few bytes of RAM pimpl_->session_->lastOpened().clear(); @@ -668,7 +699,7 @@ LyXView * LyX::newLyXView() posy = convert(val); } - if (!geometryArg.empty()) + if (!geometryArg.empty()) { width = 0; height = 0; @@ -796,7 +827,7 @@ void LyX::initGuiFont() lyxrc.sans_font_name = pimpl_->application_->sansFontName(); if (lyxrc.typewriter_font_name.empty()) - lyxrc.typewriter_font_name + lyxrc.typewriter_font_name = pimpl_->application_->typewriterFontName(); } @@ -924,8 +955,8 @@ bool LyX::init() } LYXERR(Debug::INIT) << "LyX tmp dir: `" - << package().temp_dir().absFilename() - << '\'' << endl; + << package().temp_dir().absFilename() + << '\'' << endl; LYXERR(Debug::INIT) << "Reading session information '.lyx/session'..." << endl; pimpl_->session_.reset(new Session(lyxrc.num_lastfiles)); @@ -1158,7 +1189,7 @@ bool LyX::readUIFile(string const & name, bool include) LYXERR(Debug::INIT) << "About to read " << name << "..." << endl; - + FileName ui_path; if (include) { ui_path = libFileSearch("ui", name, "inc"); @@ -1168,7 +1199,7 @@ bool LyX::readUIFile(string const & name, bool include) } else ui_path = libFileSearch("ui", name, "ui"); - + if (ui_path.empty()) { LYXERR(Debug::INIT) << "Could not find " << name << endl; showFileError(name); @@ -1238,10 +1269,10 @@ bool LyX::readLanguagesFile(string const & name) // Read the encodings file `name' bool LyX::readEncodingsFile(string const & enc_name, - string const & symbols_name) + string const & symbols_name) { LYXERR(Debug::INIT) << "About to read " << enc_name << " and " - << symbols_name << "..." << endl; + << symbols_name << "..." << endl; FileName const symbols_path = libFileSearch(string(), symbols_name); if (symbols_path.empty()) { @@ -1464,7 +1495,7 @@ LyXFunc & theLyXFunc() } -LyXServer & theLyXServer() +Server & theServer() { // FIXME: this should not be use_gui dependent BOOST_ASSERT(use_gui); @@ -1472,7 +1503,7 @@ LyXServer & theLyXServer() } -LyXServerSocket & theLyXServerSocket() +ServerSocket & theServerSocket() { // FIXME: this should not be use_gui dependent BOOST_ASSERT(use_gui);