X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.h;h=f52bb828b8de79914c90e46451c5b0e866954453;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=6cb04bb7c0b72693b0bfe5a299554fb471ccaae6;hpb=e6f922009f6311b561a1a3fa830f9eb3024d7902;p=lyx.git diff --git a/src/Buffer.h b/src/Buffer.h index 6cb04bb7c0..f52bb828b8 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -21,6 +21,7 @@ #include "support/SignalSlot.h" #include +#include #include #include @@ -124,11 +125,17 @@ public: }; /// Constructor - explicit Buffer(std::string const & file, bool b = false); + explicit Buffer(std::string const & file, bool readonly = false, + Buffer const * cloned_buffer = 0); /// Destructor ~Buffer(); + /// + Buffer * clone() const; + /// + bool isClone() const; + /** High-level interface to buffer functionality. This function parses a command string and executes it. */ @@ -155,10 +162,6 @@ public: */ bool readDocument(Lexer &); - /// - void insertStringAsLines(ParagraphList & plist, - pit_type &, pos_type &, - Font const &, docstring const &, bool); /// DocIterator getParFromID(int id) const; /// do we have a paragraph with this id? @@ -175,11 +178,16 @@ public: /// Write document to stream. Returns \c false if unsuccesful. bool write(std::ostream &) const; + /// save emergency file + /// \return a status message towards the user. + docstring emergencyWrite(); /// Write file. Returns \c false if unsuccesful. bool writeFile(support::FileName const &) const; - /// Loads LyX file \c filename into buffer, * and \return success + /// Loads LyX file \c filename into buffer, * and return success bool loadLyXFile(support::FileName const & s); + /// Reloads the LyX file + bool reload(); /// Fill in the ErrorList with the TeXErrors void bufferErrors(TeXErrors const &, ErrorList &) const; @@ -263,9 +271,16 @@ public: /// void setUnnamed(bool flag = true); - /// + /// Whether or not a filename has been assigned to this buffer bool isUnnamed() const; + /// Whether or not this buffer is internal. + /// + /// An internal buffer does not contain a real document, but some auxiliary text segment. + /// It is not associated with a filename, it is never saved, thus it does not need to be + /// automatically saved, nor it needs to trigger any "do you want to save ?" question. + bool isInternal() const; + /// Mark this buffer as dirty. void markDirty(); @@ -305,8 +320,11 @@ 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 getChildren() const; + /// return a vector with all children (and grandchildren) + std::vector getChildren(bool grand_children = true) const; + + /// Add all children (and grandchildren) to supplied vector + void getChildren(std::vector & children, bool grand_children = true) const; /// Is buffer read-only? bool isReadonly() const; @@ -423,6 +441,10 @@ public: /// Return macro defined before the inclusion of the child MacroData const * getMacro(docstring const & name, Buffer const & child, bool global = true) const; + /// Collect user macro names at loading time + typedef std::set UserMacroSet; + UserMacroSet usermacros; + /// Replace the inset contents for insets which InsetCode is equal /// to the passed \p inset_code. void changeRefsIfUnique(docstring const & from, docstring const & to, @@ -450,7 +472,7 @@ public: Undo & undo(); /// This function is called when the buffer is changed. - void changed() const; + void changed(bool update_metrics) const; /// void updateTocItem(std::string const &, DocIterator const &) const; /// This function is called when the buffer structure is changed. @@ -498,6 +520,8 @@ public: bool isExportable(std::string const & format) const; /// std::vector exportableFormats(bool only_viewable) const; + /// + bool isExportableFormat(std::string const & format) const; /// typedef std::vector > References; @@ -514,10 +538,16 @@ public: // FIXME This really shouldn't be needed, but at the moment it's not // clear how to do it just for the individual pieces we need. void setBuffersForInsets() const; - /// - void updateLabels(UpdateScope = UpdateMaster) const; - /// - void updateLabels(ParIterator & parit) const; + /// 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, false); } + /// \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, bool output) const; + /// + void updateLabels(ParIterator & parit, bool output) const; /// Spellcheck starting from \p from. /// \p from initial position, will then points to the next misspelled @@ -537,7 +567,10 @@ private: */ void updateMacros(DocIterator & it, DocIterator & scope) const; - + /// + void checkBibInfoCache() const; + /// + void setLabel(ParIterator & it) const; /// void collectRelatives(BufferSet & bufs) const; @@ -560,7 +593,7 @@ private: class Impl; /// The pointer never changes although *pimpl_'s contents may. Impl * const d; - + /// frontend::GuiBufferDelegate * gui_; /// This function is called when the buffer structure is changed.