X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffactory.cpp;h=faa386251c7a4fbf9c34cb1c5f6ddd2ad649a946;hb=2492def7daba4c5e98725bd81bf482122e9e6c6e;hp=681b8e5fbc53b47bbbc74c167605483bdec2a7a1;hpb=17112f655d155870934bf70732c947f807dd8fd6;p=lyx.git diff --git a/src/factory.cpp b/src/factory.cpp index 681b8e5fbc..faa386251c 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -171,20 +171,14 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) case LFUN_WRAP_INSERT: { string const argument = to_utf8(cmd.argument()); - if (argument == "figure") + if (argument == "figure" || argument == "table") return new InsetWrap(params, argument); lyxerr << "Non-existent wrapfig type: " << argument << endl; return 0; } - case LFUN_INDEX_INSERT: { - // Try and generate a valid index entry. - InsetCommandParams icp("index"); - icp["name"] = cmd.argument().empty() ? - bv->cursor().innerText()->getStringToIndex(bv->cursor()) : - cmd.argument(); - return new InsetIndex(icp); - } + case LFUN_INDEX_INSERT: + return new InsetIndex(params); case LFUN_NOMENCL_INSERT: { InsetCommandParams icp("nomenclature"); @@ -216,13 +210,13 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) } case LFUN_INDEX_PRINT: - return new InsetPrintIndex(InsetCommandParams("printindex")); + return new InsetPrintIndex(InsetCommandParams("index_print")); case LFUN_NOMENCL_PRINT: - return new InsetPrintNomencl(InsetCommandParams("printnomenclature")); + return new InsetPrintNomencl(InsetCommandParams("nomencl_print")); case LFUN_TOC_INSERT: - return new InsetTOC(InsetCommandParams("tableofcontents")); + return new InsetTOC(InsetCommandParams("toc")); case LFUN_ENVIRONMENT_INSERT: return new InsetEnvironment(params, cmd.argument()); @@ -251,7 +245,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) return new InsetBibtex(icp); } else if (name == "citation") { - InsetCommandParams icp("cite"); + InsetCommandParams icp("citation"); InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp); return new InsetCitation(icp); @@ -290,10 +284,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) return new InsetInclude(iip); } else if (name == "index") { - InsetCommandParams icp(name); - InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), - icp); - return new InsetIndex(icp); + return new InsetIndex(params); } else if (name == "nomenclature") { InsetCommandParams icp(name); @@ -314,7 +305,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) return new InsetRef(icp, bv->buffer()); } else if (name == "toc") { - InsetCommandParams icp("tableofcontents"); + InsetCommandParams icp("toc"); InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp); return new InsetTOC(icp); @@ -393,63 +384,47 @@ Inset * readInset(Lexer & lex, Buffer const & buf) string tmptok = lex.getString(); // test the different insets - if (tmptok == "LatexCommand") { + if (tmptok == "CommandInset") { lex.next(); - string const cmdName = lex.getString(); - lex.pushToken(cmdName); - - InsetCommandParams inscmd(cmdName); + string const insetType = lex.getString(); + lex.pushToken(insetType); + + //FIXME + //Inset::Code const code = Inset::translate(insetType); + //if (code == Inset::NO_CODE) { choke as below; } + //InsetCommandParams inscmd(); + InsetCommandParams inscmd(insetType); inscmd.read(lex); - // This strange command allows LyX to recognize "natbib" style - // citations: citet, citep, Citet etc. - // FIXME: We already have partial support for \\fullcite and - // the various \\footcite commands. We should increase the - // file format number and read these commands here, too. - // Then we should use is_possible_cite_command() in - // src/frontends/controllers/frontend_helpers.cpp to test for valid cite - // commands. - if (compare_ascii_no_case(cmdName.substr(0,4), "cite") == 0) { + if (insetType == "citation") { inset.reset(new InsetCitation(inscmd)); - } else if (cmdName == "bibitem") { + } else if (insetType == "bibitem") { inset.reset(new InsetBibitem(inscmd)); - } else if (cmdName == "bibtex") { + } else if (insetType == "bibtex") { inset.reset(new InsetBibtex(inscmd)); - } else if (cmdName == "index") { - inset.reset(new InsetIndex(inscmd)); - } else if (cmdName == "nomenclature") { + } else if (insetType == "index") { + inset.reset(new InsetIndex(buf.params())); + } else if (insetType == "nomenclature") { inset.reset(new InsetNomencl(inscmd)); - } else if (cmdName == "include") { + } else if (insetType == "include") { inset.reset(new InsetInclude(inscmd)); - } else if (cmdName == "label") { + } else if (insetType == "label") { inset.reset(new InsetLabel(inscmd)); - } else if (cmdName == "url" - || cmdName == "htmlurl") { + } else if (insetType == "url") { inset.reset(new InsetUrl(inscmd)); - } else if (cmdName == "ref" - || cmdName == "eqref" - || cmdName == "pageref" - || cmdName == "vref" - || cmdName == "vpageref" - || cmdName == "prettyref") { + } else if (insetType == "ref") { if (!inscmd["name"].empty() || !inscmd["reference"].empty()) { inset.reset(new InsetRef(inscmd, buf)); } - } else if (cmdName == "tableofcontents") { + } else if (insetType == "toc") { inset.reset(new InsetTOC(inscmd)); - } else if (cmdName == "listofalgorithms") { - inset.reset(new InsetFloatList("algorithm")); - } else if (cmdName == "listoffigures") { - inset.reset(new InsetFloatList("figure")); - } else if (cmdName == "listoftables") { - inset.reset(new InsetFloatList("table")); - } else if (cmdName == "printindex") { + } else if (insetType == "index_print") { inset.reset(new InsetPrintIndex(inscmd)); - } else if (cmdName == "printnomenclature") { + } else if (insetType == "nomencl_print") { inset.reset(new InsetPrintNomencl(inscmd)); } else { - lyxerr << "unknown CommandInset '" << cmdName + lyxerr << "unknown CommandInset '" << insetType << "'" << std::endl; while (lex.isOK() && lex.getString() != "\\end_inset") lex.next(); @@ -518,6 +493,8 @@ Inset * readInset(Lexer & lex, Buffer const & buf) #endif } else if (tmptok == "Caption") { inset.reset(new InsetCaption(buf.params())); + } else if (tmptok == "Index") { + inset.reset(new InsetIndex(buf.params())); } else if (tmptok == "FloatList") { inset.reset(new InsetFloatList); } else {