#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
if (edgepath.empty()) {
return false;
}
+ LatexRunParams runparams;
+ runparams.flavor = usePdflatex(edgepath) ?
+ LatexRunParams::PDFLATEX : LatexRunParams::LATEX;
string path = OnlyPath(from_file);
Path p(path);
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
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)
}
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;
}
}
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;
}
}
? 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;
}
}
}
-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;
// 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)