X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetTOC.cpp;h=76a8dc9d1bfbe3f0b240a7908f853a1fb1d70d32;hb=239b9919ffe28338d789e6dc9122228f77ab77a7;hp=700680d1a5ea27b351f4e84c9419d063622bbe1c;hpb=597fdbf22f09283c2b8c55b52489b14d0ea5a1bf;p=lyx.git diff --git a/src/insets/InsetTOC.cpp b/src/insets/InsetTOC.cpp index 700680d1a5..76a8dc9d1b 100644 --- a/src/insets/InsetTOC.cpp +++ b/src/insets/InsetTOC.cpp @@ -128,8 +128,28 @@ int InsetTOC::docbook(odocstream & os, OutputParams const &) const } -void InsetTOC::makeTOCWithDepth(XHTMLStream xs, - Toc toc, OutputParams const & op) const +void InsetTOC::makeTOCEntry(XHTMLStream & xs, + Paragraph const & par, OutputParams const & op) const +{ + string const attr = "href='#" + par.magicLabel() + "' class='tocentry'"; + xs << html::StartTag("a", attr); + + // First the label, if there is one + docstring const & label = par.params().labelString(); + if (!label.empty()) + xs << label << " "; + // Now the content of the TOC entry, taken from the paragraph itself + OutputParams ours = op; + ours.for_toc = true; + Font const dummy; + par.simpleLyXHTMLOnePar(buffer(), xs, ours, dummy); + + xs << html::EndTag("a") << html::CR(); +} + + +void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, + Toc const & toc, OutputParams const & op) const { Toc::const_iterator it = toc.begin(); Toc::const_iterator const en = toc.end(); @@ -179,38 +199,15 @@ void InsetTOC::makeTOCWithDepth(XHTMLStream xs, // Now output TOC info for this entry Paragraph const & par = it->dit().innerParagraph(); - - string const attr = "href='#" + par.magicLabel() + "' class='tocentry'"; - xs << html::StartTag("a", attr); - - // First the label, if there is one - docstring const & label = par.params().labelString(); - if (!label.empty()) - xs << label << " "; - // Now the content of the TOC entry, taken from the paragraph itself - OutputParams ours = op; - ours.for_toc = true; - Font const dummy; - par.simpleLyXHTMLOnePar(buffer(), xs, ours, dummy); - - xs << html::EndTag("a") << " "; - - // Now a link to that paragraph - string const parattr = "href='#" + par.magicLabel() + "' class='tocarrow'"; - xs << html::StartTag("a", parattr); - // FIXME XHTML - // There ought to be a simple way to customize this. - // Maybe if we had an InsetLayout for TOC... - xs << XHTMLStream::ESCAPE_NONE << ">"; - xs << html::EndTag("a"); + makeTOCEntry(xs, par, op); } for (int i = lastdepth; i > 0; --i) xs << html::EndTag("div") << html::CR(); } -void InsetTOC::makeTOCNoDepth(XHTMLStream xs, - Toc toc, const OutputParams & op) const +void InsetTOC::makeTOCNoDepth(XHTMLStream & xs, + Toc const & toc, const OutputParams & op) const { Toc::const_iterator it = toc.begin(); Toc::const_iterator const en = toc.end(); @@ -220,32 +217,11 @@ void InsetTOC::makeTOCNoDepth(XHTMLStream xs, if (!it->isOutput()) continue; - xs << html::StartTag("div", "class='lyxtop-1'") << html::CR(); + xs << html::StartTag("div", "class='lyxtoc-flat'") << html::CR(); Paragraph const & par = it->dit().innerParagraph(); - string const attr = "href='#" + par.magicLabel() + "' class='tocentry'"; - xs << html::StartTag("a", attr); - - // First the label, if there is one - docstring const & label = par.params().labelString(); - if (!label.empty()) - xs << label << " "; - // Now the content of the TOC entry, taken from the paragraph itself - OutputParams ours = op; - ours.for_toc = true; - Font const dummy; - par.simpleLyXHTMLOnePar(buffer(), xs, ours, dummy); - - xs << html::EndTag("a") << " "; - - // Now a link to that paragraph - string const parattr = "href='#" + par.magicLabel() + "' class='tocarrow'"; - xs << html::StartTag("a", parattr); - // FIXME XHTML - // There ought to be a simple way to customize this. - // Maybe if we had an InsetLayout for TOC... - xs << XHTMLStream::ESCAPE_NONE << ">"; - xs << html::EndTag("a"); + makeTOCEntry(xs, par, op); + xs << html::EndTag("div"); } } @@ -256,17 +232,13 @@ docstring InsetTOC::xhtml(XHTMLStream &, OutputParams const & op) const string const & command = getCmdName(); if (command != "tableofcontents" && command != "lstlistoflistings") { LYXERR0("TOC type " << command << " not yet implemented."); - LASSERT(false, /* */); - return docstring(); + LASSERT(false, return docstring()); } - // with lists of listings, at least, there is no depth - // to worry about. so the code can be simpler. - bool const use_depth = (command == "tableofcontents"); - - Layout const & lay = buffer().params().documentClass().htmlTOCLayout(); - string const & tocclass = lay.defaultCSSClass(); - string const tocattr = "class='tochead " + tocclass + "'"; + shared_ptr toc = + buffer().masterBuffer()->tocBackend().toc(cmd2type(command)); + if (toc->empty()) + return docstring(); // we'll use our own stream, because we are going to defer everything. // that's how we deal with the fact that we're probably inside a standard @@ -274,23 +246,28 @@ docstring InsetTOC::xhtml(XHTMLStream &, OutputParams const & op) const odocstringstream ods; XHTMLStream xs(ods); - Toc const & toc = buffer().tocBackend().toc(cmd2type(command)); - if (toc.empty()) - return docstring(); - xs << html::StartTag("div", "class='toc'"); // Title of TOC + InsetLayout const & il = getLayout(); + string const & tag = il.htmltag(); docstring title = screenLabel(); - xs << html::StartTag("div", tocattr) + Layout const & lay = buffer().params().documentClass().htmlTOCLayout(); + string const & tocclass = lay.defaultCSSClass(); + string const tocattr = "class='tochead " + tocclass + "'"; + xs << html::StartTag(tag, tocattr) << title - << html::EndTag("div"); + << html::EndTag(tag); + + // with lists of listings, at least, there is no depth + // to worry about. so the code can be simpler. + bool const use_depth = (command == "tableofcontents"); // Output of TOC if (use_depth) - makeTOCWithDepth(xs, toc, op); + makeTOCWithDepth(xs, *toc, op); else - makeTOCNoDepth(xs, toc, op); + makeTOCNoDepth(xs, *toc, op); xs << html::EndTag("div") << html::CR(); return ods.str();