X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffactory.cpp;h=9ef881d93e24a540e0bbde5ef8498eb73d48d653;hb=5a01424bf0dbb939cbff1c72ecd99359803a4675;hp=f17b91dd49c6a81dc95b94a5225b232e6c3fe382;hpb=f626cfb7a302f08dc828dfc3156838e26b0bbd3e;p=lyx.git diff --git a/src/factory.cpp b/src/factory.cpp index f17b91dd49..9ef881d93e 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -39,6 +39,7 @@ #include "insets/InsetIndex.h" #include "insets/InsetInfo.h" #include "insets/InsetIPA.h" +#include "insets/InsetIPAMacro.h" #include "insets/InsetLabel.h" #include "insets/InsetLine.h" #include "insets/InsetMarginal.h" @@ -51,6 +52,7 @@ #include "insets/InsetPreview.h" #include "insets/InsetRef.h" #include "insets/InsetScript.h" +#include "insets/InsetSeparator.h" #include "insets/InsetSpace.h" #include "insets/InsetTabular.h" #include "insets/InsetTOC.h" @@ -98,6 +100,20 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd) return new InsetNewpage(inp); } + case LFUN_SEPARATOR_INSERT: { + string const name = cmd.getArg(0); + InsetSeparatorParams inp; + if (name.empty() || name == "plain") + inp.kind = InsetSeparatorParams::PLAIN; + else if (name == "parbreak") + inp.kind = InsetSeparatorParams::PARBREAK; + else { + lyxerr << "Wrong argument for LyX function 'separator-insert'." << endl; + break; + } + return new InsetSeparator(inp); + } + case LFUN_FLEX_INSERT: { string s = cmd.getArg(0); return new InsetFlex(buf, s); @@ -131,6 +147,16 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd) return new InsetPhantom(buf, arg); } + case LFUN_IPAMACRO_INSERT: { + string const arg1 = cmd.getArg(0); + string const arg2 = cmd.getArg(1); + if (arg1 != "deco") { + LYXERR0("LFUN_IPAMACRO_INSERT: wrong argument"); + return 0; + } + return new InsetIPADeco(buf, arg2); + } + case LFUN_ERT_INSERT: return new InsetERT(buf); @@ -143,8 +169,14 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd) case LFUN_MARGINALNOTE_INSERT: return new InsetMarginal(buf); - case LFUN_ARGUMENT_INSERT: - return new InsetArgument(buf); + case LFUN_ARGUMENT_INSERT: { + string arg = cmd.getArg(0); + if (arg.empty()) { + LYXERR0("argument-insert needs an argument!"); + return 0; + } + return new InsetArgument(buf, arg); + } case LFUN_FLOAT_INSERT: { string argument = to_utf8(cmd.argument()); @@ -207,8 +239,12 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd) return new InsetTabular(buf, r, c); } - case LFUN_CAPTION_INSERT: - return new InsetCaption(buf); + case LFUN_CAPTION_INSERT: { + string arg = cmd.getArg(0); + if (arg.empty()) + arg = "Standard"; + return new InsetCaption(buf, arg); + } case LFUN_INDEX_PRINT: { InsetCommandParams icp(INDEX_PRINT_CODE); @@ -553,12 +589,15 @@ Inset * readInset(Lexer & lex, Buffer * buf) } inset->setBuffer(*buf); } else { - // FIXME This branch should be made to use inset codes as the preceding - // branch does. Unfortunately, that will take some doing. It requires - // converting the representation of the insets in LyX files so that they - // use the inset names listed in Inset.cpp. Then, as above, the inset names - // can be translated to inset codes using insetCode(). And the insets' - // write() routines should use insetName() rather than hardcoding it. + // FIXME This branch should be made to use inset codes + // as the preceding branch does. Unfortunately, that + // will take some doing. It requires converting the + // representation of the insets in LyX files so that + // they use the inset names listed in Inset.cpp. Then, + // as above, the inset names can be translated to + // inset codes using insetCode(). And the insets' + // write() routines should use insetName() rather than + // hardcoding it. if (tmptok == "Quotes") { inset.reset(new InsetQuotes(buf)); } else if (tmptok == "External") { @@ -603,8 +642,10 @@ Inset * readInset(Lexer & lex, Buffer * buf) inset.reset(new InsetNewpage); } else if (tmptok == "Newline") { inset.reset(new InsetNewline); + } else if (tmptok == "Separator") { + inset.reset(new InsetSeparator); } else if (tmptok == "Argument") { - inset.reset(new InsetArgument(buf)); + inset.reset(new InsetArgument(buf, tmptok)); } else if (tmptok == "Float") { inset.reset(new InsetFloat(buf, string())); } else if (tmptok == "Wrap") { @@ -612,7 +653,9 @@ Inset * readInset(Lexer & lex, Buffer * buf) string tmptok = lex.getString(); inset.reset(new InsetWrap(buf, tmptok)); } else if (tmptok == "Caption") { - inset.reset(new InsetCaption(buf)); + lex.eatLine(); + string s = lex.getString(); + inset.reset(new InsetCaption(buf, s)); } else if (tmptok == "Index") { inset.reset(new InsetIndex(buf, InsetIndexParams())); } else if (tmptok == "FloatList") { @@ -621,6 +664,8 @@ Inset * readInset(Lexer & lex, Buffer * buf) inset.reset(new InsetInfo(buf)); } else if (tmptok == "IPA") { inset.reset(new InsetIPA(buf)); + } else if (tmptok == "IPADeco") { + inset.reset(new InsetIPADeco(buf, tmptok)); } else if (tmptok == "Preview") { inset.reset(new InsetPreview(buf)); } else {