From: Georg Baum Date: Fri, 10 Nov 2006 15:45:42 +0000 (+0000) Subject: fix docbook glossary export, from Ugras and me X-Git-Tag: 1.6.10~11951 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=44ff1604b3c21d90688db32d9d450a9795959ac5;p=features.git fix docbook glossary export, from Ugras and me git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15839 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/insets/insetnomencl.C b/src/insets/insetnomencl.C index 2e813730f4..e183c33685 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") + : glossary_entry_id(sgml::uniqueID(from_ascii("gloss"))), + InsetCommand(p, "nomenclature") {} @@ -36,22 +40,30 @@ docstring const InsetNomencl::getScreenLabel(Buffer const &) const } -int InsetNomencl::docbook(Buffer const &, odocstream & os, - OutputParams const &) const +int InsetNomencl::docbook(Buffer const & buf, odocstream & os, + OutputParams const & params) 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, - OutputParams const &) const +int InsetPrintNomencl::docbook(Buffer const & buf, odocstream & os, + OutputParams const & params) 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; } diff --git a/src/insets/insetnomencl.h b/src/insets/insetnomencl.h index c5cc48a25c..093d199223 100644 --- a/src/insets/insetnomencl.h +++ b/src/insets/insetnomencl.h @@ -38,10 +38,14 @@ public: /// int docbook(Buffer const &, odocstream &, OutputParams const &) const; + /// + int docbookGlossary(odocstream &) const; private: virtual std::auto_ptr doClone() const { return std::auto_ptr(new InsetNomencl(params())); } + /// unique id for this glossary entry for docbook export + docstring glossary_entry_id; };