]> git.lyx.org Git - lyx.git/blobdiff - src/Converter.cpp
Correct early return position for if use_pixmap_cache_ check
[lyx.git] / src / Converter.cpp
index a00b0f49c0043db116c05928251d2f805345f28b..ee17f57445e1b61bed6f33ee0e4c308d003e65dd 100644 (file)
@@ -29,6 +29,7 @@
 #include "support/FileNameList.h"
 #include "support/filetools.h"
 #include "support/gettext.h"
+#include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/os.h"
 #include "support/Package.h"
@@ -299,15 +300,16 @@ 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;
-                       one.startscript(Systemcall::Wait, command, buffer ?
-                                       buffer->filePath() : string());
+                       one.startscript(Systemcall::Wait, command,
+                                       buffer ? buffer->filePath() : string(),
+                                       buffer ? buffer->layoutPos() : string());
                        if (to_file.isReadableFile()) {
                                if (conversionflags & try_cache)
                                        ConverterCache::get().add(orig_from,
@@ -474,13 +476,16 @@ bool Converters::convert(Buffer const * buffer,
                        if (dummy) {
                                res = one.startscript(Systemcall::DontWait,
                                        to_filesystem8bit(from_utf8(command)),
-                                       buffer ? buffer->filePath() : string());
+                                       buffer ? buffer->filePath() : string(),
+                                       buffer ? buffer->layoutPos() : string());
                                // We're not waiting for the result, so we can't do anything
                                // else here.
                        } else {
                                res = one.startscript(Systemcall::Wait,
                                                to_filesystem8bit(from_utf8(command)),
                                                buffer ? buffer->filePath()
+                                                      : string(),
+                                               buffer ? buffer->layoutPos()
                                                       : string());
                                if (!real_outfile.empty()) {
                                        Mover const & mover = getMover(conv.to());
@@ -501,7 +506,8 @@ bool Converters::convert(Buffer const * buffer,
                                                " > " + quoteName(logfile);
                                        one.startscript(Systemcall::Wait,
                                                to_filesystem8bit(from_utf8(command2)),
-                                               buffer->filePath());
+                                               buffer->filePath(),
+                                               buffer->layoutPos());
                                        if (!scanLog(*buffer, command, makeAbsPath(logfile, path), errorList))
                                                return false;
                                }
@@ -644,7 +650,8 @@ 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.layoutPos(),
+                   buffer.lastPreviewError());
        TeXErrors terr;
        ShowMessage show(buffer);
        latex.message.connect(show);
@@ -653,14 +660,25 @@ 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"),
                               _("No output file was generated."));
        }
@@ -690,6 +708,8 @@ void Converters::buildGraph()
        for (; it != end ; ++it) {
                int const from = formats.getNumber(it->from());
                int const to   = formats.getNumber(it->to());
+               LASSERT(from >= 0, continue);
+               LASSERT(to >= 0, continue);
                G_.addEdge(from, to);
        }
 }