X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.h;h=40d2dbafe1b06992af9a3b3404dc8abd7687574a;hb=55a3dd7b346d29a52ba305a4558e9e380ef50f47;hp=30ed9de75fd84e8ca93224c89d40e7b49d25ce86;hpb=a8cd9a4b8fd325b00c75f601c66c6d618ba276db;p=lyx.git diff --git a/src/TocBackend.h b/src/TocBackend.h index 30ed9de75f..40d2dbafe1 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -9,21 +9,19 @@ * \author Abdelrazak Younes * * Full author contact details are available in file CREDITS. - * - * TocBackend mainly used in toc.[Ch] */ #ifndef TOC_BACKEND_H #define TOC_BACKEND_H +#include "DocIterator.h" + +#include "support/strfwd.h" + #include #include #include -#include "ParIterator.h" - -#include "support/strfwd.h" - namespace lyx { @@ -35,15 +33,17 @@ 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, + docstring const & t = docstring() ); /// ~TocItem() {} @@ -54,25 +54,43 @@ public: /// docstring const & str() const; /// + docstring const & tooltip() const; + /// docstring const asString() const; + /// + DocIterator const & dit() const; /// 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_; }; /// -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. @@ -87,29 +105,29 @@ class TocBackend { public: /// - TocBackend(Buffer const * buffer = NULL): buffer_(buffer) {} - /// - ~TocBackend() {} + TocBackend(Buffer const * buffer) : buffer_(buffer) {} /// - void setBuffer(Buffer const * buffer) - { buffer_ = buffer; } + void setBuffer(Buffer const * buffer) { buffer_ = buffer; } /// void update(); - /// - void updateItem(ParConstIterator const & pit); + /// \return true if the item was updated. + bool updateItem(DocIterator const & pit); /// - TocList const & tocs() const - { return tocs_; } + TocList const & tocs() const { return tocs_; } + TocList & tocs() { return tocs_; } /// Toc const & toc(std::string const & type) const; + Toc & toc(std::string const & type); + /// Return the first Toc Item before the cursor - TocIterator const item( + TocIterator item( std::string const & type, ///< Type of Toc. - ParConstIterator const & ///< The cursor location in the document. - ) const; + DocIterator const & dit ///< The cursor location in the document. + ) const; + /// void writePlaintextTocList(std::string const & type, odocstream & os) const; private: @@ -117,18 +135,15 @@ private: TocList tocs_; /// Buffer const * buffer_; - }; // TocBackend -inline -bool operator==(TocItem const & a, TocItem const & b) +inline bool operator==(TocItem const & a, TocItem const & b) { return a.id() == b.id() && a.str() == b.str() && a.depth() == b.depth(); } -inline -bool operator!=(TocItem const & a, TocItem const & b) +inline bool operator!=(TocItem const & a, TocItem const & b) { return !(a == b); }