1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 1995 Matthias Ettrich
7 * Copyright 1995-2000 The LyX Team.
9 * ====================================================== */
14 #pragma implementation
21 #include "converter.h"
25 #include "support/path.h"
30 bool Exporter::Export(Buffer * buffer, string const & format0,
34 string using_format = Converter::SplitFormat(format0, format);
36 string filename = buffer->fileName();
37 string backend_format = BufferExtension(buffer);
38 bool only_backend = backend_format == format;
40 //string file = buffer->getLatexName(true);
41 string file = filename;
42 if (!buffer->tmppath.empty())
43 file = AddName(buffer->tmppath, file);
44 file = ChangeExtension(file, backend_format);
46 if (buffer->isLinuxDoc())
47 buffer->makeLinuxDocFile(file, only_backend);
48 else if (only_backend)
49 buffer->makeLaTeXFile(file, string(), true);
51 buffer->makeLaTeXFile(file, buffer->filepath, false);
53 bool return_value = Converter::convert(buffer, file, format0);
57 if (!put_in_tempdir) {
58 file = ChangeExtension(file, format);
59 string outfile = ChangeExtension(filename, format);
61 rename(file.c_str(), outfile.c_str());
64 _("Document exported as ")
65 + Formats::PrettyName(format)
67 + MakeDisplayPath(outfile) +'\'');
73 bool Exporter::Preview(Buffer * buffer, string const & format0)
75 if (!Export(buffer, format0, true))
79 Converter::SplitFormat(format0, format);
81 string filename = buffer->fileName();
82 if (!buffer->tmppath.empty())
83 filename = AddName(buffer->tmppath, filename);
84 filename = ChangeExtension(filename, format);
85 return Formats::View(filename);
89 vector<pair<string, string> > const
90 Exporter::GetExportableFormats(Buffer const * buffer)
92 return Converter::GetReachable(BufferExtension(buffer), false);
96 vector<pair<string, string> > const
97 Exporter::GetViewableFormats(Buffer const * buffer)
99 return Converter::GetReachable(BufferExtension(buffer), true);
103 string const Exporter::BufferExtension(Buffer const * buffer)
105 if (buffer->isLinuxDoc())