]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetIndex.cpp
* src/paragraph_funcs.cpp (breakParagraph): change parameter 'flag' to
[lyx.git] / src / insets / InsetIndex.cpp
index b29978d48abee1141ca48a0f109ffbc7355e7713..1eb62afab1340c54782742d9c57e85741a3b8076 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "DispatchResult.h"
 #include "FuncRequest.h"
+#include "FuncStatus.h"
 #include "gettext.h"
 #include "LaTeXFeatures.h"
 #include "MetricsInfo.h"
@@ -27,37 +28,87 @@ using std::string;
 using std::ostream;
 
 
-InsetIndex::InsetIndex(InsetCommandParams const & p)
-       : InsetCommand(p, "index")
+InsetIndex::InsetIndex(BufferParams const & bp)
+       : InsetCollapsable(bp)
+{
+       setLayout(bp);
+}
+
+
+InsetIndex::InsetIndex(InsetIndex const & in)
+       : InsetCollapsable(in)
 {}
 
 
-docstring const InsetIndex::getScreenLabel(Buffer const &) const
+int InsetIndex::docbook(Buffer const & buf, odocstream & os,
+                       OutputParams const & runparams) const
 {
-       size_t const maxLabelChars = 25;
-
-       docstring label = _("Idx: ") + getParam("name");
-       if (label.size() > maxLabelChars) {
-               label.erase(maxLabelChars - 3);
-               label += "...";
-       }
-       return label;
+       os << "<indexterm><primary>";
+       int const i = InsetText::docbook(buf, os, runparams);
+       os << "</primary></indexterm>";
+       return i;
 }
 
 
-int InsetIndex::docbook(Buffer const &, odocstream & os,
-                       OutputParams const &) const
+Inset::Code InsetIndex::lyxCode() const
 {
-       os << "<indexterm><primary>"
-          << sgml::escapeString(getParam("name"))
-          << "</primary></indexterm>";
-       return 0;
+       return Inset::INDEX_CODE;
 }
 
 
-Inset::Code InsetIndex::lyxCode() const
+Inset * InsetIndex::clone() const
 {
-       return Inset::INDEX_CODE;
+       return new InsetIndex(*this);
+}
+
+
+void InsetIndex::write(Buffer const & buf, std::ostream & os) const
+{
+       os << to_utf8(name()) << "\n";
+       InsetCollapsable::write(buf, os);
+}
+
+
+void InsetIndex::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+       Font tmpfont = mi.base.font;
+       getDrawFont(mi.base.font);
+       mi.base.font.realize(tmpfont);
+       InsetCollapsable::metrics(mi, dim);
+       mi.base.font = tmpfont;
+}
+
+
+void InsetIndex::draw(PainterInfo & pi, int x, int y) const
+{
+       Font tmpfont = pi.base.font;
+       getDrawFont(pi.base.font);
+       pi.base.font.realize(tmpfont);
+       InsetCollapsable::draw(pi, x, y);
+       pi.base.font = tmpfont;
+}
+
+
+void InsetIndex::getDrawFont(Font & font) const
+{
+       font = Font(Font::ALL_INHERIT);
+       font.realize(layout_.font);
+}
+
+
+bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
+       FuncStatus & status) const
+{
+       switch (cmd.action) {
+               // paragraph breaks not allowed
+               case LFUN_BREAK_PARAGRAPH:
+               case LFUN_BREAK_PARAGRAPH_SKIP:
+                       status.enabled(false);
+                       return true;
+
+               default:
+                       return InsetCollapsable::getStatus(cur, cmd, status);
+               }
 }