#include "Buffer.h"
#include "BufferParams.h"
-#include "debug.h"
#include "FloatList.h"
#include "FuncRequest.h"
#include "InsetList.h"
#include "Layout.h"
#include "LyXAction.h"
#include "Paragraph.h"
+#include "TextClass.h"
#include "insets/InsetOptArg.h"
#include "support/convert.h"
+#include "support/debug.h"
+#include "support/docstream.h"
-using std::string;
+using namespace std;
namespace lyx {
//
///////////////////////////////////////////////////////////////////////////
-TocItem::TocItem(ParConstIterator const & par_it, int d,
- docstring const & s)
- : par_it_(par_it), depth_(d), str_(s)
+TocItem::TocItem(ParConstIterator const & par_it, int d, docstring const & s)
+ : par_it_(par_it), depth_(d), str_(s)
{
}
//
///////////////////////////////////////////////////////////////////////////
-Toc const & TocBackend::toc(std::string const & type) const
+Toc const & TocBackend::toc(string const & type) const
{
// Is the type already supported?
TocList::const_iterator it = tocs_.find(type);
}
+Toc & TocBackend::toc(string const & type)
+{
+ return tocs_[type];
+}
+
+
void TocBackend::updateItem(ParConstIterator const & par_it)
{
if (toc("tableofcontents").empty()) {
// FIXME: should not happen,
// a call to TocBackend::update() is missing somewhere
- lyxerr << "TocBackend::updateItem called but the TOC is empty!"
- << std::endl;
+ LYXERR0("TocBackend::updateItem called but the TOC is empty!");
return;
}
BufferParams const & bufparams = buffer_->params();
- const int min_toclevel = bufparams.getTextClass().min_toclevel();
+ const int min_toclevel = bufparams.textClass().min_toclevel();
TocIterator toc_item = item("tableofcontents", par_it);
break;
Paragraph const & par =
*static_cast<InsetOptArg&>(inset).paragraphs().begin();
- if (!toc_item->par_it_->getLabelstring().empty())
- tocstring = toc_item->par_it_->getLabelstring() + ' ';
+ if (!toc_item->par_it_->labelString().empty())
+ tocstring = toc_item->par_it_->labelString() + ' ';
tocstring += par.asString(*buffer_, false);
break;
}
}
int const toclevel = toc_item->par_it_->layout()->toclevel;
- if (toclevel != Layout::NOT_IN_TOC
- && toclevel >= min_toclevel
+ if (toclevel != Layout::NOT_IN_TOC && toclevel >= min_toclevel
&& tocstring.empty())
tocstring = toc_item->par_it_->asString(*buffer_, true);
tocs_.clear();
BufferParams const & bufparams = buffer_->params();
- const int min_toclevel = bufparams.getTextClass().min_toclevel();
+ const int min_toclevel = bufparams.textClass().min_toclevel();
Toc & toc = tocs_["tableofcontents"];
ParConstIterator pit = buffer_->par_iterator_begin();
InsetList::const_iterator end = pit->insetList().end();
for (; it != end; ++it) {
Inset & inset = *it->inset;
- inset.addToToc(tocs_, *buffer_, pit);
+ inset.addToToc(*buffer_, pit);
switch (inset.lyxCode()) {
case OPTARG_CODE: {
if (!tocstring.empty())
break;
Paragraph const & par =
*static_cast<InsetOptArg&>(inset).paragraphs().begin();
- if (!pit->getLabelstring().empty())
- tocstring = pit->getLabelstring() + ' ';
+ if (!pit->labelString().empty())
+ tocstring = pit->labelString() + ' ';
tocstring += par.asString(*buffer_, false);
break;
}
}
-TocIterator const TocBackend::item(std::string const & type,
+TocIterator TocBackend::item(string const & type,
ParConstIterator const & par_it) const
{
TocList::const_iterator toclist_it = tocs_.find(type);
--it;
ParConstIterator par_it_text = par_it;
- if (par_it_text.inMathed())
- // It would be better to do
- // par_it_text.backwardInset();
- // but this method does not exist.
+ if (par_it_text.inMathed()) {
+ // We are only interested in text so remove the math CursorSlice.
while (par_it_text.inMathed())
- par_it_text.backwardPos();
+ par_it_text.pop_back();
+ }
for (; it != last; --it) {
// We verify that we don't compare contents of two
TocIterator ccit = cit->second.begin();
TocIterator end = cit->second.end();
for (; ccit != end; ++ccit)
- os << ccit->asString() << '\n';
+ os << ccit->asString() << from_utf8("\n");
}
}