X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettoc.C;h=c93c62e26acb11e63787d4aa6b65eab0022a139d;hb=4a5b7a5952ad2381fcdf4830511293e184c7c5a1;hp=27f94452fdc8df54480e56fbb4f49e0e338dad2e;hpb=adaef99e60e28eba8c413a3472cc71e234718af0;p=lyx.git diff --git a/src/insets/insettoc.C b/src/insets/insettoc.C index 27f94452fd..c93c62e26a 100644 --- a/src/insets/insettoc.C +++ b/src/insets/insettoc.C @@ -10,55 +10,79 @@ #include "LyXView.h" #include "frontends/Dialogs.h" #include "debug.h" +#include "buffer.h" + +using std::vector; using std::ostream; -string const InsetTOC::getScreenLabel() const +string const InsetTOC::getScreenLabel(Buffer const *) const { - string cmdname( getCmdName() ); - if (cmdname == "tableofcontents" ) + string const cmdname(getCmdName()); + + if (cmdname == "tableofcontents") return _("Table of Contents"); - else if (cmdname == "listofalgorithms" ) - return _("List of Algorithms"); - else if (cmdname == "listoffigures" ) - return _("List of Figures"); - else - return _("List of Tables"); + return _("Unknown toc list"); } -Inset::Code InsetTOC::LyxCode() const +Inset::Code InsetTOC::lyxCode() const { - string cmdname( getCmdName() ); - if (cmdname == "tableofcontents" ) + string const cmdname(getCmdName()); + if (cmdname == "tableofcontents") return Inset::TOC_CODE; - else if (cmdname == "listofalgorithms" ) - return Inset::LOA_CODE; - else if (cmdname == "listoffigures" ) - return Inset::LOF_CODE; - else - return Inset::LOT_CODE; + return Inset::NO_CODE; +} + + +void InsetTOC::edit(BufferView * bv, int, int, unsigned int) +{ + bv->owner()->getDialogs()->showTOC(this); +} + + +void InsetTOC::edit(BufferView * bv, bool) +{ + edit(bv, 0, 0, 0); } -void InsetTOC::Edit(BufferView * bv, int, int, unsigned int) +int InsetTOC::ascii(Buffer const * buffer, ostream & os, int) const { - bv->owner()->getDialogs()->showTOC( this ); + os << getScreenLabel(buffer) << "\n\n"; + + string type; + string const cmdname = getCmdName(); + if (cmdname == "tableofcontents") + type = "TOC"; + Buffer::Lists const toc_list = buffer->getLists(); + Buffer::Lists::const_iterator cit = + toc_list.find(type); + if (cit != toc_list.end()) { + Buffer::SingleList::const_iterator ccit = cit->second.begin(); + Buffer::SingleList::const_iterator end = cit->second.end(); + for (; ccit != end; ++ccit) + os << string(4 * ccit->depth, ' ') + << ccit->str << "\n"; + } + + os << "\n"; + return 0; } -int InsetTOC::Linuxdoc(Buffer const *, ostream & os) const +int InsetTOC::linuxdoc(Buffer const *, ostream & os) const { - if (getCmdName() == "tableofcontents" ) + if (getCmdName() == "tableofcontents") os << ""; return 0; } -int InsetTOC::DocBook(Buffer const *, ostream & os) const +int InsetTOC::docbook(Buffer const *, ostream & os) const { - if (getCmdName() == "tableofcontents" ) + if (getCmdName() == "tableofcontents") os << ""; return 0; }