]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
Also display the info about BibTeX databases in the TeX info panel.
[lyx.git] / src / LyX.cpp
index 7c2376f980082b8a8575c2f8b391fb01cafcd683..7e56d550eefbc42f1ae6e2ce825c149d075d9b55 100644 (file)
 #include "Server.h"
 #include "ServerSocket.h"
 #include "Session.h"
+#include "WordList.h"
 
 #include "frontends/alert.h"
 #include "frontends/Application.h"
 
-#include "graphics/Previews.h"
-
 #include "support/lassert.h"
 #include "support/debug.h"
 #include "support/environment.h"
@@ -193,8 +192,6 @@ struct LyX::Impl
        /// the parsed command line batch command if any
        vector<string> batch_commands;
 
-       ///
-       graphics::Previews preview_;
        ///
        SpellChecker * spell_checker_;
        ///
@@ -221,6 +218,7 @@ LyX::~LyX()
 {
        delete pimpl_;
        singleton_ = 0;
+       WordList::cleanupWordLists();
 }
 
 
@@ -290,22 +288,19 @@ int LyX::exec(int & argc, char * argv[])
 {
        // Minimal setting of locale before parsing command line
        try {
-               init_package(os::utf8_argv(0), string(), string(),
-                       top_build_dir_is_one_level_up);
+               init_package(os::utf8_argv(0), string(), string());
+               // we do not get to this point when init_package throws an exception
+               locale_init();
        } catch (ExceptionMessage const & message) {
                LYXERR(Debug::LOCALE, message.title_ + ", " + message.details_);
        }
-       // FIXME: This breaks out of source build under Windows.
-       locale_init();
 
        // Here we need to parse the command line. At least
        // we need to parse for "-dbg" and "-help"
        easyParse(argc, argv);
 
        try {
-               init_package(os::utf8_argv(0),
-                       cl_system_support, cl_user_support,
-                       top_build_dir_is_one_level_up);
+               init_package(os::utf8_argv(0), cl_system_support, cl_user_support);
        } catch (ExceptionMessage const & message) {
                if (message.type_ == ErrorException) {
                        Alert::error(message.title_, message.details_);
@@ -453,8 +448,7 @@ void LyX::prepareExit()
 
        // Kill the application object before exiting. This avoids crashes
        // when exiting on Linux.
-       if (pimpl_->application_)
-               pimpl_->application_.reset();
+       pimpl_->application_.reset();
 }
 
 
@@ -552,10 +546,10 @@ void LyX::execCommands()
                        _("No textclass is found"),
                        _("LyX will only have minimal functionality because no textclasses "
                                "have been found. You can either try to reconfigure LyX normally, "
-                               "try to reconfigure using only the defaults, or continue."),
+                               "try to reconfigure without checking your LaTeX installation, or continue."),
                        0, 2,
                        _("&Reconfigure"),
-                       _("&Use Defaults"),
+                       _("&Without LaTeX"),
                        _("&Continue")))
                {
                case 0:
@@ -671,7 +665,7 @@ static void error_handler(int err_sig)
                          "hope you have not lost any data.\n"
                          "Please read the bug-reporting instructions "
                          "in 'Help->Introduction' and send us a bug report, "
-                         "if necessary. Thanks !\nBye.");
+                         "if necessary. Thanks!\nBye.");
                break;
        case SIGINT:
        case SIGTERM:
@@ -745,6 +739,12 @@ bool LyX::init()
                                              "templates");
        }
 
+       // init LyXDir environment variable
+       string const lyx_dir = package().lyx_dir().absFileName();
+       LYXERR(Debug::INIT, "Setting LyXDir... to \"" << lyx_dir << "\"");
+       if (!setEnv("LyXDir", lyx_dir))
+               LYXERR(Debug::INIT, "\t... failed!");
+
        //
        // Read configuration files
        //
@@ -764,7 +764,7 @@ bool LyX::init()
                prependEnvPath("PATH", package().binary_dir().absFileName());
 #endif
        if (!lyxrc.path_prefix.empty())
-               prependEnvPath("PATH", lyxrc.path_prefix);
+               prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));
 
        // Check that user LyX directory is ok.
        if (queryUserLyXDir(package().explicit_user_support()))
@@ -806,7 +806,7 @@ bool LyX::init()
        system_lcolor = lcolor;
 
        // This one is edited through the preferences dialog.
-       if (!readRcFile("preferences"))
+       if (!readRcFile("preferences", true))
                return false;
 
        if (!readEncodingsFile("encodings", "unicodesymbols"))
@@ -842,7 +842,7 @@ bool LyX::init()
 
        os::windows_style_tex_paths(lyxrc.windows_style_tex_paths);
        if (!lyxrc.path_prefix.empty())
-               prependEnvPath("PATH", lyxrc.path_prefix);
+               prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));
 
        FileName const document_path(lyxrc.document_path);
        if (document_path.exists() && document_path.isDirectory())
@@ -960,21 +960,22 @@ bool LyX::queryUserLyXDir(bool explicit_userdir)
 }
 
 
-bool LyX::readRcFile(string const & name)
+bool LyX::readRcFile(string const & name, bool check_format)
 {
        LYXERR(Debug::INIT, "About to read " << name << "... ");
 
        FileName const lyxrc_path = libFileSearch(string(), name);
-       if (!lyxrc_path.empty()) {
-               LYXERR(Debug::INIT, "Found in " << lyxrc_path);
-               if (lyxrc.read(lyxrc_path) < 0) {
-                       showFileError(name);
-                       return false;
-               }
-       } else {
+       if (lyxrc_path.empty()) {
                LYXERR(Debug::INIT, "Not found." << lyxrc_path);
+               // FIXME
+               // This was the previous logic, but can it be right??
+               return true;
        }
-       return true;
+       LYXERR(Debug::INIT, "Found in " << lyxrc_path);
+       bool const success = lyxrc.read(lyxrc_path, check_format);
+       if (!success)
+               showFileError(name);
+       return success;
 }
 
 // Read the languages file `name'
@@ -1054,6 +1055,9 @@ int parse_help(string const &, string const &, string &)
                  "                  Look on Tools->Preferences->File formats->Format\n"
                  "                  to get an idea which parameters should be passed.\n"
                  "                  Note that the order of -e and -x switches matters.\n"
+                 "\t-E [--export-to] fmt filename\n"
+                 "                  where fmt is the export format of choice (see --export),\n"
+                 "                  and filename is the destination filename.\n"
                  "\t-i [--import] fmt file.xxx\n"
                  "                  where fmt is the import format of choice\n"
                  "                  and file.xxx is the file to be imported.\n"
@@ -1123,6 +1127,24 @@ int parse_execute(string const & arg, string const &, string & batch)
 }
 
 
+int parse_export_to(string const & type, string const & output_file, string & batch)
+{
+       if (type.empty()) {
+               lyxerr << to_utf8(_("Missing file type [eg latex, ps...] after "
+                                        "--export-to switch")) << endl;
+               exit(1);
+       }
+       if (output_file.empty()) {
+               lyxerr << to_utf8(_("Missing destination filename after "
+                                        "--export-to switch")) << endl;
+               exit(1);
+       }
+       batch = "buffer-export " + type + " " + output_file;
+       use_gui = false;
+       return 2;
+}
+
+
 int parse_export(string const & type, string const &, string & batch)
 {
        if (type.empty()) {
@@ -1216,8 +1238,10 @@ void LyX::easyParse(int & argc, char * argv[])
        cmdmap["-userdir"] = parse_userdir;
        cmdmap["-x"] = parse_execute;
        cmdmap["--execute"] = parse_execute;
-       cmdmap["-e"] = parse_export;
+       cmdmap["-e"] = parse_export;
        cmdmap["--export"] = parse_export;
+       cmdmap["-E"] = parse_export_to;
+       cmdmap["--export-to"] = parse_export_to;
        cmdmap["-i"] = parse_import;
        cmdmap["--import"] = parse_import;
        cmdmap["-geometry"] = parse_geometry;
@@ -1376,13 +1400,6 @@ Messages const & getGuiMessages()
 }
 
 
-graphics::Previews & thePreviews()
-{
-       LASSERT(singleton_, /**/);
-       return singleton_->pimpl_->preview_;
-}
-
-
 Session & theSession()
 {
        LASSERT(singleton_, /**/);