]> git.lyx.org Git - lyx.git/blobdiff - src/converter.C
"Inter-word Space"
[lyx.git] / src / converter.C
index 1c7fbe167929293f78973366bc5d6114515f8c98..cd8a7ae10e673916274bdde8cc0433cb67c18da6 100644 (file)
@@ -16,6 +16,7 @@
 #include "lyxrc.h"
 #include "buffer.h"
 #include "bufferview_funcs.h"
+#include "errorlist.h"
 #include "LaTeX.h"
 #include "lyx_cb.h" // ShowMessage()
 #include "gettext.h"
 #include "support/filetools.h"
 #include "support/lyxfunctional.h"
 #include "support/path.h"
+#include "support/tostr.h"
 #include "support/systemcall.h"
 
-#include "BoostFormat.h"
-
 #include <cctype>
 
 #ifndef CXX_GLOBAL_CSTD
@@ -256,6 +256,9 @@ bool Converters::convert(Buffer const * buffer,
        if (edgepath.empty()) {
                return false;
        }
+       LatexRunParams runparams;
+       runparams.flavor = usePdflatex(edgepath) ?
+               LatexRunParams::PDFLATEX : LatexRunParams::LATEX;
 
        string path = OnlyPath(from_file);
        Path p(path);
@@ -292,7 +295,7 @@ bool Converters::convert(Buffer const * buffer,
                        run_latex = true;
                        string command = subst(conv.command, token_from, "");
                        lyxerr[Debug::FILES] << "Running " << command << endl;
-                       if (!runLaTeX(buffer, command))
+                       if (!runLaTeX(buffer, command, runparams))
                                return false;
                } else {
                        if (conv.need_aux && !run_latex
@@ -300,7 +303,7 @@ bool Converters::convert(Buffer const * buffer,
                                lyxerr[Debug::FILES]
                                        << "Running " << latex_command_
                                        << " to update aux file"<<  endl;
-                               runLaTeX(buffer, latex_command_);
+                               runLaTeX(buffer, latex_command_, runparams);
                        }
 
                        string infile2 = (conv.original_dir)
@@ -360,13 +363,16 @@ bool Converters::convert(Buffer const * buffer,
                        }
 
                        if (res) {
-                               if (conv.to == "program")
-                                       Alert::alert(_("There were errors during the Build process."),
-                                                  _("You should try to fix them."));
-                               else
-                                       Alert::alert(_("Cannot convert file"),
-                                                  _("Error while executing"),
-                                                  command.substr(0, 50));
+                               if (conv.to == "program") {
+                                       Alert::error(_("Build errors"),
+                                               _("There were errors during the build process."));
+                               } else {
+// FIXME: this should go out of here. For example, here we cannot say if
+// it is a document (.lyx) or something else. Same goes for elsewhere.
+                               Alert::error(_("Cannot convert file"),
+                                       bformat(_("An error occurred whilst running %1$s"),
+                                               command.substr(0, 50)));
+                               }
                                return false;
                        }
                }
@@ -387,13 +393,9 @@ bool Converters::convert(Buffer const * buffer,
                        string to = subst(conv.result_dir,
                                          token_base, to_base);
                        if (!lyx::rename(from, to)) {
-#if USE_BOOST_FORMAT
-                               Alert::alert(_("Error while trying to move directory:"),
-                                          from, boost::io::str(boost::format(_("to %1$s")) % to));
-#else
-                               Alert::alert(_("Error while trying to move directory:"),
-                                          from, _("to ") + to);
-#endif
+                               Alert::error(_("Cannot convert file"),
+                                       bformat(_("Could not move a temporary file from %1$s to %2$s."),
+                                               from, to));
                                return false;
                        }
                }
@@ -429,13 +431,9 @@ bool Converters::move(string const & from, string const & to, bool copy)
                                ? lyx::copy(from2, to2)
                                : lyx::rename(from2, to2);
                        if (!moved && no_errors) {
-#if USE_BOOST_FORMAT
-                               Alert::alert(_("Error while trying to move file:"),
-                                          from2, boost::io::str(boost::format(_("to %1$s")) % to2));
-#else
-                               Alert::alert(_("Error while trying to move file:"),
-                                          from2, _("to ") + to2);
-#endif
+                               Alert::error(_("Cannot convert file"),
+                                       bformat(_("Could not move a temporary file from %1$s to %2$s."),
+                                               from2, to2));
                                no_errors = false;
                        }
                }
@@ -465,65 +463,31 @@ bool Converters::formatIsUsed(string const & format)
 }
 
 
-bool Converters::scanLog(Buffer const * buffer, string const & command,
-                       string const & filename)
+bool Converters::scanLog(Buffer const * buffer, string const & /*command*/,
+                        string const & filename)
 {
        if (!buffer)
                return false;
 
        BufferView * bv = buffer->getUser();
-       if (bv) {
-               bv->owner()->busy(true);
-               // all error insets should have been removed by now
-       }
-
-       LaTeX latex("", filename, "");
+       LatexRunParams runparams;
+       runparams.flavor = LatexRunParams::LATEX;
+       LaTeX latex("", runparams, filename, "");
        TeXErrors terr;
        int result = latex.scanLogFile(terr);
-       if (bv) {
-               if ((result & LaTeX::ERRORS)) {
-                       // Insert all errors as errors boxes
-                       bv->insertErrors(terr);
-#warning repaint() or update() or nothing ?
-                       bv->repaint();
-                       bv->fitCursor();
-               }
-               bv->owner()->busy(false);
-       }
 
-       if ((result & LaTeX::ERRORS)) {
-               int num_errors = latex.getNumErrors();
-               string s;
-               string t;
-               if (num_errors == 1) {
-                       s = _("One error detected");
-                       t = _("You should try to fix it.");
-               } else {
-                       s = tostr(num_errors);
-                       s += _(" errors detected.");
-                       t = _("You should try to fix them.");
-               }
-               string head;
-               split(command, head, ' ');
-#if USE_BOOST_FORMAT
-               Alert::alert(boost::io::str(boost::format(_("There were errors during running of %1$s")) % head),
-                          s, t);
-#else
-               Alert::alert(_("There were errors during running of ") + head,
-                          s, t);
-#endif
-               return false;
-       } else if (result & LaTeX::NO_OUTPUT) {
-               string const s = _("The operation resulted in");
-               string const t = _("an empty file.");
-               Alert::alert(_("Resulting file is empty"), s, t);
-               return false;
+       if (bv && (result & LaTeX::ERRORS)) {
+               ErrorList el(*buffer, terr);
+               bv->setErrorList(el);
+               bv->showErrorList(_("LaTeX"));
        }
+
        return true;
 }
 
 
-bool Converters::runLaTeX(Buffer const * buffer, string const & command)
+bool Converters::runLaTeX(Buffer const * buffer, string const & command,
+                         LatexRunParams const & runparams)
 {
        if (!buffer)
                return false;
@@ -538,43 +502,26 @@ bool Converters::runLaTeX(Buffer const * buffer, string const & command)
 
        // do the LaTeX run(s)
        string name = buffer->getLatexName();
-       LaTeX latex(command, name, buffer->filePath());
+       LaTeX latex(command, runparams, name, buffer->filePath());
        TeXErrors terr;
        int result = latex.run(terr,
                               bv ? &bv->owner()->getLyXFunc() : 0);
 
-       if (bv) {
-               if ((result & LaTeX::ERRORS)) {
-                       // Insert all errors as errors boxes
-                       bv->insertErrors(terr);
-#warning repaint() or update() or nothing ?
-                       bv->repaint();
-                       bv->fitCursor();
-               }
+       if (bv && (result & LaTeX::ERRORS)) {
+               //show errors
+               ErrorList el(*buffer, terr);
+               bv->setErrorList(el);
+               bv->showErrorList(_("LaTeX"));
        }
 
        // check return value from latex.run().
        if ((result & LaTeX::NO_LOGFILE)) {
-               Alert::alert(_("LaTeX did not work!"),
-                          _("Missing log file:"), name);
-       } else if ((result & LaTeX::ERRORS)) {
-               int num_errors = latex.getNumErrors();
-               string s;
-               string t;
-               if (num_errors == 1) {
-                       s = _("One error detected");
-                       t = _("You should try to fix it.");
-               } else {
-                       s = tostr(num_errors);
-                       s += _(" errors detected.");
-                       t = _("You should try to fix them.");
-               }
-               Alert::alert(_("There were errors during the LaTeX run."),
-                          s, t);
-       }  else if (result & LaTeX::NO_OUTPUT) {
-               string const s = _("The operation resulted in");
-               string const t = _("an empty file.");
-               Alert::alert(_("Resulting file is empty"), s, t);
+               string str = bformat(_("LaTeX did not run successfully. Additionally, LyX "
+                       "could not locate the LaTeX log %1$s."), name);
+               Alert::error(_("LaTeX failed"), str);
+       } else if (result & LaTeX::NO_OUTPUT) {
+               Alert::warning(_("Output is empty"),
+                       _("An empty output file was generated."));
        }
 
        if (bv)