X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffactory.cpp;h=6d41a5809f1ce11adfea2bdbce6c58cc63d7a677;hb=9337d73f1f9a6d4dae2e239e9f679a7452660c40;hp=39a6b15c8fc284e37ffe387fc3c6d8564f329684;hpb=e05e2b6b19ce30eb2b21616d00e319b300c5c586;p=lyx.git diff --git a/src/factory.cpp b/src/factory.cpp index 39a6b15c8f..6d41a5809f 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -102,44 +102,44 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) case LFUN_FLEX_INSERT: { string s = cmd.getArg(0); - return new InsetFlex(params, params.textClassIndex(), s); + return new InsetFlex(buf, buf.params().documentClassPtr(), s); } case LFUN_NOTE_INSERT: { string arg = cmd.getArg(0); if (arg.empty()) arg = "Note"; - return new InsetNote(params, arg); + return new InsetNote(buf, arg); } case LFUN_BOX_INSERT: { string arg = cmd.getArg(0); if (arg.empty()) arg = "Boxed"; - return new InsetBox(params, arg); + return new InsetBox(buf, arg); } case LFUN_BRANCH_INSERT: { docstring arg = cmd.argument(); if (arg.empty()) arg = from_ascii("none"); - return new InsetBranch(params, InsetBranchParams(arg)); + return new InsetBranch(buf, InsetBranchParams(arg)); } case LFUN_ERT_INSERT: - return new InsetERT(params); + return new InsetERT(buf); case LFUN_LISTING_INSERT: - return new InsetListings(params); + return new InsetListings(buf); case LFUN_FOOTNOTE_INSERT: - return new InsetFoot(params); + return new InsetFoot(buf); case LFUN_MARGINALNOTE_INSERT: - return new InsetMarginal(params); + return new InsetMarginal(buf); case LFUN_OPTIONAL_INSERT: - return new InsetOptArg(params); + return new InsetOptArg(buf); case LFUN_BIBITEM_INSERT: return new InsetBibitem(InsetCommandParams(BIBITEM_CODE)); @@ -147,16 +147,16 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) case LFUN_FLOAT_INSERT: { // check if the float type exists string const argument = to_utf8(cmd.argument()); - if (params.textClass().floats().typeExist(argument)) - return new InsetFloat(params, argument); + if (buf.params().documentClass().floats().typeExist(argument)) + return new InsetFloat(buf, argument); lyxerr << "Non-existent float type: " << argument << endl; } case LFUN_FLOAT_WIDE_INSERT: { // check if the float type exists string const argument = to_utf8(cmd.argument()); - if (params.textClass().floats().typeExist(argument)) { - auto_ptr p(new InsetFloat(params, argument)); + if (params.documentClass().floats().typeExist(argument)) { + auto_ptr p(new InsetFloat(buf, argument)); p->wide(true, params); return p.release(); } @@ -167,13 +167,13 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) case LFUN_WRAP_INSERT: { string const argument = to_utf8(cmd.argument()); if (argument == "figure" || argument == "table") - return new InsetWrap(params, argument); + return new InsetWrap(buf, argument); lyxerr << "Non-existent wrapfig type: " << argument << endl; return 0; } case LFUN_INDEX_INSERT: - return new InsetIndex(params); + return new InsetIndex(buf); case LFUN_NOMENCL_INSERT: { InsetCommandParams icp(NOMENCL_CODE); @@ -194,13 +194,8 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) return new InsetTabular(buf, r, c); } - case LFUN_CAPTION_INSERT: { - auto_ptr inset(new InsetCaption(params)); - inset->setAutoBreakRows(true); - inset->setDrawFrame(true); - inset->setFrameColor(Color_captionframe); - return inset.release(); - } + case LFUN_CAPTION_INSERT: + return new InsetCaption(buf); case LFUN_INDEX_PRINT: return new InsetPrintIndex(InsetCommandParams(INDEX_PRINT_CODE)); @@ -212,14 +207,10 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) return new InsetTOC(InsetCommandParams(TOC_CODE)); case LFUN_ENVIRONMENT_INSERT: - return new InsetEnvironment(params, cmd.argument()); + return new InsetEnvironment(buf, cmd.argument()); case LFUN_INFO_INSERT: - return new InsetInfo(params, to_utf8(cmd.argument())); -#if 0 - case LFUN_THEOREM_INSERT: - return new InsetTheorem; -#endif + return new InsetInfo(buf, to_utf8(cmd.argument())); case LFUN_INSET_INSERT: { string const name = cmd.getArg(0); @@ -250,20 +241,20 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) case ERT_CODE: { InsetCollapsable::CollapseStatus st; InsetERTMailer::string2params(to_utf8(cmd.argument()), st); - return new InsetERT(params, st); + return new InsetERT(buf, st); } case LISTINGS_CODE: { InsetListingsParams par; InsetListingsMailer::string2params(to_utf8(cmd.argument()), par); - return new InsetListings(params, par); + return new InsetListings(buf, par); } case EXTERNAL_CODE: { InsetExternalParams iep; InsetExternalMailer::string2params(to_utf8(cmd.argument()), buf, iep); auto_ptr inset(new InsetExternal); - inset->setParams(iep, buf); + inset->setParams(iep); return inset.release(); } @@ -288,7 +279,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) } case INDEX_CODE: - return new InsetIndex(params); + return new InsetIndex(buf); case NOMENCL_CODE: { InsetCommandParams icp(code); @@ -305,7 +296,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd) case REF_CODE: { InsetCommandParams icp(code); InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp); - return new InsetRef(icp, buf); + return new InsetRef(buf, icp); } case TOC_CODE: { @@ -376,7 +367,7 @@ Inset * createInset(Buffer & buf, FuncRequest const & cmd) { Inset * inset = createInsetHelper(buf, cmd); if (inset) - inset->setBuffer(&buf); + inset->setBuffer(buf); return inset; } @@ -446,7 +437,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf) break; case REF_CODE: if (!inscmd["name"].empty() || !inscmd["reference"].empty()) - inset.reset(new InsetRef(inscmd, buf)); + inset.reset(new InsetRef(buf, inscmd)); break; case TOC_CODE: inset.reset(new InsetTOC(inscmd)); @@ -459,6 +450,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf) lex.next(); return 0; } + inset->setBuffer(const_cast(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 @@ -477,58 +469,58 @@ Inset * readInset(Lexer & lex, Buffer const & buf) } else if (tmptok == "Graphics") { inset.reset(new InsetGraphics); } else if (tmptok == "Note") { - inset.reset(new InsetNote(buf.params(), tmptok)); + inset.reset(new InsetNote(buf, tmptok)); } else if (tmptok == "Box") { - inset.reset(new InsetBox(buf.params(), tmptok)); + inset.reset(new InsetBox(buf, tmptok)); } else if (tmptok == "Flex") { lex.next(); string s = lex.getString(); - inset.reset(new InsetFlex(buf.params(), - buf.params().textClassIndex(), s)); + inset.reset(new InsetFlex(buf, + buf.params().documentClassPtr(), s)); } else if (tmptok == "Branch") { - inset.reset(new InsetBranch(buf.params(), + inset.reset(new InsetBranch(buf, InsetBranchParams())); } else if (tmptok == "Environment") { lex.next(); - inset.reset(new InsetEnvironment(buf.params(), lex.getDocString())); + inset.reset(new InsetEnvironment(buf, lex.getDocString())); } else if (tmptok == "ERT") { - inset.reset(new InsetERT(buf.params())); + inset.reset(new InsetERT(buf)); } else if (tmptok == "listings") { - inset.reset(new InsetListings(buf.params())); + inset.reset(new InsetListings(buf)); } else if (tmptok == "InsetSpace") { inset.reset(new InsetSpace); } else if (tmptok == "Tabular") { inset.reset(new InsetTabular(buf)); } else if (tmptok == "Text") { - inset.reset(new InsetText(buf.params())); + inset.reset(new InsetText(buf)); } else if (tmptok == "VSpace") { inset.reset(new InsetVSpace); } else if (tmptok == "Foot") { - inset.reset(new InsetFoot(buf.params())); + inset.reset(new InsetFoot(buf)); } else if (tmptok == "Marginal") { - inset.reset(new InsetMarginal(buf.params())); + inset.reset(new InsetMarginal(buf)); } else if (tmptok == "OptArg") { - inset.reset(new InsetOptArg(buf.params())); + inset.reset(new InsetOptArg(buf)); } else if (tmptok == "Float") { lex.next(); string tmptok = lex.getString(); - inset.reset(new InsetFloat(buf.params(), tmptok)); + inset.reset(new InsetFloat(buf, tmptok)); } else if (tmptok == "Wrap") { lex.next(); string tmptok = lex.getString(); - inset.reset(new InsetWrap(buf.params(), tmptok)); + inset.reset(new InsetWrap(buf, tmptok)); #if 0 } else if (tmptok == "Theorem") { inset.reset(new InsetList); #endif } else if (tmptok == "Caption") { - inset.reset(new InsetCaption(buf.params())); + inset.reset(new InsetCaption(buf)); } else if (tmptok == "Index") { - inset.reset(new InsetIndex(buf.params())); + inset.reset(new InsetIndex(buf)); } else if (tmptok == "FloatList") { inset.reset(new InsetFloatList); } else if (tmptok == "Info") { - inset.reset(new InsetInfo(buf.params())); + inset.reset(new InsetInfo(buf)); } else { lyxerr << "unknown Inset type '" << tmptok << "'" << endl; @@ -537,9 +529,14 @@ Inset * readInset(Lexer & lex, Buffer const & buf) return 0; } - inset->read(buf, lex); + // Set the buffer reference for proper parsing of some insets + // (InsetCollapsable for example) + inset->setBuffer(const_cast(buf)); + inset->read(lex); + // Set again the buffer for insets that are created inside this inset + // (InsetMathHull for example). + inset->setBuffer(const_cast(buf)); } - return inset.release(); }