X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_main.C;h=f323a19069e7b52177e7380761f5a3267e131388;hb=a9713c5563c924f4ab98bde3d9f24a5c1e4dd50e;hp=e55212f0388ea4df967ec2801a5dbec6e71988cb;hpb=37a1ffccb9c3e8c1ec6662a18bbd21d773e4a245;p=lyx.git diff --git a/src/lyx_main.C b/src/lyx_main.C index e55212f038..f323a19069 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -27,7 +27,7 @@ #include "lyxserver.h" #include "kbmap.h" #include "lyxfunc.h" -#include "ToolbarDefaults.h" +#include "ToolbarBackend.h" #include "MenuBackend.h" #include "language.h" #include "lastfiles.h" @@ -39,7 +39,6 @@ #include "frontends/Alert.h" #include "frontends/lyx_gui.h" -#include "BoostFormat.h" #include #include @@ -74,6 +73,17 @@ BufferList bufferlist; // convenient to have it here. boost::scoped_ptr toplevel_keymap; +namespace { + +void showFileError(string const & error) +{ + Alert::warning(_("Could not read configuration file"), + bformat(_("Error while reading the configuration file\n%1$s.\n" + "Please check your installation."), error)); + exit(EXIT_FAILURE); +} + +} LyX::LyX(int & argc, char * argv[]) { @@ -98,15 +108,8 @@ LyX::LyX(int & argc, char * argv[]) // other than documents for (int argi = 1; argi < argc ; ++argi) { if (argv[argi][0] == '-') { -#if USE_BOOST_FORMAT - lyxerr << boost::format(_("Wrong command line option `%1$s'. Exiting.")) - % argv[argi] - << endl; -#else - lyxerr << _("Wrong command line option `") - << argv[argi] << _("'. Exiting.") - << endl; -#endif + lyxerr << bformat(_("Wrong command line option `%1$s'. Exiting."), + argv[argi]) << endl; exit(1); } } @@ -126,9 +129,8 @@ LyX::LyX(int & argc, char * argv[]) files.push_back(argv[argi]); } - if (first_start) { + if (first_start) files.push_back(i18nLibFileSearch("examples", "splash.lyx")); - } // Execute batch commands if available if (!batch_command.empty()) { @@ -358,16 +360,8 @@ void LyX::init(bool gui) << "Giving up." << endl; exit(1); } -#if USE_BOOST_FORMAT - lyxerr << boost::format(_("Using built-in default %1$s" - " but expect problems.")) - % static_cast(LYX_DIR) - << endl; -#else - lyxerr << _("Using built-in default ") << LYX_DIR - << _(" but expect problems.") - << endl; -#endif + lyxerr << bformat(_("Using built-in default %1$s but expect problems."), + LYX_DIR) << endl; } else { lyxerr << _("Expect problems.") << endl; } @@ -413,23 +407,23 @@ void LyX::init(bool gui) first_start = false; } - // - // Shine up lyxrc defaults - // + // Disable gui when easyparse says so + lyx_gui::use_gui = gui; - // Default template path: system_dir/templates if (lyxrc.template_path.empty()) { lyxrc.template_path = AddPath(system_lyxdir, "templates"); } - // Default lastfiles file: $HOME/.lyx/lastfiles if (lyxrc.lastfiles.empty()) { lyxrc.lastfiles = AddName(user_lyxdir, "lastfiles"); } - // Disable gui when either lyxrc or easyparse says so - if (!gui) - lyxrc.use_gui = false; + if (lyxrc.roman_font_name.empty()) + lyxrc.roman_font_name = lyx_gui::roman_font_name(); + if (lyxrc.sans_font_name.empty()) + lyxrc.sans_font_name = lyx_gui::sans_font_name(); + if (lyxrc.typewriter_font_name.empty()) + lyxrc.typewriter_font_name = lyx_gui::typewriter_font_name(); // // Read configuration files @@ -441,10 +435,12 @@ void LyX::init(bool gui) system_converters = converters; system_lcolor = lcolor; - // If there is a preferences file we read that instead - // of the old lyxrc file. - if (!readRcFile("preferences")) - readRcFile("lyxrc"); + string prefsfile = "preferences"; + // back compatibility to lyxs < 1.1.6 + if (LibFileSearch(string(), prefsfile).empty()) + prefsfile = "lyxrc"; + if (!LibFileSearch(string(), prefsfile).empty()) + readRcFile(prefsfile); readEncodingsFile("encodings"); readLanguagesFile("languages"); @@ -460,9 +456,8 @@ void LyX::init(bool gui) // Read menus readUIFile(lyxrc.ui_file); - if (lyxerr.debugging(Debug::LYXRC)) { + if (lyxerr.debugging(Debug::LYXRC)) lyxrc.print(); - } os::setTmpDir(CreateLyXTmpDir(lyxrc.tempdir_path)); system_tempdir = os::getTmpDir(); @@ -485,8 +480,8 @@ void LyX::defaultKeyBindings(kb_keymap * kbmap) kbmap->bind("Up", LFUN_UP); kbmap->bind("Down", LFUN_DOWN); - kbmap->bind("Tab", LFUN_TAB); - kbmap->bind("ISO_Left_Tab", LFUN_TAB); // jbl 2001-23-02 + kbmap->bind("Tab", LFUN_CELL_FORWARD); + kbmap->bind("ISO_Left_Tab", LFUN_CELL_FORWARD); // jbl 2001-23-02 kbmap->bind("Home", LFUN_HOME); kbmap->bind("End", LFUN_END); @@ -530,9 +525,9 @@ void LyX::defaultKeyBindings(kb_keymap * kbmap) kbmap->bind("KP_Prior", LFUN_PRIOR); kbmap->bind("KP_Next", LFUN_NEXT); - kbmap->bind("C-Tab", LFUN_TABINSERT); // ale970515 - kbmap->bind("S-Tab", LFUN_SHIFT_TAB); // jug20000522 - kbmap->bind("S-ISO_Left_Tab", LFUN_SHIFT_TAB); // jbl 2001-23-02 + kbmap->bind("C-Tab", LFUN_CELL_SPLIT); // ale970515 + kbmap->bind("S-Tab", LFUN_CELL_BACKWARD); // jug20000522 + kbmap->bind("S-ISO_Left_Tab", LFUN_CELL_BACKWARD); // jbl 2001-23-02 } @@ -598,29 +593,14 @@ void LyX::queryUserLyXDir(bool explicit_userdir) first_start = !explicit_userdir; -#if USE_BOOST_FORMAT - lyxerr << boost::format(_("LyX: Creating directory %1$s" - " and running configure...")) - % user_lyxdir - << endl; -#else - lyxerr << _("LyX: Creating directory ") << user_lyxdir - << _(" and running configure...") - << endl; -#endif + lyxerr << bformat(_("LyX: Creating directory %1$s" + " and running configure..."), user_lyxdir) << endl; if (!createDirectory(user_lyxdir, 0755)) { // Failed, let's use $HOME instead. user_lyxdir = GetEnvPath("HOME"); -#if USE_BOOST_FORMAT - lyxerr << boost::format(_("Failed. Will use %1$s instead.")) - % user_lyxdir - << endl; -#else - lyxerr << _("Failed. Will use ") << user_lyxdir << - _(" instead.") - << endl; -#endif + lyxerr << bformat(_("Failed. Will use %1$s instead."), + user_lyxdir) << endl; return; } @@ -631,32 +611,21 @@ void LyX::queryUserLyXDir(bool explicit_userdir) } -bool LyX::readRcFile(string const & name) +void LyX::readRcFile(string const & name) { lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; string const lyxrc_path = LibFileSearch(string(), name); if (!lyxrc_path.empty()) { + lyxerr[Debug::INIT] << "Found " << name << " in " << lyxrc_path << endl; - if (lyxrc.read(lyxrc_path) < 0) { -#if USE_BOOST_FORMAT - Alert::alert(_("LyX Warning!"), - boost::io::str(boost::format(_("Error while reading %1$s.")) % lyxrc_path), - _("Using built-in defaults.")); -#else - Alert::alert(_("LyX Warning!"), - _("Error while reading ") + lyxrc_path, - _("Using built-in defaults.")); -#endif - return false; - } - return true; - } else { - lyxerr[Debug::INIT] << "Could not find " << name << endl; + + if (lyxrc.read(lyxrc_path) >= 0) + return; } - return false; + showFileError(name); } @@ -666,23 +635,41 @@ void LyX::readUIFile(string const & name) enum Uitags { ui_menuset = 1, ui_toolbar, + ui_toolbars, + ui_include, ui_last }; struct keyword_item uitags[ui_last - 1] = { + { "include", ui_include }, { "menuset", ui_menuset }, - { "toolbar", ui_toolbar } + { "toolbar", ui_toolbar }, + { "toolbars", ui_toolbars } }; + // Ensure that a file is read only once (prevents include loops) + static std::list uifiles; + std::list::const_iterator it = uifiles.begin(); + std::list::const_iterator end = uifiles.end(); + it = std::find(it, end, name); + if (it != end) { + lyxerr[Debug::INIT] << "UI file '" << name + << "' has been read already. " + << "Is this an include loop?" + << endl; + return; + } + lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; string const ui_path = LibFileSearch("ui", name, "ui"); if (ui_path.empty()) { lyxerr[Debug::INIT] << "Could not find " << name << endl; - menubackend.defaults(); + showFileError(name); return; } + uifiles.push_back(name); lyxerr[Debug::INIT] << "Found " << name << " in " << ui_path << endl; @@ -698,12 +685,22 @@ void LyX::readUIFile(string const & name) while (lex.isOK()) { switch (lex.lex()) { + case ui_include: { + lex.next(true); + string const file = lex.getString(); + readUIFile(file); + break; + } case ui_menuset: menubackend.read(lex); break; case ui_toolbar: - toolbardefaults.read(lex); + toolbarbackend.read(lex); + break; + + case ui_toolbars: + toolbarbackend.readToolbars(lex); break; default: @@ -723,8 +720,7 @@ void LyX::readLanguagesFile(string const & name) string const lang_path = LibFileSearch(string(), name); if (lang_path.empty()) { - lyxerr[Debug::INIT] << "Could not find " << name << endl; - languages.setDefaults(); + showFileError(name); return; } languages.read(lang_path); @@ -738,7 +734,7 @@ void LyX::readEncodingsFile(string const & name) string const enc_path = LibFileSearch(string(), name); if (enc_path.empty()) { - lyxerr[Debug::INIT] << "Could not find " << name << endl; + showFileError(name); return; } encodings.read(enc_path); @@ -760,19 +756,14 @@ int parse_dbg(string const & arg, string const &) Debug::showTags(lyxerr); exit(0); } -#if USE_BOOST_FORMAT - lyxerr << boost::format(_("Setting debug level to %1$s")) - % arg - << endl; -#else - lyxerr << _("Setting debug level to ") << arg << endl; -#endif + lyxerr << bformat(_("Setting debug level to %1$s"), arg) << endl; lyxerr.level(Debug::value(arg)); Debug::showLevel(lyxerr, lyxerr.level()); return 1; } + int parse_help(string const &, string const &) { lyxerr <<