]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
Fix #7720: plain text export of branches should contain only content of the inset.
[lyx.git] / src / Buffer.h
index 393951403147be7ca8f08b8b617dba021db6e5e8..a6db5ec01076935d2cd58ae466487de75fbdcffd 100644 (file)
 #define BUFFER_H
 
 #include "OutputEnums.h"
+#include "OutputParams.h"
 
 #include "insets/InsetCode.h"
 
 #include "support/strfwd.h"
 #include "support/types.h"
 
+#include <map>
 #include <list>
 #include <set>
 #include <string>
@@ -70,6 +72,10 @@ class FileName;
 class FileNameList;
 }
 
+namespace graphics {
+class PreviewLoader;
+}
+
 
 class Buffer;
 typedef std::list<Buffer *> ListOfBuffers;
@@ -131,8 +137,8 @@ public:
         * FIXME: replace this method with support/FileMonitor.
         */
        enum CheckMethod {
-               checksum_method,  ///< Use file checksum
-               timestamp_method, ///< Use timestamp, and checksum if timestamp has changed
+               checksum_method, ///< Use file checksum
+               timestamp_method ///< Use timestamp, and checksum if timestamp has changed
        };
 
        ///
@@ -181,9 +187,9 @@ public:
        /// Renames and saves the buffer
        bool saveAs(support::FileName const & fn);
 
-       /// Write document to stream. Returns \c false if unsuccesful.
+       /// Write document to stream. Returns \c false if unsuccessful.
        bool write(std::ostream &) const;
-       /// Write file. Returns \c false if unsuccesful.
+       /// Write file. Returns \c false if unsuccessful.
        bool writeFile(support::FileName const &) const;
 
        /// \name Functions involved in reading files/strings.
@@ -209,6 +215,10 @@ public:
        int readHeader(Lexer & lex);
 
 private:
+       ///
+       typedef std::map<Buffer const *, Buffer *> BufferMap;
+       ///
+       void clone(BufferMap &) const;
        /// save timestamp and checksum of the given file.
        void saveCheckSum() const;      
        /// read a new file
@@ -278,19 +288,21 @@ public:
            method with a string stream if the output is supposed to go to a
            file. \code
            ofdocstream ofs;
+           otexstream os(ofs, texrow);
            ofs.open("test.tex");
-           writeLaTeXSource(ofs, ...);
+           writeLaTeXSource(os, ...);
            ofs.close();
            \endcode is NOT equivalent to \code
            odocstringstream oss;
-           writeLaTeXSource(oss, ...);
+           otexstream os(oss, texrow);
+           writeLaTeXSource(os, ...);
            ofdocstream ofs;
            ofs.open("test.tex");
            ofs << oss.str();
            ofs.close();
            \endcode
         */
-       void writeLaTeXSource(odocstream & os,
+       void writeLaTeXSource(otexstream & os,
                           std::string const & original_path,
                           OutputParams const &,
                           bool output_preamble = true,
@@ -305,8 +317,7 @@ public:
                             bool only_body = false) const;
        ///
        void makeLyXHTMLFile(support::FileName const & filename,
-                            OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputParams const & runparams_in) const;
        ///
        void writeLyXHTMLSource(odocstream & os,
                             OutputParams const & runparams_in,
@@ -405,13 +416,6 @@ public:
        /// Set buffer read-only flag
        void setReadonly(bool flag = true);
 
-       /// returns \c true if the buffer contains a LaTeX document
-       bool isLatex() const;
-       /// returns \c true if the buffer contains a DocBook document
-       bool isDocBook() const;
-       /// returns \c true if the buffer contains a Wed document
-       bool isLiterate() const;
-
        /** Validate a buffer for LaTeX.
            This validates the buffer, and returns a struct for use by
            #makeLaTeX# and others. Its main use is to figure out what
@@ -457,6 +461,8 @@ public:
        /// add a single piece of bibliography info to our cache
        void addBibTeXInfo(docstring const & key, BibTeXInfo const & bi) const;
        ///
+       bool citeLabelsValid() const;
+       ///
        void getLabelList(std::vector<docstring> &) const;
 
        ///
@@ -509,6 +515,8 @@ public:
        /// Set by buffer_funcs' newFile.
        void setFullyLoaded(bool);
 
+       /// FIXME: Needed by RenderPreview.
+       graphics::PreviewLoader * loader() const;
        /// Update the LaTeX preview snippets associated with this buffer
        void updatePreviews() const;
        /// Remove any previewed LaTeX snippets associated with this buffer
@@ -526,7 +534,7 @@ public:
        /// Collect macro definitions in paragraphs
        void updateMacros() const;
        /// Iterate through the whole buffer and try to resolve macros
-       void updateMacroInstances() const;
+       void updateMacroInstances(UpdateType) const;
 
        /// List macro names of this buffer, the parent and the children
        void listMacroNames(MacroNameSet & macros) const;
@@ -542,7 +550,7 @@ public:
 
        /// Collect user macro names at loading time
        typedef std::set<docstring> UserMacroSet;
-       UserMacroSet usermacros;
+       mutable UserMacroSet usermacros;
 
        /// Replace the inset contents for insets which InsetCode is equal
        /// to the passed \p inset_code.
@@ -551,8 +559,8 @@ public:
 
        /// get source code (latex/docbook) for some paragraphs, or all paragraphs
        /// including preamble
-       void getSourceCode(odocstream & os, pit_type par_begin, pit_type par_end,
-               bool full_source) const;
+       void getSourceCode(odocstream & os, std::string const format,
+                          pit_type par_begin, pit_type par_end, bool full_source) const;
 
        /// Access to error list.
        /// This method is used only for GUI visualisation of Buffer related
@@ -596,11 +604,6 @@ public:
 
        
 
-       /// return the format of the buffer on a string
-       std::string bufferFormat() const;
-       /// return the default output format of the current backend
-       std::string getDefaultOutputFormat() const;
-
        ///
        bool doExport(std::string const & format, bool put_in_tempdir,
                bool includeall, std::string & result_file) const;
@@ -609,12 +612,6 @@ public:
                      bool includeall = false) const;
        ///
        bool preview(std::string const & format, bool includeall = false) const;
-       ///
-       bool isExportable(std::string const & format) const;
-       ///
-       std::vector<Format const *> exportableFormats(bool only_viewable) const;
-       ///
-       bool isExportableFormat(std::string const & format) const;
        /// mark the buffer as busy exporting something, or not
        void setExportStatus(bool e) const;
        ///
@@ -661,8 +658,6 @@ private:
        /// Change name of buffer. Updates "read-only" flag.
        void setFileName(support::FileName const & fname);
        ///
-       std::vector<std::string> backends() const;
-       ///
        void getLanguages(std::set<Language const *> &) const;
        /// Checks whether any of the referenced bibfiles have changed since the
        /// last time we loaded the cache. Note that this does NOT update the