]> git.lyx.org Git - lyx.git/blob - src/exporter.h
fix reading the author field.
[lyx.git] / src / exporter.h
1 // -*- C++ -*-
2 /**
3  * \file exporter.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Lars Gullik Bjønnes
8  * \author Jean-Marc Lasgouttes
9  *
10  * Full author contact details are available in file CREDITS.
11  */
12
13 #ifndef EXPORTER_H
14 #define EXPORTER_H
15
16 #include <map>
17 #include <string>
18 #include <vector>
19
20
21 class Buffer;
22 class Format;
23
24 class Exporter {
25 public:
26         ///
27         static
28         bool Export(Buffer * buffer, std::string const & format,
29                     bool put_in_tempdir, std::string & result_file);
30         ///
31         static
32         bool Export(Buffer * buffer, std::string const & format,
33                     bool put_in_tempdir);
34         ///
35         static
36         bool Preview(Buffer * buffer, std::string const & format);
37         ///
38         static
39         bool IsExportable(Buffer const & buffer, std::string const & format);
40         ///
41         static
42         std::vector<Format const *> const
43         GetExportableFormats(Buffer const & buffer, bool only_viewable);
44         ///
45 };
46
47
48 struct ExportedFile {
49         ExportedFile(std::string const &, std::string const &);
50         /// absolute name of the source file
51         std::string sourceName;
52         /// final name that the exported file should get (absolute name or
53         /// relative to the directory of the master document)
54         std::string exportName;
55 };
56
57
58 bool operator==(ExportedFile const &, ExportedFile const &);
59
60
61 class ExportData {
62 public:
63         /** add a referenced file for one format.
64          *  No inset should ever write any file outside the tempdir.
65          *  Instead, files that need to be exported have to be registered
66          *  with this method.
67          *  Then the exporter mechanism copies them to the right place, asks
68          *  for confirmation before overwriting existing files etc.
69          */
70         void addExternalFile(std::string const &, std::string const &,
71                              std::string const &);
72         /// add a referenced file for one format.
73         /// The final name is the source file name without path
74         void addExternalFile(std::string const &, std::string const &);
75         /// get referenced files for one format
76         std::vector<ExportedFile> const
77         externalFiles(std::string const &) const;
78 private:
79         typedef std::map<std::string, std::vector<ExportedFile> > FileMap;
80         /** Files that are referenced by the export result in the
81          *  different formats.
82          */
83         FileMap externalfiles;
84 };
85
86 #endif