]> git.lyx.org Git - lyx.git/blobdiff - src/converter.C
move some selection related stuff over to textcursor.C
[lyx.git] / src / converter.C
index d0f1529c921291fbccc4cb8480b865af2d010d10..c93b39f3f6a77ccee80a9c08d04eaf86e0161d71 100644 (file)
@@ -15,7 +15,9 @@
 #include "format.h"
 #include "lyxrc.h"
 #include "buffer.h"
+#include "buffer_funcs.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 "support/BoostFormat.h"
-
 #include <cctype>
 
 #ifndef CXX_GLOBAL_CSTD
@@ -256,6 +257,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 +296,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 +304,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)
@@ -364,9 +368,11 @@ bool Converters::convert(Buffer const * buffer,
                                        Alert::error(_("Build errors"),
                                                _("There were errors during the build process."));
                                } else {
-                                       Alert::alert(_("Cannot convert file"),
-                                                  _("Error while executing"),
-                                                  command.substr(0, 50));
+// 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;
                        }
@@ -388,13 +394,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;
                        }
                }
@@ -430,13 +432,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;
                        }
                }
@@ -466,77 +464,28 @@ bool Converters::formatIsUsed(string const & format)
 }
 
 
-namespace {
-
-void alertErrors(string const & prog, int nr_errors)
-{
-       string s;
-#if USE_BOOST_FORMAT
-       if (nr_errors == 1) {
-               boost::format fmt(_("One error detected when running %1$s.\n"));
-               fmt % prog;
-               s = fmt.str();
-       } else {
-               boost::format fmt(_("%1$s errors detected when running %2$s.\n"));
-               fmt % tostr(nr_errors);
-               fmt % prog;
-               s = fmt.str();
-       }
-#else
-       if (nr_errors == 1) {
-               s = _("One error detected");
-       } else {
-               s = tostr(nr_errors);
-               s += _(" errors detected.");
-       }
-#endif
-       Alert::error(_("Errors found"), s);
-}
-
-}
-
-
-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)) {
-               string head;
-               split(command, head, ' ');
-               alertErrors(head, latex.getNumErrors());
-               return false;
-       } else if (result & LaTeX::NO_OUTPUT) {
-               Alert::warning(_("Output is empty"),
-                       _("An empty output file was generated."));
-               return false;
-       }
+       if (bv && (result & LaTeX::ERRORS))
+               parseErrors(*buffer, terr);
+
        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;
@@ -551,28 +500,20 @@ 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))
+               parseErrors(*buffer, terr);
 
        // 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)) {
-               alertErrors("LaTeX", latex.getNumErrors());
-       }  else if (result & LaTeX::NO_OUTPUT) {
+               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."));
        }