lyx_mirror/src/toc.h
Abdelrazak Younes fc57e5e4ad Two ways toc navigation:
* Toc.[Ch]: new function getCurrentTocItem()
* ControlToc.[Ch]: new function getCurrentTocItem()
* QToc.[Ch]: new function getCurrentIndex()
* QTocDialog.C
  - QTocDialog::update() calls QToc::getCurrentIndex()



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13695 a592a061-630c-0410-9148-cb99ea01b6c8
2006-04-19 14:48:22 +00:00

110 lines
2.2 KiB
C++

// -*- C++ -*-
/**
* \file toc.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Jean-Marc Lasgouttes
* \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 <map>
#include <iosfwd>
#include <vector>
#include <string>
#include "pariterator.h"
class Buffer;
class LyXView;
class Paragraph;
class FuncRequest;
class LCursor;
namespace lyx {
namespace toc {
///
class TocItem {
public:
TocItem(int par_id, int d, std::string const & s)
: id_(par_id), depth(d), str(s) {}
///
std::string const asString() const;
/// set cursor in LyXView to this TocItem
void goTo(LyXView & lv_) const;
/// the action corresponding to the goTo above
FuncRequest action() const;
/// Paragraph ID containing this item
int id_;
/// nesting depth
int depth;
///
std::string str;
};
///
typedef std::vector<TocItem> Toc;
///
typedef std::map<std::string, Toc> TocList;
///
TocList const getTocList(Buffer const &);
///
std::vector<std::string> const getTypes(Buffer const &);
/// Return the first TocItem before the cursor
TocItem const getCurrentTocItem(Buffer const &, LCursor const &,
std::string const & type);
///
void asciiTocList(std::string const &, Buffer const &, std::ostream &);
/** Given the cmdName of the TOC param, returns the type used
by ControlToc::getContents() */
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 &);
inline
bool operator==(TocItem const & a, TocItem const & b)
{
return a.id_ == b.id_ && a.str == b.str;
// No need to compare depth.
}
inline
bool operator!=(TocItem const & a, TocItem const & b)
{
return !(a == b);
}
/// 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
};
void outline(OutlineOp, Buffer *, pit_type &);
} // namespace toc
} // namespace lyx
#endif // CONTROLTOC_H