X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.h;h=a3cbc3f61fd6016277c691a09444ae8e03dd23de;hb=ae348f8af96100a154b3792d27732d621d44ec89;hp=fade88655f8c8599010e4a164f3abc646cbbf648;hpb=e22c5f4d97b53a5d2adcbf7bbc7ba2dd40ef40de;p=lyx.git diff --git a/src/buffer.h b/src/buffer.h index fade88655f..a3cbc3f61f 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -14,6 +14,9 @@ #include "InsetList.h" +#include "dociterator.h" +#include "ParagraphList_fwd.h" + #include "support/limited_stack.h" #include "support/types.h" @@ -21,6 +24,7 @@ #include #include +#include #include #include #include @@ -40,21 +44,21 @@ class LaTeXFeatures; class Language; class MacroData; class OutputParams; -class ParagraphList; class ParConstIterator; class ParIterator; class TeXErrors; class TexRow; class Undo; +class StableDocIterator; /** The buffer object. * This is the buffer object. It contains all the informations about * a document loaded into LyX. - * The buffer object owns the LyXText (wrapped in an InsetText), which + * The buffer object owns the LyXText (wrapped in an InsetText), which * contains the individual paragraphs of the document. * - * + * * I am not sure if the class is complete or * minimal, probably not. * \author Lars Gullik Bjønnes @@ -90,8 +94,6 @@ public: /// load a new file bool readFile(std::string const & filename); - bool readFile(std::string const & filename, lyx::pit_type pit); - /// read the header, returns number of unknown tokens int readHeader(LyXLex & lex); @@ -216,6 +218,10 @@ public: child document) */ Buffer const * getMasterBuffer() const; + /** Get the document's master (or \c this if this is not a + child document) + */ + Buffer * getMasterBuffer(); /// Is buffer read-only? bool isReadonly() const; @@ -248,6 +254,12 @@ public: /// return all bibkeys from buffer and its childs void fillWithBibKeys(std::vector > & keys) const; + /// Update the cache with all bibfiles in use (including bibfiles + /// of loaded child documents). + void updateBibfilesCache(); + /// Return the cache with all bibfiles in use (including bibfiles + /// of loaded child documents). + std::vector const & getBibfilesCache() const; /// void getLabelList(std::vector &) const; @@ -307,9 +319,10 @@ public: /// Set by buffer_funcs' newFile. void fully_loaded(bool); - /// + /// Our main text (inside the top InsetText) LyXText & text() const; - /// + + /// Our top InsetText! InsetBase & inset() const; // @@ -323,14 +336,22 @@ public: MacroData const & getMacro(std::string const & name) const; /// void insertMacro(std::string const & name, MacroData const & data); + /// + void saveCursor(StableDocIterator cursor, StableDocIterator anchor); + /// + StableDocIterator getCursor() const { return cursor_; } + /// + StableDocIterator getAnchor() const { return anchor_; } + /// + void changeRefsIfUnique(std::string const & from, std::string const & to); + /// get source code (latex/docbook/linuxdoc) for some paragraphs + void getSourceCode(std::ostream & os, lyx::pit_type par_begin, lyx::pit_type par_end); private: /** Inserts a file into a document - \param par if != 0 insert the file. \return \c false if method fails. */ - bool readFile(LyXLex &, std::string const & filename, - lyx::pit_type pit); + bool readFile(LyXLex &, std::string const & filename); bool do_writeFile(std::ostream & ofs) const; @@ -338,6 +359,15 @@ private: class Impl; /// The pointer never changes although *pimpl_'s contents may. boost::scoped_ptr const pimpl_; + + /// Save the cursor Position on Buffer switch + /// this would not be needed if every Buffer would have + /// it's BufferView, this should be FIXED in future. + StableDocIterator cursor_; + StableDocIterator anchor_; + /// A cache for the bibfiles (including bibfiles of loaded child + /// documents), needed for appropriate update of natbib labels. + std::vector bibfilesCache_; }; #endif