]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
The logic of the endParagraph() routine is wrong. We should first
[lyx.git] / src / Buffer.h
index f4cb22f964a54391fa168d53e870f839a62ea52f..f740a37b9236c28a0db82e64bd76c5636928e78f 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,
@@ -125,6 +127,7 @@ public:
        enum ExportStatus {
                // export
                ExportSuccess,
+               ExportCancel,
                ExportError,
                ExportNoPathToFormat,
                ExportTexPathHasSpaces,
@@ -165,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;
 
@@ -229,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.
@@ -243,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);
        //@}
 
@@ -258,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();
@@ -267,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;
@@ -404,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.
@@ -444,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.
        ///
@@ -452,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;
@@ -481,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);
 
@@ -636,10 +645,10 @@ private:
                bool includeall) const;
        ///
        ExportStatus preview(std::string const & format, bool includeall = false) const;
+       ///
+       void setMathFlavor(OutputParams & op) const;
 
 public:
-       /// mark the buffer as busy exporting something, or not
-       void setExportStatus(bool e) const;
        ///
        bool isExporting() const;
 
@@ -666,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.
@@ -680,7 +689,22 @@ public:
        ///
        void checkChildBuffers();
 
+       /// compute statistics between \p from and \p to
+       /// \p from initial position
+       /// \p to points to the end position
+       /// \p skipNoOutput if notes etc. should be ignored
+       void updateStatistics(DocIterator & from, DocIterator & to,
+                                                 bool skipNoOutput = true) const;
+       /// statistics accessor functions
+       int wordCount() const;
+       int charCount(bool with_blanks) const;
+
 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);
        ///
@@ -694,7 +718,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;