X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fexporter.C;h=eff1172ae893d0100c3922928fae39103d2191ec;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=076e09a09b163d5b93fdb5c0344b55171da7c7f4;hpb=8c93f63b48a1b15d4f3e163b7305213f2f73879e;p=lyx.git diff --git a/src/exporter.C b/src/exporter.C index 076e09a09b..eff1172ae8 100644 --- a/src/exporter.C +++ b/src/exporter.C @@ -36,21 +36,25 @@ #include -using lyx::support::addName; -using lyx::support::bformat; -using lyx::support::changeExtension; -using lyx::support::contains; -using lyx::support::makeAbsPath; -using lyx::support::makeDisplayPath; -using lyx::support::onlyFilename; -using lyx::support::onlyPath; -using lyx::support::package; -using lyx::support::prefixIs; + +namespace lyx { + +using support::addName; +using support::bformat; +using support::changeExtension; +using support::contains; +using support::makeAbsPath; +using support::makeDisplayPath; +using support::onlyFilename; +using support::onlyPath; +using support::package; +using support::prefixIs; using std::find; using std::string; using std::vector; +namespace Alert = frontend::Alert; namespace fs = boost::filesystem; namespace { @@ -59,7 +63,7 @@ vector const Backends(Buffer const & buffer) { vector v; if (buffer.params().getLyXTextClass().isTeXClassAvailable()) { - v.push_back(BufferFormat(buffer)); + v.push_back(bufferFormat(buffer)); // FIXME: Don't hardcode format names here, but use a flag if (v.back() == "latex") v.push_back("pdflatex"); @@ -74,8 +78,8 @@ vector const Backends(Buffer const & buffer) int checkOverwrite(string const & filename) { if (fs::exists(filename)) { - string text = bformat(_("The file %1$s already exists.\n\n" - "Do you want to over-write that file?"), + docstring text = bformat(_("The file %1$s already exists.\n\n" + "Do you want to over-write that file?"), makeDisplayPath(filename)); return Alert::prompt(_("Over-write file?"), text, 0, 2, @@ -191,11 +195,6 @@ bool Exporter::Export(Buffer * buffer, string const & format, // no backend else if (backend_format == "lyx") buffer->writeFile(filename); - // Linuxdoc backend - else if (buffer->isLinuxDoc()) { - runparams.nice = !put_in_tempdir; - buffer->makeLinuxDocFile(filename, runparams); - } // Docbook backend else if (buffer->isDocBook()) { runparams.nice = !put_in_tempdir; @@ -204,7 +203,8 @@ bool Exporter::Export(Buffer * buffer, string const & format, // LaTeX backend else if (backend_format == format) { runparams.nice = true; - buffer->makeLaTeXFile(filename, string(), runparams); + if (!buffer->makeLaTeXFile(filename, string(), runparams)) + return false; } else if (!lyxrc.tex_allows_spaces && contains(buffer->filePath(), ' ')) { Alert::error(_("File name error"), @@ -212,17 +212,25 @@ bool Exporter::Export(Buffer * buffer, string const & format, return false; } else { runparams.nice = false; - buffer->makeLaTeXFile(filename, buffer->filePath(), runparams); + if (!buffer->makeLaTeXFile(filename, buffer->filePath(), runparams)) + return false; } - if (!converters.convert(buffer, filename, filename, - backend_format, format, result_file)) + string const error_type = (format == "program")? "Build" : bufferFormat(*buffer); + string const ext = formats.extension(format); + string const tmp_result_file = changeExtension(filename, ext); + bool const success = converters.convert(buffer, filename, + tmp_result_file, buffer->fileName(), backend_format, format, + buffer->errorList(error_type)); + // Emit the signal to show the error list. + buffer->errors(error_type); + if (!success) return false; - if (!put_in_tempdir) { - string const tmp_result_file = result_file; - result_file = changeExtension(buffer->fileName(), - formats.extension(format)); + if (put_in_tempdir) + result_file = tmp_result_file; + else { + result_file = changeExtension(buffer->fileName(), ext); // We need to copy referenced files (e. g. included graphics // if format == "dvi") to the result dir. vector const files = @@ -245,7 +253,7 @@ bool Exporter::Export(Buffer * buffer, string const & format, result_file, result_file, status == FORCE); buffer->message(bformat(_("Document exported as %1$s " - "to file `%2$s'"), + "to file `%2$s'"), formats.prettyName(format), makeDisplayPath(result_file))); } else { @@ -267,7 +275,7 @@ bool Exporter::Export(Buffer * buffer, string const & format, } -bool Exporter::Preview(Buffer * buffer, string const & format) +bool Exporter::preview(Buffer * buffer, string const & format) { string result_file; if (!Export(buffer, format, true, result_file)) @@ -276,7 +284,7 @@ bool Exporter::Preview(Buffer * buffer, string const & format) } -bool Exporter::IsExportable(Buffer const & buffer, string const & format) +bool Exporter::isExportable(Buffer const & buffer, string const & format) { vector backends = Backends(buffer); for (vector::const_iterator it = backends.begin(); @@ -288,7 +296,7 @@ bool Exporter::IsExportable(Buffer const & buffer, string const & format) vector const -Exporter::GetExportableFormats(Buffer const & buffer, bool only_viewable) +Exporter::getExportableFormats(Buffer const & buffer, bool only_viewable) { vector backends = Backends(buffer); vector result = @@ -319,7 +327,7 @@ void ExportData::addExternalFile(string const & format, string const & sourceName, string const & exportName) { - BOOST_ASSERT(lyx::support::absolutePath(sourceName)); + BOOST_ASSERT(support::absolutePath(sourceName)); // Make sure that we have every file only once, otherwise copyFile() // would ask several times if it should overwrite a file. @@ -345,3 +353,6 @@ ExportData::externalFiles(string const & format) const return cit->second; return vector(); } + + +} // namespace lyx