Revert faulty floatlist fix (revision 15376) and fix reading of floatlists

correctly.
The floatlist type is now stored in the InsetCommand parameter "type".
Formerly it was stored in the command name, which is not possible anymore
because all command names need to be known.
The file format of .lyx files is still the same.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15489 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Georg Baum 2006-10-22 18:24:41 +00:00
parent 8f261b1529
commit 91d244160d
2 changed files with 30 additions and 15 deletions

View File

@ -45,14 +45,14 @@ InsetFloatList::InsetFloatList()
InsetFloatList::InsetFloatList(string const & type) InsetFloatList::InsetFloatList(string const & type)
: InsetCommand(InsetCommandParams("floatlist"), "toc") : InsetCommand(InsetCommandParams("floatlist"), "toc")
{ {
setCmdName(type); setParam("type", from_ascii(type));
} }
docstring const InsetFloatList::getScreenLabel(Buffer const & buf) const docstring const InsetFloatList::getScreenLabel(Buffer const & buf) const
{ {
FloatList const & floats = buf.params().getLyXTextClass().floats(); FloatList const & floats = buf.params().getLyXTextClass().floats();
FloatList::const_iterator it = floats[getCmdName()]; FloatList::const_iterator it = floats[to_ascii(getParam("type"))];
if (it != floats.end()) if (it != floats.end())
return buf.B_(it->second.listName()); return buf.B_(it->second.listName());
else else
@ -68,16 +68,33 @@ InsetBase::Code InsetFloatList::lyxCode() const
void InsetFloatList::write(Buffer const &, ostream & os) const void InsetFloatList::write(Buffer const &, ostream & os) const
{ {
os << "FloatList " << getCmdName() << "\n"; os << "FloatList " << to_ascii(getParam("type")) << "\n";
} }
void InsetFloatList::read(Buffer const & buf, LyXLex & lex) void InsetFloatList::read(Buffer const & buf, LyXLex & lex)
{ {
InsetCommand::read(buf, lex); FloatList const & floats = buf.params().getLyXTextClass().floats();
lyxerr[Debug::INSETS] << "FloatList::float_type: " << getCmdName() << endl; string token;
if (!buf.params().getLyXTextClass().floats().typeExist(getCmdName()))
lex.printError("InsetFloatList: Unknown float type: `$$Token'"); if (lex.eatLine()) {
setParam("type", lex.getDocString());
lyxerr[Debug::INSETS] << "FloatList::float_type: "
<< to_ascii(getParam("type")) << endl;
if (!floats.typeExist(to_ascii(getParam("type"))))
lex.printError("InsetFloatList: Unknown float type: `$$Token'");
} else
lex.printError("InsetFloatList: Parse error: `$$Token'");
while (lex.isOK()) {
lex.next();
token = lex.getString();
if (token == "\\end_inset")
break;
}
if (token != "\\end_inset") {
lex.printError("Missing \\end_inset at this point. "
"Read: `$$Token'");
}
} }
@ -85,7 +102,7 @@ int InsetFloatList::latex(Buffer const & buf, odocstream & os,
OutputParams const &) const OutputParams const &) const
{ {
FloatList const & floats = buf.params().getLyXTextClass().floats(); FloatList const & floats = buf.params().getLyXTextClass().floats();
FloatList::const_iterator cit = floats[getCmdName()]; FloatList::const_iterator cit = floats[to_ascii(getParam("type"))];
if (cit != floats.end()) { if (cit != floats.end()) {
if (cit->second.builtin()) { if (cit->second.builtin()) {
@ -99,13 +116,11 @@ int InsetFloatList::latex(Buffer const & buf, odocstream & os,
os << "%% unknown builtin float\n"; os << "%% unknown builtin float\n";
} }
} else { } else {
// FIXME UNICODE os << "\\listof{" << getParam("type") << "}{"
os << "\\listof{" << from_ascii(getCmdName()) << "}{"
<< buf.B_(cit->second.listName()) << "}\n"; << buf.B_(cit->second.listName()) << "}\n";
} }
} else { } else {
// FIXME UNICODE os << "%%\\listof{" << getParam("type") << "}{"
os << "%%\\listof{" << from_ascii(getCmdName()) << "}{"
<< bformat(_("List of %1$s"), from_utf8(cit->second.name())) << bformat(_("List of %1$s"), from_utf8(cit->second.name()))
<< "}\n"; << "}\n";
} }
@ -118,7 +133,7 @@ int InsetFloatList::plaintext(Buffer const & buffer, odocstream & os,
{ {
os << getScreenLabel(buffer) << "\n\n"; os << getScreenLabel(buffer) << "\n\n";
toc::asciiTocList(getCmdName(), buffer, os); toc::asciiTocList(to_ascii(getParam("type")), buffer, os);
os << "\n"; os << "\n";
return 0; return 0;
@ -127,7 +142,7 @@ int InsetFloatList::plaintext(Buffer const & buffer, odocstream & os,
void InsetFloatList::validate(LaTeXFeatures & features) const void InsetFloatList::validate(LaTeXFeatures & features) const
{ {
features.useFloat(getCmdName()); features.useFloat(to_ascii(getParam("type")));
} }

View File

@ -52,7 +52,7 @@ public:
private: private:
virtual std::auto_ptr<InsetBase> doClone() const virtual std::auto_ptr<InsetBase> doClone() const
{ {
return std::auto_ptr<InsetBase>(new InsetFloatList(getCmdName())); return std::auto_ptr<InsetBase>(new InsetFloatList(to_ascii(getParam("type"))));
} }
}; };