X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=29c8defc23149d180a26a0e89131a8d7b676848f;hb=4056f0ddb150d0e5d60bc5941d51e365eed0ac86;hp=d425369fd7d67549fa372317f4a799c97a36aec9;hpb=efbd1d30cb119692dd11276cd01e9399ee9d124c;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index d425369fd7..29c8defc23 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -17,7 +17,6 @@ #include "LyX.h" -#include "buffer_funcs.h" #include "Buffer.h" #include "BufferList.h" #include "CmdDef.h" @@ -52,7 +51,6 @@ #include "support/filetools.h" #include "support/gettext.h" #include "support/lstrings.h" -#include "support/lyxlib.h" #include "support/Messages.h" #include "support/os.h" #include "support/Package.h" @@ -66,6 +64,7 @@ #include #include #include +#include #include #include @@ -147,7 +146,7 @@ struct LyX::Impl boost::scoped_ptr session_; /// Files to load at start. - vector files_to_load_; + vector files_to_load_; /// The messages translators. map messages_; @@ -184,7 +183,6 @@ LyX::~LyX() delete pimpl_; } -#include void LyX::exit(int exit_code) const { @@ -526,24 +524,22 @@ int LyX::init(int & argc, char * argv[]) if (!success) return EXIT_FAILURE; - for (int argi = argc - 1; argi >= 1; --argi) { - // 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", allow_unreadable)); - } + // 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]))); - if (first_start) - pimpl_->files_to_load_.push_back(i18nLibFileSearch("examples", "splash.lyx")); + if (first_start) { + pimpl_->files_to_load_.push_back( + i18nLibFileSearch("examples", "splash.lyx").absFilename()); + } return EXIT_SUCCESS; } -void LyX::addFileToLoad(FileName const & fname) +void LyX::addFileToLoad(string const & fname) { - vector::const_iterator cit = find( + vector::const_iterator cit = find( pimpl_->files_to_load_.begin(), pimpl_->files_to_load_.end(), fname); @@ -554,15 +550,20 @@ void LyX::addFileToLoad(FileName const & fname) void LyX::loadFiles() { - vector::const_iterator it = pimpl_->files_to_load_.begin(); - vector::const_iterator end = pimpl_->files_to_load_.end(); + vector::const_iterator it = pimpl_->files_to_load_.begin(); + vector::const_iterator end = pimpl_->files_to_load_.end(); for (; it != end; ++it) { - if (it->empty()) + // get absolute path of file and add ".lyx" to + // the filename if necessary + FileName fname = fileSearch(string(), os::internal_path(*it), "lyx", + may_not_exist); + + if (fname.empty()) continue; - Buffer * buf = pimpl_->buffer_list_.newBuffer(it->absFilename(), false); - if (buf->loadLyXFile(*it)) { + Buffer * buf = pimpl_->buffer_list_.newBuffer(fname.absFilename(), false); + if (buf->loadLyXFile(fname)) { ErrorList const & el = buf->errorList("Parse"); if (!el.empty()) for_each(el.begin(), el.end(), @@ -579,10 +580,9 @@ void LyX::execBatchCommands() // The advantage of doing this here is that the event loop // is already started. So any need for interaction will be // aknowledged. - restoreGuiSession(); // if reconfiguration is needed. - if (textclasslist.empty()) { + while (textclasslist.empty()) { switch (Alert::prompt( _("No textclass is found"), _("LyX cannot continue because no textclass is found. " @@ -602,62 +602,38 @@ void LyX::execBatchCommands() pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_RECONFIGURE, " --without-latex-config")); break; + default: + pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_LYX_QUIT)); + return; } - pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_LYX_QUIT)); - return; } - // Execute batch commands if available - if (pimpl_->batch_command.empty()) - return; - - LYXERR(Debug::INIT, "About to handle -x '" << pimpl_->batch_command << '\''); - - pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(pimpl_->batch_command)); -} - - -void LyX::restoreGuiSession() -{ - // create the main window + // create the first main window pimpl_->lyxfunc_.dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg)); - // if there is no valid class list, do not load any file. - if (textclasslist.empty()) - return; - - // if some files were specified at command-line we assume that the - // user wants to edit *these* files and not to restore the session. if (!pimpl_->files_to_load_.empty()) { - for_each(pimpl_->files_to_load_.begin(), - pimpl_->files_to_load_.end(), - bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, true)); + // 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( + FuncRequest(LFUN_FILE_OPEN, pimpl_->files_to_load_[i])); + } // clear this list to save a few bytes of RAM pimpl_->files_to_load_.clear(); - pimpl_->session_->lastOpened().clear(); + } + else + pimpl_->application_->restoreGuiSession(); - } else if (lyxrc.load_session) { - vector const & lastopened = pimpl_->session_->lastOpened().getfiles(); - // do not add to the lastfile list since these files are restored from - // 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(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, false)); + // Execute batch commands if available + if (pimpl_->batch_command.empty()) + return; - // clear this list to save a few bytes of RAM - pimpl_->session_->lastOpened().clear(); - } + LYXERR(Debug::INIT, "About to handle -x '" << pimpl_->batch_command << '\''); - BufferList::iterator I = pimpl_->buffer_list_.begin(); - BufferList::iterator end = pimpl_->buffer_list_.end(); - for (; I != end; ++I) { - Buffer * buf = *I; - if (buf != buf->masterBuffer()) - continue; - updateLabels(*buf); - } + pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(pimpl_->batch_command)); } + /* Signals and Windows =================== @@ -869,7 +845,7 @@ bool LyX::init() pimpl_->lyxfunc_.initKeySequences(&pimpl_->toplevel_keymap_); // Read menus - if (!readUIFile(lyxrc.ui_file)) + if (use_gui && !readUIFile(lyxrc.ui_file)) return false; if (lyxerr.debugging(Debug::LYXRC)) @@ -1110,7 +1086,7 @@ bool LyX::readUIFile(string const & name, bool include) break; } case ui_menuset: - menubackend.read(lex); + theApp()->menuBackend().read(lex); break; case ui_toolbarset: