X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FBuffer.h;h=95d1386866874f118628f1d95f768a6b93072600;hb=9b4a26a252b2da164fcd6aa84feed0a738b16c10;hp=944530d338c76196197488f4a48e82df85723b80;hpb=ac08e89095af413817b08b538a4ed8cb0eabbfdd;p=lyx.git diff --git a/src/Buffer.h b/src/Buffer.h index 944530d338..95d1386866 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -14,9 +14,9 @@ #include "insets/InsetCode.h" -#include "support/FileName.h" #include "support/strfwd.h" #include "support/types.h" +#include "support/SignalSlot.h" #include #include @@ -24,12 +24,15 @@ namespace lyx { +class BiblioInfo; class BufferParams; -class EmbeddedFiles; +class DocIterator; class ErrorItem; class ErrorList; class FuncRequest; class Inset; +class InsetRef; +class InsetLabel; class Font; class Format; class Lexer; @@ -39,6 +42,8 @@ class LyXVC; class LaTeXFeatures; class Language; class MacroData; +class MacroNameSet; +class MacroSet; class OutputParams; class Paragraph; class ParConstIterator; @@ -54,6 +59,11 @@ class GuiBufferDelegate; class WorkAreaManager; } +namespace support { +class FileName; +class FileNameList; +} + /** The buffer object. * This is the buffer object. It contains all the informations about * a document loaded into LyX. @@ -138,7 +148,7 @@ public: pit_type &, pos_type &, Font const &, docstring const &, bool); /// - ParIterator getParFromID(int id) const; + DocIterator getParFromID(int id) const; /// do we have a paragraph with this id? bool hasParWithID(int id) const; @@ -298,7 +308,12 @@ public: void updateBibfilesCache() const; /// Return the cache with all bibfiles in use (including bibfiles /// of loaded child documents). - std::vector const & getBibfilesCache() const; + support::FileNameList const & getBibfilesCache() 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 getLabelList(std::vector &) const; @@ -324,7 +339,7 @@ public: LyXVC const & lyxvc() const; /// Where to put temporary files. - std::string const & temppath() const; + std::string const temppath() const; /// Used when typesetting to place errorboxes. TexRow const & texrow() const; @@ -355,16 +370,22 @@ public: // // Macro handling // - /// Collect macros in paragraphs - void updateMacros(); - /// Look for macro defined before par (or in the master buffer) - bool hasMacro(docstring const & name, Paragraph const & par) const; - /// Look for macro defined anywhere in the buffer (or in the master buffer) - bool hasMacro(docstring const & name) const; - /// Return macro defined before par (or in the master buffer) - MacroData const & getMacro(docstring const & name, Paragraph const & par) const; + /// Collect macro definitions in paragraphs + void updateMacros() const; + /// Iterate through the whole buffer and try to resolve macros + void updateMacroInstances() const; + + /// List macro names of this buffer, the parent and the children + void listMacroNames(MacroNameSet & macros) const; + /// Collect macros of the parent and its children in front of this buffer. + void listParentMacros(MacroSet & macros, LaTeXFeatures & features) const; + + /// Return macro defined before pos (or in the master buffer) + MacroData const * getMacro(docstring const & name, DocIterator const & pos, bool global = true) const; /// Return macro defined anywhere in the buffer (or in the master buffer) - MacroData const & getMacro(docstring const & name) const; + MacroData const * getMacro(docstring const & name, bool global = true) const; + /// Return macro defined before the inclusion of the child + MacroData const * getMacro(docstring const & name, Buffer const & child, bool global = true) const; /// Replace the inset contents for insets which InsetCode is equal /// to the passed \p inset_code. @@ -388,14 +409,10 @@ public: /// method is const because modifying this backend does not touch /// the document contents. TocBackend & tocBackend() const; - - //@{ - EmbeddedFiles & embeddedFiles(); - EmbeddedFiles const & embeddedFiles() const; - //@} + /// Undo & undo(); - + /// This function is called when the buffer is changed. void changed() const; /// This function is called when the buffer structure is changed. @@ -417,10 +434,6 @@ public: /// void autoSave() const; - /// - void loadChildDocuments() const; - /// - void resetChildDocuments(bool close_them) const; /// return the format of the buffer on a string std::string bufferFormat() const; @@ -437,8 +450,25 @@ public: /// std::vector exportableFormats(bool only_viewable) const; + /// + typedef std::vector > References; + References & references(docstring const & label); + References const & references(docstring const & label) const; + void clearReferenceCache() const; + void setInsetLabel(docstring const & label, InsetLabel const * il); + InsetLabel const * insetLabel(docstring const & label) const; + private: - /// + /// search for macro in local (buffer) table or in children + MacroData const * getBufferMacro(docstring const & name, + DocIterator const & pos) const; + /** Update macro table starting with position of it + \param it in some text inset + */ + void updateMacros(DocIterator & it, + DocIterator & scope) const; + + /// bool readFileHelper(support::FileName const & s); /// std::vector backends() const; @@ -453,11 +483,18 @@ private: /// The pointer never changes although *pimpl_'s contents may. Impl * const d; - /// A cache for the bibfiles (including bibfiles of loaded child - /// documents), needed for appropriate update of natbib labels. - mutable std::vector bibfilesCache_; - frontend::GuiBufferDelegate * gui_; + + /// This function is called when the buffer structure is changed. + Signal structureChanged_; + /// This function is called when some parsing error shows up. + //Signal errors(std::string const &) = 0; + /// This function is called when some message shows up. + //Signal message(docstring const &) = 0; + /// This function is called when the buffer busy status change. + //Signal setBusy(bool) = 0; + /// Reset autosave timers for all users. + Signal resetAutosaveTimers_; };