]> git.lyx.org Git - lyx.git/blobdiff - src/toc.h
minimal effort implementation of:
[lyx.git] / src / toc.h
index 86dc54020ea1216d07a7100a662c6ce0feeb4b11..919d1ba28243cb6413162099f8664e048ae3be24 100644 (file)
--- a/src/toc.h
+++ b/src/toc.h
@@ -8,75 +8,62 @@
  * \author Angus Leeming
  *
  * Full author contact details are available in file CREDITS.
+ *
+ * Nice functions and objects to handle TOCs
  */
 
 #ifndef TOC_H
 #define TOC_H
 
-#include "support/std_ostream.h"
-#include "support/std_string.h"
-
-#include <map>
-#include <vector>
+#include "TocBackend.h"
 
-class Buffer;
-class LyXView;
-class Paragraph;
+class LCursor;
 
-/** Nice functions and objects to handle TOCs
- */
 namespace lyx {
 namespace toc {
 
-///
-struct TocItem {
-       TocItem(int par_id, int d, string const & s)
-               : id_(par_id), depth(d), str(s) {}
-       ///
-       string const asString() const;
-       /// set cursor in LyXView to this TocItem
-       void goTo(LyXView & lv_) const;
-       /// the action corresponding to the goTo above
-       int action() const;
-       /// Paragraph ID containing this item
-       int id_;
-       /// nesting depth
-       int depth;
-       ///
-       string str;
-};
+typedef TocBackend::Item TocItem;
+typedef TocBackend::Toc::const_iterator TocIterator;
+typedef TocBackend::Toc Toc;
+typedef TocBackend::TocList TocList;
 
 ///
-typedef std::vector<TocItem> Toc;
+void updateToc(Buffer const &);
+
 ///
-typedef std::map<string, Toc> TocList;
+TocList const & getTocList(Buffer const &);
 
 ///
-TocList const getTocList(Buffer const &);
+Toc const & getToc(Buffer const & buf, std::string const & type);
 
 ///
-std::vector<string> const getTypes(Buffer const &);
+std::vector<std::string> const & getTypes(Buffer const &);
+
+/// Return the first TocItem before the cursor
+TocIterator const getCurrentTocItem(Buffer const &, LCursor const &,
+                                                                         std::string const & type);
 
 ///
-void asciiTocList(string const &, Buffer const &, std::ostream &);
+void asciiTocList(std::string const &, Buffer const &, std::ostream &);
 
 /** Given the cmdName of the TOC param, returns the type used
     by ControlToc::getContents() */
-string const getType(string const & cmdName);
-
-inline
-bool operator==(TocItem const & a, TocItem const & b)
-{
-       return a.id_ == b.id_ && a.str == b.str;
-       // No need to compare depth.
-}
+std::string const getType(std::string const & cmdName);
+
+/** Returns the guiname from a given @c type
+    The localization of the names will be done in the frontends */
+std::string const getGuiName(std::string const & type, Buffer const &);
+
+/// the type of outline operation
+enum OutlineOp {
+       Up, // Move this header with text down
+       Down,   // Move this header with text up
+       In, // Make this header deeper
+       Out // Make this header shallower
+};
 
 
-inline
-bool operator!=(TocItem const & a, TocItem const & b)
-{
-       return !(a == b);
-}
+void outline(OutlineOp, LCursor &);
 
 
 } // namespace toc