]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
GuiPainter.cpp: correct attempt from r35491
[lyx.git] / src / Buffer.h
index d50e67bdc7582784a811dd4c849092dffe18560d..add05579cc0ec37442ead719347ed8b9056c3648 100644 (file)
@@ -13,7 +13,6 @@
 #define BUFFER_H
 
 #include "OutputEnums.h"
-#include "update_flags.h"
 
 #include "insets/InsetCode.h"
 
@@ -38,8 +37,8 @@ class ErrorList;
 class FuncRequest;
 class FuncStatus;
 class Inset;
-class InsetRef;
 class InsetLabel;
+class InsetRef;
 class Font;
 class Format;
 class Lexer;
@@ -343,28 +342,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;
 
@@ -505,7 +512,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,6 +533,10 @@ 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<Inset *, ParIterator> > References;
@@ -545,13 +556,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 +572,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:
        ///
@@ -574,6 +587,13 @@ private:
                            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;
 
        /// Use the Pimpl idiom to hide the internals.
        class Impl;