X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.h;h=15a800d990347ad8ed6e71b51a9db01eb84c3e5a;hb=9c375cb606d7950f8f6bd31e7a841399dc7bbfb2;hp=0ade8432808d3f7b4f30cc940340cda370328b42;hpb=69d566afea3bf2a9885412ec140b52bf0ef04c9a;p=lyx.git diff --git a/src/TocBackend.h b/src/TocBackend.h index 0ade843280..15a800d990 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -14,7 +14,7 @@ #ifndef TOC_BACKEND_H #define TOC_BACKEND_H -#include "ParIterator.h" +#include "DocIterator.h" #include "support/strfwd.h" @@ -33,15 +33,18 @@ class FuncRequest; */ class TocItem { + friend class Toc; friend class TocBackend; public: /// Default constructor for STL containers. - TocItem() {} + TocItem() : dit_(0) {} /// - TocItem(ParConstIterator const & par_it, + TocItem(DocIterator const & dit, int depth, - docstring const & s + docstring const & s, + bool output_active, + docstring const & t = docstring() ); /// ~TocItem() {} @@ -52,25 +55,44 @@ public: /// docstring const & str() const; /// + docstring const & tooltip() const; + /// docstring const asString() const; + /// + DocIterator const & dit() const; + /// + bool isOutput() const { return output_; } /// the action corresponding to the goTo above FuncRequest action() const; protected: /// Current position of item. - ParConstIterator par_it_; - + DocIterator dit_; /// nesting depth int depth_; - /// Full item string docstring str_; + /// The tooltip string + docstring tooltip_; + /// Is this item in a note, inactive branch, etc? + bool output_; }; /// -typedef std::vector Toc; +class Toc : public std::vector +{ +public: + typedef std::vector::const_iterator const_iterator; + typedef std::vector::iterator iterator; + const_iterator item(DocIterator const & dit) const; + /// Look for a TocItem given its depth and string. + /// \return The first matching item. + /// \retval end() if no item was found. + iterator item(int depth, docstring const & str); +}; + typedef Toc::const_iterator TocIterator; /// The ToC list. @@ -85,28 +107,31 @@ class TocBackend { public: /// - TocBackend(Buffer const * buffer = NULL) : buffer_(buffer) {} + TocBackend(Buffer const * buffer) : buffer_(buffer) {} /// void setBuffer(Buffer const * buffer) { buffer_ = buffer; } /// - void update(); - /// - void updateItem(ParConstIterator const & pit); + void update(bool output_active); + /// \return true if the item was updated. + bool updateItem(DocIterator const & pit); /// TocList const & tocs() const { return tocs_; } + TocList & tocs() { return tocs_; } /// Toc const & toc(std::string const & type) const; - /// Return the first Toc Item before the cursor + Toc & toc(std::string const & type); + /// Return the first Toc Item before the cursor TocIterator item( std::string const & type, ///< Type of Toc. - ParConstIterator const & ///< The cursor location in the document. + DocIterator const & dit ///< The cursor location in the document. ) const; /// - void writePlaintextTocList(std::string const & type, odocstream & os) const; + void writePlaintextTocList(std::string const & type, + odocstringstream & os, size_t max_length) const; private: ///