]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
typo
[lyx.git] / src / Buffer.h
index dae42584f95b71d76f7f9acd85924b38c0abcb81..a9696812bf7c458b1ae9103626166de7fe31b73b 100644 (file)
@@ -13,7 +13,6 @@
 #define BUFFER_H
 
 #include "OutputEnums.h"
-#include "update_flags.h"
 
 #include "insets/InsetCode.h"
 
@@ -30,21 +29,18 @@ namespace lyx {
 
 class BiblioInfo;
 class BufferParams;
-class BufferSet;
 class DispatchResult;
 class DocIterator;
 class docstring_list;
-class ErrorItem;
 class ErrorList;
 class FuncRequest;
 class FuncStatus;
 class Inset;
-class InsetRef;
 class InsetLabel;
+class InsetRef;
 class Font;
 class Format;
 class Lexer;
-class LyXRC;
 class Text;
 class LyXVC;
 class LaTeXFeatures;
@@ -73,6 +69,11 @@ class FileName;
 class FileNameList;
 }
 
+
+class Buffer;
+typedef std::list<Buffer *> ListOfBuffers;
+
+
 /** The buffer object.
  * This is the buffer object. It contains all the informations about
  * a document loaded into LyX.
@@ -304,9 +305,6 @@ public:
        void setParent(Buffer const *);
        Buffer const * parent() const;
 
-       // Collect all relative buffer
-       std::vector<Buffer const *> allRelatives() const;
-
        /** Get the document's master (or \c this if this is not a
            child document)
         */
@@ -315,11 +313,26 @@ public:
        /// \return true if \p child is a child of this \c Buffer.
        bool isChild(Buffer * child) const;
        
-       /// return a vector with all children (and grandchildren)
-       std::vector<Buffer *> getChildren(bool grand_children = true) const;
-
-       /// Add all children (and grandchildren) to supplied vector
-       void getChildren(std::vector<Buffer *> & children, bool grand_children = true) 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.
+       ListOfBuffers getDescendents() const;
+
+       /// Collect all relative buffers, in the order in which they appear.
+       /// I.e., the "root" Buffer is first, then its first child, then any
+       /// of its children, etc. However, there are no duplicates in this
+       /// list.
+       /// This is "stable", too, in the sense that it returns the same
+       /// thing from whichever Buffer it is called.
+       ListOfBuffers allRelatives() const;
 
        /// Is buffer read-only?
        bool isReadonly() const;
@@ -345,28 +358,36 @@ public:
        */
        void validate(LaTeXFeatures &) const;
 
-       /// Update the list of all bibfiles in use (including bibfiles
-       /// of loaded child documents).
-       void updateBibfilesCache(UpdateScope scope = UpdateMaster) const;
-       /// Return the list with all bibfiles in use (including bibfiles
-       /// of loaded child documents).
-       support::FileNameList const & 
-               getBibfilesCache(UpdateScope scope = UpdateMaster) const;
-       /// Information from BibTeX databases is cached in the Buffer, so
-       /// we do not have to read the file over and over. 
+       /// Reference information is cached in the Buffer, so we do not
+       /// have to check or read things over and over. 
+       ///
+       /// There are two caches.
+       ///
+       /// One is a cache of the BibTeX files from which reference info is
+       /// 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();
+       void invalidateBibinfoCache() const;
+       /// This invalidates the cache of files we need to check.
+       void invalidateBibfileCache() const;
        /// Updates the cached bibliography information.
        /// Note that you MUST call this method to update the cache. It will
        /// not happen otherwise. (Currently, it is called at the start of
-       /// updateLabels() and from GuiCitation.)
+       /// updateBuffer() and from GuiCitation.)
+       /// Note that this operates on the master document.
        void checkBibInfoCache() const;
        /// \return the bibliography information for this buffer's master,
        /// or just for it, if it isn't a child.
        BiblioInfo const & masterBibInfo() const;
-       /// \return the bibliography information for this buffer ONLY.
-       BiblioInfo const & localBibInfo() const;
+       ///
+       void fillWithBibKeys(BiblioInfo & keys) const;
        ///
        void getLabelList(std::vector<docstring> &) const;
 
@@ -375,6 +396,8 @@ public:
 
        ///
        bool isMultiLingual() const;
+       ///
+       std::set<Language const *> getLanguages() const;
 
        ///
        BufferParams & params();
@@ -505,7 +528,7 @@ public:
        ///
        void moveAutosaveFile(support::FileName const & old) const;
        ///
-       support::FileName getAutosaveFilename() const;
+       support::FileName getAutosaveFileName() const;
 
        /// return the format of the buffer on a string
        std::string bufferFormat() const;
@@ -526,9 +549,13 @@ public:
        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;
+       ///
+       bool isExporting() const;
 
        ///
-       typedef std::vector<std::pair<InsetRef *, ParIterator> > References;
+       typedef std::vector<std::pair<Inset *, ParIterator> > References;
        References & references(docstring const & label);
        References const & references(docstring const & label) const;
        void clearReferenceCache() const;
@@ -545,13 +572,13 @@ public:
        /// Updates screen labels and some other information associated with
        /// insets and paragraphs. Actually, it's more like a general "recurse
        /// through the Buffer" routine, that visits all the insets and paragraphs.
-       void updateLabels() const { updateLabels(UpdateMaster, InternalUpdate); }
+       void updateBuffer() const { updateBuffer(UpdateMaster, InternalUpdate); }
        /// \param scope: whether to start with the master document or just
        /// do this one.
        /// \param output: whether we are preparing for output.
-       void updateLabels(UpdateScope scope, UpdateType utype) const;
+       void updateBuffer(UpdateScope scope, UpdateType utype) const;
        /// 
-       void updateLabels(ParIterator & parit, UpdateType utype) const;
+       void updateBuffer(ParIterator & parit, UpdateType utype) const;
 
        /// Spellcheck starting from \p from.
        /// \p from initial position, will then points to the next misspelled
@@ -561,6 +588,8 @@ public:
        /// \return progress if a new word was found.
        int spellCheck(DocIterator & from, DocIterator & to,
                WordLangTuple & word_lang, docstring_list & suggestions) const;
+       ///
+       void checkChildBuffers();
 
 private:
        ///
@@ -572,7 +601,19 @@ private:
        */
        ReadStatus readFile(Lexer &, support::FileName const & filename,
                            bool fromString = false);
+       ///
+       void getLanguages(std::set<Language const *> &) const;
+       /// Update the list of all bibfiles in use (including bibfiles
+       /// of loaded child documents).
+       void updateBibfilesCache(UpdateScope scope = UpdateMaster) const;
+       /// Return the list with all bibfiles in use (including bibfiles
+       /// of loaded child documents).
+       support::FileNameList const & 
+               getBibfilesCache(UpdateScope scope = UpdateMaster) const;
+       ///
+       void collectChildren(ListOfBuffers & children, bool grand_children) const;
 
+       
        /// Use the Pimpl idiom to hide the internals.
        class Impl;
        /// The pointer never changes although *pimpl_'s contents may.