#include "Buffer.h"
#include "BufferParams.h"
+#include "BufferView.h"
+#include "Cursor.h"
#include "DispatchResult.h"
#include "Floating.h"
#include "FloatList.h"
+#include "Font.h"
#include "FuncRequest.h"
#include "Language.h"
#include "LaTeXFeatures.h"
#include "Lexer.h"
-#include "MetricsInfo.h"
#include "Paragraph.h"
#include "output_xhtml.h"
#include "TextClass.h"
InsetFloatList::InsetFloatList(Buffer * buf)
- : InsetCommand(buf, InsetCommandParams(FLOAT_LIST_CODE), "toc")
+ : InsetCommand(buf, InsetCommandParams(FLOAT_LIST_CODE))
{}
InsetFloatList::InsetFloatList(Buffer * buf, string const & type)
- : InsetCommand(buf, InsetCommandParams(FLOAT_LIST_CODE), "toc")
+ : InsetCommand(buf, InsetCommandParams(FLOAT_LIST_CODE))
{
setParam("type", from_ascii(type));
}
}
+void InsetFloatList::doDispatch(Cursor & cur, FuncRequest & cmd) {
+ switch (cmd.action()) {
+ case LFUN_MOUSE_RELEASE:
+ if (!cur.selection() && cmd.button() == mouse_button::button1) {
+ cur.bv().showDialog("toc", params2string(params()));
+ cur.dispatched();
+ }
+ break;
+
+ default:
+ InsetCommand::doDispatch(cur, cmd);
+ }
+}
+
+
void InsetFloatList::write(ostream & os) const
{
os << "FloatList " << to_ascii(getParam("type")) << "\n";
}
-int InsetFloatList::latex(odocstream & os, OutputParams const &) const
+void InsetFloatList::latex(otexstream & os, OutputParams const &) const
{
FloatList const & floats = buffer().params().documentClass().floats();
FloatList::const_iterator cit = floats[to_ascii(getParam("type"))];
if (cit != floats.end()) {
- os << cit->second.listCommand(buffer().params().language->code());
+ Floating const & fl = cit->second;
+ if (fl.usesFloatPkg()) {
+ docstring const name =
+ buffer().language()->translateLayout(fl.listName());
+ os << "\\listof{" << getParam("type") << "}{"
+ << name << "}\n";
+ } else {
+ if (!fl.listCommand().empty())
+ os << "\\" << from_ascii(fl.listCommand()) << "\n";
+ else
+ os << "%% "
+ << bformat(_("LyX cannot generate a list of %1$s"), getParam("type"))
+ << "\n";
+ }
} else {
+ string const flName = "List of " + to_utf8(getParam("type"));
+ docstring const name = buffer().language()->translateLayout(flName);
os << "%%\\listof{" << getParam("type") << "}{"
- << bformat(_("List of %1$s"), getParam("type"))
- << "}\n";
+ << name << "}\n";
}
- return 1;
}
-int InsetFloatList::plaintext(odocstream & os, OutputParams const &) const
+int InsetFloatList::plaintext(odocstringstream & os,
+ OutputParams const &, size_t max_length) const
{
os << screenLabel() << "\n\n";
- buffer().tocBackend().writePlaintextTocList(to_ascii(getParam("type")), os);
+ buffer().tocBackend().writePlaintextTocList(to_ascii(getParam("type")), os, max_length);
return PLAINTEXT_NEWLINE;
}
-docstring InsetFloatList::xhtml(XHTMLStream &, OutputParams const &) const {
+docstring InsetFloatList::xhtml(XHTMLStream &, OutputParams const & op) const {
FloatList const & floats = buffer().params().documentClass().floats();
FloatList::const_iterator cit = floats[to_ascii(getParam("type"))];
string toctype;
docstring toclabel;
- if (!cit->second.needsFloatPkg()) {
+ // FIXME
+ // Other builtin floats should be handled here. But I'm not sure if that is
+ // even possible yet, since I'm not sure if we have a TOC for such things.
+ // If so, then they should define ListName, as non-builtin floats do, and
+ // then we can use that.
+ // Really, all floats should define that.
+ if (cit->second.isPredefined()) {
// Only two different types allowed here:
string const type = cit->second.floattype();
if (type == "table") {
toctype = "table";
- toclabel = _("List of Tables");
+ toclabel = translateIfPossible(from_ascii("List of Tables"),
+ op.local_font->language()->lang());
} else if (type == "figure") {
toctype = "figure";
- toclabel = _("List of Figures");
+ toclabel = translateIfPossible(from_ascii("List of Figures"),
+ op.local_font->language()->lang());
} else {
LYXERR0("Unknown Builtin Float!");
return docstring();
}
} else {
toctype = to_utf8(getParam("type"));
- toclabel = buffer().B_(cit->second.listName());
+ toclabel = translateIfPossible(from_utf8(cit->second.listName()),
+ op.local_font->language()->lang());
}
// FIXME Do we need to check if it exists? If so, we need a new
<< html::StartTag("a", parattr)
// FIXME XHTML
// There ought to be a simple way to customize this.
- << XHTMLStream::NextRaw() << "⇘"
+ << XHTMLStream::ESCAPE_NONE << ">"
<< html::EndTag("a");
xs << html::EndTag("div");
}