]> git.lyx.org Git - lyx.git/blobdiff - src/Converter.cpp
GuiBox.cpp: make a logic setting more clear
[lyx.git] / src / Converter.cpp
index 1e0263760309e1b2398b1437df7fb46ea08b7496..0e0251eb39e766343745bf74915523fd24e46e7e 100644 (file)
@@ -299,10 +299,10 @@ bool Converters::convert(Buffer const * buffer,
                        string const command =
                                os::python() + ' ' +
                                quoteName(libFileSearch("scripts", "convertDefault.py").toFilesystemEncoding()) +
-                               ' ' +
-                               quoteName(from_ext + ':' + from_file.toFilesystemEncoding()) +
-                               ' ' +
-                               quoteName(to_ext + ':' + to_file.toFilesystemEncoding());
+                               ' ' + from_ext + ' ' +
+                               quoteName(from_file.toFilesystemEncoding()) +
+                               ' ' + to_ext + ' ' +
+                               quoteName(to_file.toFilesystemEncoding());
                        LYXERR(Debug::FILES, "No converter defined! "
                                   "I use convertDefault.py:\n\t" << command);
                        Systemcall one;
@@ -455,10 +455,12 @@ bool Converters::convert(Buffer const * buffer,
                        if (!conv.parselog().empty())
                                command += " 2> " + quoteName(infile2 + ".out");
 
-                       if (conv.from() == "dvi" && conv.to() == "ps")
+                       // it is not actually not necessary to test for buffer here,
+                       // but it pleases coverity.
+                       if (buffer && conv.from() == "dvi" && conv.to() == "ps")
                                command = add_options(command,
                                                      buffer->params().dvips_options());
-                       else if (conv.from() == "dvi" && prefixIs(conv.to(), "pdf"))
+                       else if (buffer && conv.from() == "dvi" && prefixIs(conv.to(), "pdf"))
                                command = add_options(command,
                                                      dvipdfm_options(buffer->params()));
 
@@ -642,7 +644,7 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
        // do the LaTeX run(s)
        string const name = buffer.latexName();
        LaTeX latex(command, runparams, FileName(makeAbsPath(name)),
-                   buffer.filePath());
+                   buffer.filePath(), buffer.lastPreviewError());
        TeXErrors terr;
        ShowMessage show(buffer);
        latex.message.connect(show);
@@ -651,16 +653,27 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
        if (result & LaTeX::ERRORS)
                buffer.bufferErrors(terr, errorList);
 
-       // check return value from latex.run().
-       if ((result & LaTeX::NO_LOGFILE) && !buffer.isClone()) {
+       if (!errorList.empty()) {
+         // We will show the LaTeX Errors GUI later which contains
+         // specific error messages so it would be repetitive to give
+         // e.g. the "finished with an error" dialog in addition.
+       }
+       else if (result & LaTeX::NO_LOGFILE) {
                docstring const str =
                        bformat(_("LaTeX did not run successfully. "
                                               "Additionally, LyX could not locate "
                                               "the LaTeX log %1$s."), from_utf8(name));
                Alert::error(_("LaTeX failed"), str);
-       } else if ((result & LaTeX::NO_OUTPUT) && !buffer.isClone()) {
+       } else if (result & LaTeX::NONZERO_ERROR) {
+               docstring const str =
+                       bformat(_( "The external program\n%1$s\n"
+                             "finished with an error. "
+                             "It is recommended you fix the cause of the external "
+                             "program's error (check the logs). "), from_utf8(command));
+               Alert::error(_("LaTeX failed"), str);
+       } else if (result & LaTeX::NO_OUTPUT) {
                Alert::warning(_("Output is empty"),
-                              _("An empty output file was generated."));
+                              _("No output file was generated."));
        }