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
18 #include "converter.h"
20 #include "lyx_cb.h" //ShowMessage()
21 #include "support/filetools.h"
26 bool Exporter::Export(Buffer * buffer, string const & format0,
30 string using_format = Converter::SplitFormat(format0, format);
32 string backend_format = BufferExtension(buffer);
33 bool only_backend = backend_format == format;
35 string filename = buffer->getLatexName(false);
36 if (!buffer->tmppath.empty())
37 filename = AddName(buffer->tmppath, filename);
38 filename = ChangeExtension(filename, backend_format);
40 if (buffer->isLinuxDoc())
41 buffer->makeLinuxDocFile(filename, only_backend);
42 else if (only_backend)
43 buffer->makeLaTeXFile(filename, string(), true);
45 buffer->makeLaTeXFile(filename, buffer->filepath, false);
47 string outfile = (put_in_tempdir)
48 ? ChangeExtension(filename, format)
49 : ChangeExtension(buffer->getLatexName(false), format);
51 if (!Converter::Convert(buffer, filename, outfile, using_format))
56 _("Document exported as ")
57 + Formats::PrettyName(format)
59 + MakeDisplayPath(outfile) +'\'');
64 bool Exporter::Preview(Buffer * buffer, string const & format0)
66 if (!Export(buffer, format0, true))
70 Converter::SplitFormat(format0, format);
72 string filename = buffer->getLatexName(false);
73 if (!buffer->tmppath.empty())
74 filename = AddName(buffer->tmppath, filename);
75 filename = ChangeExtension(filename, format);
76 return Formats::View(buffer, filename);
80 vector<pair<string, string> > const
81 Exporter::GetExportableFormats(Buffer const * buffer)
83 return Converter::GetReachable(BufferExtension(buffer), false);
87 vector<pair<string, string> > const
88 Exporter::GetViewableFormats(Buffer const * buffer)
90 return Converter::GetReachable(BufferExtension(buffer), true);
94 string const Exporter::BufferExtension(Buffer const * buffer)
96 if (buffer->isLinuxDoc())