]> git.lyx.org Git - lyx.git/blob - src/exporter.C
419ae573805f7f2be30ecb5fdf72544730f263a2
[lyx.git] / src / exporter.C
1 /* This file is part of
2  * ====================================================== 
3  * 
4  *           LyX, The Document Processor
5  *        
6  *           Copyright 1995 Matthias Ettrich
7  *           Copyright 1995-2000 The LyX Team.
8  *
9  * ====================================================== */
10
11 #include <config.h>
12
13 #ifdef __GNUG__
14 #pragma implementation
15 #endif
16
17 #include "exporter.h"
18 #include "converter.h"
19 #include "buffer.h"
20 #include "lyx_cb.h" //ShowMessage()
21 #include "support/filetools.h"
22
23 using std::vector;
24 using std::pair;
25
26 bool Exporter::Export(Buffer * buffer, string const & format0,
27                       bool put_in_tempdir)
28 {
29         string format;
30         string using_format = Converter::SplitFormat(format0, format);
31
32         string backend_format = BufferExtension(buffer);
33         bool only_backend = backend_format == format;
34
35         string filename = buffer->getLatexName(false);
36         if (!buffer->tmppath.empty())
37                 filename = AddName(buffer->tmppath, filename);
38         filename = ChangeExtension(filename, backend_format);
39
40         if (buffer->isLinuxDoc())
41                 buffer->makeLinuxDocFile(filename, only_backend);
42         else if (only_backend)
43                 buffer->makeLaTeXFile(filename, string(), true);
44         else
45                 buffer->makeLaTeXFile(filename, buffer->filepath, false);
46
47         string outfile = (put_in_tempdir)
48                 ? ChangeExtension(filename, format)
49                 : ChangeExtension(buffer->getLatexName(false), format);
50
51         if (!Converter::Convert(buffer, filename, outfile, using_format))
52                 return false;
53
54         if (!put_in_tempdir)
55                 ShowMessage(buffer,
56                             _("Document exported as ")
57                             + Formats::PrettyName(format)
58                             + _(" to file `")
59                             + MakeDisplayPath(outfile) +'\'');
60         return true;
61 }
62
63
64 bool Exporter::Preview(Buffer * buffer, string const & format0)
65 {
66         if (!Export(buffer, format0, true))
67                 return false;
68
69         string format;
70         Converter::SplitFormat(format0, format);
71
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);
77 }
78
79
80 vector<pair<string, string> > const
81 Exporter::GetExportableFormats(Buffer const * buffer)
82 {
83         return Converter::GetReachable(BufferExtension(buffer), false);
84 }
85
86
87 vector<pair<string, string> > const
88 Exporter::GetViewableFormats(Buffer const * buffer)
89 {
90         return Converter::GetReachable(BufferExtension(buffer), true);
91 }
92
93
94 string const Exporter::BufferExtension(Buffer const * buffer)
95 {
96         if (buffer->isLinuxDoc())
97                 return "sgml";
98         else
99                 return "tex";
100 }