X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fexporter.C;h=d3ff74a95ef7e4e2df0315353e267d19c2e17312;hb=cd4033aef3a3f1efdb5a676b8bab3d367f53a830;hp=0956e100d2740756d6eb67935cfb63f1deca466d;hpb=875a88023be82ab340f48d451f23beaf89211522;p=lyx.git diff --git a/src/exporter.C b/src/exporter.C index 0956e100d2..d3ff74a95e 100644 --- a/src/exporter.C +++ b/src/exporter.C @@ -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."), @@ -151,28 +151,22 @@ bool Exporter::Export(Buffer * buffer, string const & format, string backend_format; OutputParams runparams; runparams.flavor = OutputParams::LATEX; - runparams.linelen = lyxrc.ascii_linelen; + runparams.linelen = lyxrc.plaintext_linelen; vector backends = Backends(*buffer); - // FIXME: Without this test export to lyx13 would be through - // latex -> lyx -> lyx13, 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 const & from, string const & to) - // which returns the shortest path from one of the formats in 'from' - // to 'to'. - if (format == "lyx13x" && !converters.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::const_iterator it = backends.begin(); it != backends.end(); ++it) { - Graph::EdgePath p = converters.getPath(*it, format); - if (!p.empty()) { - runparams.flavor = converters.getFlavor(p); + Graph::EdgePath p = theConverters().getPath(*it, format); + 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))); @@ -190,21 +184,21 @@ 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, runparams); + writePlaintextFile(*buffer, FileName(filename), runparams); // no backend else if (backend_format == "lyx") buffer->writeFile(FileName(filename)); // Docbook backend else if (buffer->isDocBook()) { runparams.nice = !put_in_tempdir; - buffer->makeDocBookFile(filename, runparams); + buffer->makeDocBookFile(FileName(filename), runparams); } // LaTeX backend else if (backend_format == format) { runparams.nice = true; - if (!buffer->makeLaTeXFile(filename, string(), runparams)) + if (!buffer->makeLaTeXFile(FileName(filename), string(), runparams)) return false; } else if (!lyxrc.tex_allows_spaces && contains(buffer->filePath(), ' ')) { @@ -213,18 +207,19 @@ bool Exporter::Export(Buffer * buffer, string const & format, return false; } else { runparams.nice = false; - if (!buffer->makeLaTeXFile(filename, buffer->filePath(), runparams)) + if (!buffer->makeLaTeXFile(FileName(filename), buffer->filePath(), runparams)) return false; } string const error_type = (format == "program")? "Build" : bufferFormat(*buffer); string const ext = formats.extension(format); FileName const tmp_result_file(changeExtension(filename, ext)); - bool const success = converters.convert(buffer, FileName(filename), + bool const success = theConverters().convert(buffer, FileName(filename), 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; @@ -243,7 +238,7 @@ bool Exporter::Export(Buffer * buffer, string const & format, string const fmt = formats.getFormatFromFile(it->sourceName); status = copyFile(fmt, it->sourceName, - FileName(makeAbsPath(it->exportName, dest)), + makeAbsPath(it->exportName, dest), it->exportName, status == FORCE); } if (status == CANCEL) { @@ -290,7 +285,7 @@ bool Exporter::isExportable(Buffer const & buffer, string const & format) vector backends = Backends(buffer); for (vector::const_iterator it = backends.begin(); it != backends.end(); ++it) - if (converters.isReachable(*it, format)) + if (theConverters().isReachable(*it, format)) return true; return false; } @@ -301,11 +296,11 @@ Exporter::getExportableFormats(Buffer const & buffer, bool only_viewable) { vector backends = Backends(buffer); vector result = - converters.getReachable(backends[0], only_viewable, true); + theConverters().getReachable(backends[0], only_viewable, true); for (vector::const_iterator it = backends.begin() + 1; it != backends.end(); ++it) { vector r = - converters.getReachable(*it, only_viewable, false); + theConverters().getReachable(*it, only_viewable, false); result.insert(result.end(), r.begin(), r.end()); } return result;