]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
listerrors.lyx : Update a link.
[lyx.git] / src / Buffer.h
index 273123a5e6fc001770005a4b438ea473e1ce5f6f..9a2d4844adb04b4f349460a32b5a406c7650a5dd 100644 (file)
@@ -79,6 +79,8 @@ class PreviewLoader;
 
 class Buffer;
 typedef std::list<Buffer *> ListOfBuffers;
+/// a list of Buffers we cloned
+typedef std::set<Buffer *> CloneList;
 
 
 /** The buffer object.
@@ -109,7 +111,7 @@ public:
                ReadWrongVersion,
                ReadFileNotFound,
                ReadVCError,
-               ReadAutosaveFailure,            
+               ReadAutosaveFailure,
                ReadEmergencyFailure,
                ReadNoLyXFormat,
                ReadDocumentFailure,
@@ -122,6 +124,18 @@ public:
                ReadOriginal
        };
 
+       enum ExportStatus {
+               // export
+               ExportSuccess,
+               ExportCancel,
+               ExportError,
+               ExportNoPathToFormat,
+               ExportTexPathHasSpaces,
+               ExportConverterError,
+               // preview
+               PreviewSuccess,
+               PreviewError
+       };
 
        /// Method to check if a file is externally modified, used by
        /// isExternallyModified()
@@ -154,8 +168,11 @@ public:
        /// Destructor
        ~Buffer();
 
-       ///
-       Buffer * clone() const;
+       /// Clones the entire structure of which this Buffer is part, starting
+       /// with the master and cloning all the children, too.
+       Buffer * cloneFromMaster() const;
+       /// Just clones this single Buffer. For autosave.
+       Buffer * cloneBufferOnly() const;
        ///
        bool isClone() const;
 
@@ -218,9 +235,9 @@ private:
        ///
        typedef std::map<Buffer const *, Buffer *> BufferMap;
        ///
-       void clone(BufferMap &) const;
+       void cloneWithChildren(BufferMap &, CloneList *) const;
        /// save timestamp and checksum of the given file.
-       void saveCheckSum() const;      
+       void saveCheckSum() const;
        /// read a new file
        ReadStatus readFile(support::FileName const & fn);
        /// Reads a file without header.
@@ -232,14 +249,14 @@ private:
        /// implemented for RCS.
        /// \sa LyXVC::file_not_found_hook
        ReadStatus extractFromVC();
-       /// Reads the first tag of a LyX File and 
+       /// Reads the first tag of a LyX File and
        /// returns the file format number.
        ReadStatus parseLyXFormat(Lexer & lex, support::FileName const & fn,
                int & file_format) const;
        /// Convert the LyX file to the LYX_FORMAT using
        /// the lyx2lyx script and returns the filename
        /// of the temporary file to be read
-       ReadStatus convertLyXFormat(support::FileName const & fn, 
+       ReadStatus convertLyXFormat(support::FileName const & fn,
                support::FileName & tmpfile, int from_format);
        //@}
 
@@ -247,7 +264,7 @@ public:
        /// \name Functions involved in autosave and emergency files.
        //@{
        /// Save an autosave file to #filename.lyx#
-       bool autoSave() const;  
+       bool autoSave() const;
        /// save emergency file
        /// \return a status message towards the user.
        docstring emergencyWrite();
@@ -256,11 +273,11 @@ public:
 //private:
        ///
        void removeAutosaveFile() const;
-       
+
 private:
        /// Try to load an autosave file associated to \c fn.
        ReadStatus loadAutosave();
-       /// Try to load an emergency file associated to \c fn. 
+       /// Try to load an emergency file associated to \c fn.
        ReadStatus loadEmergency();
        /// Get the filename of the emergency file associated with the Buffer
        support::FileName getEmergencyFileName() const;
@@ -274,12 +291,18 @@ public:
        /// Fill in the ErrorList with the TeXErrors
        void bufferErrors(TeXErrors const &, ErrorList &) const;
 
+       enum OutputWhat {
+               FullSource,
+               OnlyBody,
+               OnlyPreamble,
+               CurrentParagraph
+       };
+
        /// Just a wrapper for writeLaTeXSource, first creating the ofstream.
        bool makeLaTeXFile(support::FileName const & filename,
                           std::string const & original_path,
                           OutputParams const &,
-                          bool output_preamble = true,
-                          bool output_body = true) const;
+                          OutputWhat output = FullSource) const;
        /** Export the buffer to LaTeX.
            If \p os is a file stream, and params().inputenc is "auto" or
            "default", and the buffer contains text in different languages
@@ -305,23 +328,22 @@ public:
        void writeLaTeXSource(otexstream & os,
                           std::string const & original_path,
                           OutputParams const &,
-                          bool output_preamble = true,
-                          bool output_body = true) const;
+                          OutputWhat output = FullSource) const;
        ///
        void makeDocBookFile(support::FileName const & filename,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        ///
        void writeDocBookSource(odocstream & os, std::string const & filename,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        ///
        void makeLyXHTMLFile(support::FileName const & filename,
                             OutputParams const & runparams_in) const;
        ///
        void writeLyXHTMLSource(odocstream & os,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        /// returns the main language for the buffer (document)
        Language const * language() const;
        /// get l10n translated to the buffers language
@@ -388,15 +410,15 @@ public:
 
        /// \return true if \p child is a child of this \c Buffer.
        bool isChild(Buffer * child) const;
-       
+
        /// \return true if this \c Buffer has children
        bool hasChildren() const;
-       
+
        /// \return a list of the direct children of this Buffer.
        /// this list has no duplicates and is in the order in which
        /// the children appear.
        ListOfBuffers getChildren() const;
-       
+
        /// \return a list of all descendents of this Buffer (children,
        /// grandchildren, etc). this list has no duplicates and is in
        /// the order in which the children appear.
@@ -428,7 +450,7 @@ public:
        void validate(LaTeXFeatures &) const;
 
        /// Reference information is cached in the Buffer, so we do not
-       /// have to check or read things over and over. 
+       /// have to check or read things over and over.
        ///
        /// There are two caches.
        ///
@@ -436,11 +458,11 @@ public:
        /// being gathered. This cache is PER BUFFER, and the cache for the
        /// master essentially includes the cache for its children. This gets
        /// invalidated when an InsetBibtex is created, deleted, or modified.
-       /// 
+       ///
        /// The other is a cache of the reference information itself. This
        /// exists only in the master buffer, and when it needs to be updated,
        /// the children add their information to the master's cache.
-       
+
        /// Calling this method invalidates the cache and so requires a
        /// re-read.
        void invalidateBibinfoCache() const;
@@ -465,6 +487,9 @@ public:
        ///
        void getLabelList(std::vector<docstring> &) const;
 
+       /// This removes the .aux and .bbl files from the temp dir.
+       void removeBiblioTempFiles() const;
+
        ///
        void changeLanguage(Language const * from, Language const * to);
 
@@ -560,7 +585,7 @@ public:
        /// get source code (latex/docbook) for some paragraphs, or all paragraphs
        /// including preamble
        void getSourceCode(odocstream & os, std::string const format,
-                          pit_type par_begin, pit_type par_end, bool full_source) const;
+                          pit_type par_begin, pit_type par_end, OutputWhat output) const;
 
        /// Access to error list.
        /// This method is used only for GUI visualisation of Buffer related
@@ -602,18 +627,28 @@ public:
        ///
        bool hasGuiDelegate() const;
 
-       
-
        ///
-       bool doExport(std::string const & format, bool put_in_tempdir,
+       ExportStatus doExport(std::string const & target, bool put_in_tempdir) const;
+       ///
+       ExportStatus doExport(std::string const & target, bool put_in_tempdir,
+               std::string & result_file) const;
+       ///
+       ExportStatus preview(std::string const & format) const;
+
+private:
+       /// target is a format name optionally followed by a space
+       /// and a destination file-name
+       ExportStatus doExport(std::string const & target, bool put_in_tempdir,
                bool includeall, std::string & result_file) const;
        ///
-       bool doExport(std::string const & format, bool put_in_tempdir,
-                     bool includeall = false) const;
+       ExportStatus doExport(std::string const & target, bool put_in_tempdir,
+               bool includeall) const;
        ///
-       bool preview(std::string const & format, bool includeall = false) const;
-       /// mark the buffer as busy exporting something, or not
-       void setExportStatus(bool e) const;
+       ExportStatus preview(std::string const & format, bool includeall = false) const;
+       ///
+       void setMathFlavor(OutputParams & op) const;
+
+public:
        ///
        bool isExporting() const;
 
@@ -640,7 +675,7 @@ public:
        /// do this one.
        /// \param output: whether we are preparing for output.
        void updateBuffer(UpdateScope scope, UpdateType utype) const;
-       /// 
+       ///
        void updateBuffer(ParIterator & parit, UpdateType utype) const;
 
        /// Spellcheck starting from \p from.
@@ -655,6 +690,11 @@ public:
        void checkChildBuffers();
 
 private:
+       class MarkAsExporting;
+       friend class MarkAsExporting;
+       /// mark the buffer as busy exporting something, or not
+       void setExportStatus(bool e) const;
+
        /// Change name of buffer. Updates "read-only" flag.
        void setFileName(support::FileName const & fname);
        ///
@@ -668,7 +708,7 @@ private:
        void updateBibfilesCache(UpdateScope scope = UpdateMaster) const;
        /// Return the list with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       support::FileNameList const & 
+       support::FileNameList const &
                getBibfilesCache(UpdateScope scope = UpdateMaster) const;
        ///
        void collectChildren(ListOfBuffers & children, bool grand_children) const;