]> git.lyx.org Git - lyx.git/blobdiff - src/exporter.C
* support/qstring_helpers.h: erase ucs4_to_qstring() method.
[lyx.git] / src / exporter.C
index 6121131b53959a44eaf3a40d0e6a97dac793d9ab..d3ff74a95ef7e4e2df0315353e267d19c2e17312 100644 (file)
@@ -132,7 +132,7 @@ CopyStatus copyFile(string const & format,
                }
        }
 
-       Mover const & mover = movers(format);
+       Mover const & mover = getMover(format);
        if (!mover.copy(sourceFile, destFile, latexFile))
                Alert::error(_("Couldn't copy file"),
                             bformat(_("Copying %1$s to %2$s failed."),
@@ -153,27 +153,20 @@ bool Exporter::Export(Buffer * buffer, string const & format,
        runparams.flavor = OutputParams::LATEX;
        runparams.linelen = lyxrc.plaintext_linelen;
        vector<string> backends = Backends(*buffer);
-       // FIXME: Without this test export to lyx1[34] would be through
-       // latex -> lyx -> lyx1[34], because the first backend below with a
-       // working conversion path is used. We should replace this test and
-       // the explicit loop below with a method
-       // getShortestPath(vector<string> const & from, string const & to)
-       // which returns the shortest path from one of the formats in 'from'
-       // to 'to'.
-       if ((format == "lyx13x" || format == "lyx14x") &&
-           !theConverters().getPath("lyx", format).empty())
-               backend_format = "lyx";
-       else if (find(backends.begin(), backends.end(), format) == backends.end()) {
+       if (find(backends.begin(), backends.end(), format) == backends.end()) {
+               // Get shortest path to format
+               Graph::EdgePath path;
                for (vector<string>::const_iterator it = backends.begin();
                     it != backends.end(); ++it) {
                        Graph::EdgePath p = theConverters().getPath(*it, format);
-                       if (!p.empty()) {
-                               runparams.flavor = theConverters().getFlavor(p);
+                       if (!p.empty() && (path.empty() || p.size() < path.size())) {
                                backend_format = *it;
-                               break;
+                               path = p;
                        }
                }
-               if (backend_format.empty()) {
+               if (!path.empty())
+                       runparams.flavor = theConverters().getFlavor(path);
+               else {
                        Alert::error(_("Couldn't export file"),
                                bformat(_("No information for exporting the format %1$s."),
                                   formats.prettyName(format)));
@@ -191,9 +184,9 @@ bool Exporter::Export(Buffer * buffer, string const & format,
        filename = changeExtension(filename,
                                   formats.extension(backend_format));
 
-       // Ascii backend
+       // Plain text backend
        if (backend_format == "text")
-               writeFileAscii(*buffer, FileName(filename), runparams);
+               writePlaintextFile(*buffer, FileName(filename), runparams);
        // no backend
        else if (backend_format == "lyx")
                buffer->writeFile(FileName(filename));
@@ -225,7 +218,8 @@ bool Exporter::Export(Buffer * buffer, string const & format,
                tmp_result_file, FileName(buffer->fileName()), backend_format, format,
                buffer->errorList(error_type));
        // Emit the signal to show the error list.
-       buffer->errors(error_type);
+       if (format != backend_format)
+               buffer->errors(error_type);
        if (!success)
                return false;