X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetnomencl.C;h=767ff22e53a95735454f65f0fbe72e833836d5bf;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=2e813730f4bf51eaaa049454997452f1151ce76f;hpb=298c01e167924957f669ae852d181c49ed75b25f;p=lyx.git diff --git a/src/insets/insetnomencl.C b/src/insets/insetnomencl.C index 2e813730f4..767ff22e53 100644 --- a/src/insets/insetnomencl.C +++ b/src/insets/insetnomencl.C @@ -11,10 +11,13 @@ #include #include "insetnomencl.h" +#include "insetnote.h" +#include "buffer.h" #include "dispatchresult.h" #include "funcrequest.h" #include "gettext.h" +#include "insetiterator.h" #include "LaTeXFeatures.h" #include "metricsinfo.h" #include "sgml.h" @@ -26,7 +29,8 @@ using std::string; InsetNomencl::InsetNomencl(InsetCommandParams const & p) - : InsetCommand(p, "nomenclature") + : InsetCommand(p, "nomenclature"), + glossary_entry_id(sgml::uniqueID(from_ascii("gloss"))) {} @@ -37,21 +41,29 @@ docstring const InsetNomencl::getScreenLabel(Buffer const &) const int InsetNomencl::docbook(Buffer const &, odocstream & os, - OutputParams const &) const + OutputParams const &) const { - // FIXME: This does not work, because the entry needs to be put - // in the glossary. -#if 0 - os << "" + os << "" << sgml::escapeString(getParam("symbol")) - << "" - << sgml::escapeString(getParam("description")) - << ""; -#endif + << ""; return 0; } +int InsetNomencl::docbookGlossary(odocstream & os) const +{ + os << "\n" + << "" + << sgml::escapeString(getParam("symbol")) + << "\n" + << "" + << sgml::escapeString(getParam("description")) + << "\n" + <<"\n"; + return 4; +} + + void InsetNomencl::validate(LaTeXFeatures & features) const { features.require("nomencl"); @@ -75,12 +87,28 @@ docstring const InsetPrintNomencl::getScreenLabel(Buffer const &) const } -int InsetPrintNomencl::docbook(Buffer const &, odocstream & os, +int InsetPrintNomencl::docbook(Buffer const & buf, odocstream & os, OutputParams const &) const { - // FIXME This does not work, we need to define the entries here. - //os << ""; - return 0; + os << "\n"; + int newlines = 2; + for (InsetIterator it = inset_iterator_begin(buf.inset()); it;) { + if (it->lyxCode() == InsetBase::NOMENCL_CODE) { + newlines += static_cast(*it).docbookGlossary(os); + ++it; + } else if(it->lyxCode() == InsetBase::NOTE_CODE && + static_cast(*it).params().type == InsetNoteParams::Note) { + // Don't output anything nested in note insets + size_t const depth = it.depth(); + ++it; + while (it.depth() > depth) + ++it; + } else { + ++it; + } + } + os << "\n"; + return newlines; }