]> git.lyx.org Git - lyx.git/blobdiff - src/exporter.h
Fix 3188, update the labels at each Caption insertion.
[lyx.git] / src / exporter.h
index 6d95507d59df8803bc23cf88c7bb803776078128..22c01ef6b9c4eb70885563ec824b4e786bea8116 100644 (file)
@@ -1,23 +1,27 @@
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *        
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+/**
+ * \file exporter.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * ====================================================== */
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef EXPORTER_H
 #define EXPORTER_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "support/filename.h"
 
+#include <map>
+#include <string>
 #include <vector>
-#include "LString.h"
+
+
+namespace lyx {
+
 
 class Buffer;
 class Format;
@@ -26,28 +30,75 @@ class Exporter {
 public:
        ///
        static
-       bool Export(Buffer * buffer, string const & format,
-                   bool put_in_tempdir, string & result_file);
+       bool Export(Buffer * buffer, std::string const & format,
+                   bool put_in_tempdir, std::string & result_file);
        ///
        static
-       bool Export(Buffer * buffer, string const & format,
+       bool Export(Buffer * buffer, std::string const & format,
                    bool put_in_tempdir);
        ///
        static
-       bool Preview(Buffer * buffer, string const & format);
+       bool preview(Buffer * buffer, std::string const & format);
        ///
        static
-       bool IsExportable(Buffer const * buffer, string const & format);
+       bool isExportable(Buffer const & buffer, std::string const & format);
        ///
        static
        std::vector<Format const *> const
-       GetExportableFormats(Buffer const * buffer, bool only_viewable);
+       getExportableFormats(Buffer const & buffer, bool only_viewable);
        ///
+};
+
+
+class ExportedFile {
+public:
+       ExportedFile(support::FileName const &, std::string const &);
+       /// absolute name of the source file
+       support::FileName sourceName;
+       /// final name that the exported file should get (absolute name or
+       /// relative to the directory of the master document)
+       std::string exportName;
+};
+
+
+bool operator==(ExportedFile const &, ExportedFile const &);
+
+
+class ExportData {
+public:
+       /** add a referenced file for one format.
+        *  No inset should ever write any file outside the tempdir.
+        *  Instead, files that need to be exported have to be registered
+        *  with this method.
+        *  Then the exporter mechanism copies them to the right place, asks
+        *  for confirmation before overwriting existing files etc.
+        * \param format     format that references the given file
+        * \param sourceName source file name. Needs to be absolute
+        * \param exportName resulting file name. Can be either absolute
+        *                   or relative to the exported document.
+        */
+       void addExternalFile(std::string const & format,
+                            support::FileName const & sourceName,
+                            std::string const & exportName);
+       /** add a referenced file for one format.
+        *  The final name is the source file name without path.
+        * \param format     format that references the given file
+        * \param sourceName source file name. Needs to be absolute
+        */
+       void addExternalFile(std::string const & format,
+                            support::FileName const & sourceName);
+       /// get referenced files for \p format
+       std::vector<ExportedFile> const
+       externalFiles(std::string const & format) const;
 private:
-       static
-       string const BufferFormat(Buffer const * buffer);
-       ///
-       static
-       std::vector<string> const Backends(Buffer const * buffer);
+       typedef std::map<std::string, std::vector<ExportedFile> > FileMap;
+       /** Files that are referenced by the export result in the
+        *  different formats.
+        */
+       FileMap externalfiles;
 };
+
+
+} // namespace lyx
+
 #endif