X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffactory.C;h=03a285a3c3e0e007b6eea7644f1f28878602148c;hb=37e82a546392d43f787826b85481a11f2a27af15;hp=747fc7a5897ba2b85ac26b88280c94690b4dbe66;hpb=c2d77773419b02a704ca99a1a52dbe7bbb6c71f8;p=lyx.git diff --git a/src/factory.C b/src/factory.C index 747fc7a589..03a285a3c3 100644 --- a/src/factory.C +++ b/src/factory.C @@ -40,7 +40,6 @@ #include "insets/insetlabel.h" #include "insets/insetline.h" #include "insets/insetmarginal.h" -#include "insets/insetminipage.h" #include "insets/insetnote.h" #include "insets/insetbox.h" #include "insets/insetbranch.h" @@ -53,16 +52,19 @@ #include "insets/inseturl.h" #include "insets/insetvspace.h" #include "insets/insetwrap.h" -#include "mathed/formulamacro.h" -#include "mathed/formula.h" + +#include "mathed/math_macrotemplate.h" +#include "mathed/math_hullinset.h" #include "frontends/Dialogs.h" #include "frontends/LyXView.h" + #include "support/lstrings.h" -#include "support/std_sstream.h" #include +#include + using lyx::support::compare_ascii_no_case; using std::auto_ptr; @@ -70,9 +72,8 @@ using std::endl; using std::string; -InsetOld * createInset(FuncRequest const & cmd) +InsetBase * createInset(BufferView * bv, FuncRequest const & cmd) { - BufferView * bv = cmd.view(); BufferParams const & params = bv->buffer()->params(); switch (cmd.action) { @@ -85,9 +86,6 @@ InsetOld * createInset(FuncRequest const & cmd) case LFUN_INSERT_PAGEBREAK: return new InsetPagebreak; - case LFUN_INSET_MINIPAGE: - return new InsetMinipage(params); - case LFUN_INSERT_CHARSTYLE: { string s = cmd.getArg(0); CharStyles::iterator found_cs = params.getLyXTextClass().charstyle(s); @@ -112,7 +110,7 @@ InsetOld * createInset(FuncRequest const & cmd) string arg = cmd.getArg(0); if (arg.empty()) arg = "none"; - return new InsetBranch(params, arg); + return new InsetBranch(params, InsetBranchParams(arg)); } case LFUN_INSET_ERT: @@ -157,7 +155,7 @@ InsetOld * createInset(FuncRequest const & cmd) // Try and generate a valid index entry. InsetCommandParams icp("index"); string const contents = cmd.argument.empty() ? - bv->getLyXText()->getStringToIndex() : + bv->getLyXText()->getStringToIndex(bv->cursor()) : cmd.argument; icp.setContents(contents); @@ -167,7 +165,7 @@ InsetOld * createInset(FuncRequest const & cmd) if (icp.getContents().empty()) { lv->getDialogs().show("index", data, 0); } else { - lv->dispatch(FuncRequest(bv, LFUN_INSET_APPLY, data)); + lv->dispatch(FuncRequest(LFUN_INSET_APPLY, data)); } return 0; } @@ -184,16 +182,17 @@ InsetOld * createInset(FuncRequest const & cmd) bv->owner()->getDialogs().show("tabularcreate"); return 0; - case LFUN_INSET_CAPTION: - if (!bv->innerInset()) { - auto_ptr inset(new InsetCaption(params)); - inset->setOwner(bv->innerInset()); - inset->setAutoBreakRows(true); - inset->setDrawFrame(InsetText::LOCKED); - inset->setFrameColor(LColor::captionframe); - return inset.release(); + case LFUN_INSET_CAPTION: { + UpdatableInset * up = bv->cursor().inset().asUpdatableInset(); + if (!up) { + auto_ptr inset(new InsetCaption(params)); + inset->setAutoBreakRows(true); + inset->setDrawFrame(true); + inset->setFrameColor(LColor::captionframe); + return inset.release(); + } + return 0; } - return 0; case LFUN_INDEX_PRINT: return new InsetPrintIndex(InsetCommandParams("printindex")); @@ -217,17 +216,20 @@ InsetOld * createInset(FuncRequest const & cmd) if (name == "bibitem") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetBibitem(icp); } else if (name == "bibtex") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetBibtex(icp); } else if (name == "citation") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetCitation(icp); } else if (name == "ert") { @@ -236,7 +238,7 @@ InsetOld * createInset(FuncRequest const & cmd) return new InsetERT(params, st); } else if (name == "external") { - Buffer const & buffer = *cmd.view()->buffer(); + Buffer const & buffer = *bv->buffer(); InsetExternalParams iep; InsetExternalMailer::string2params(cmd.argument, buffer, iep); @@ -245,7 +247,7 @@ InsetOld * createInset(FuncRequest const & cmd) return inset.release(); } else if (name == "graphics") { - Buffer const & buffer = *cmd.view()->buffer(); + Buffer const & buffer = *bv->buffer(); InsetGraphicsParams igp; InsetGraphicsMailer::string2params(cmd.argument, buffer, igp); @@ -260,27 +262,32 @@ InsetOld * createInset(FuncRequest const & cmd) } else if (name == "index") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetIndex(icp); } else if (name == "label") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetLabel(icp); } else if (name == "ref") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetRef(icp, *bv->buffer()); } else if (name == "toc") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetTOC(icp); } else if (name == "url") { InsetCommandParams icp; - InsetCommandMailer::string2params(cmd.argument, icp); + InsetCommandMailer::string2params(name, cmd.argument, + icp); return new InsetUrl(icp); } else if (name == "vspace") { @@ -324,7 +331,7 @@ InsetOld * createInset(FuncRequest const & cmd) } -InsetOld * readInset(LyXLex & lex, Buffer const & buf) +InsetBase * readInset(LyXLex & lex, Buffer const & buf) { // consistency check if (lex.getString() != "\\begin_inset") { @@ -332,10 +339,10 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) << endl; } - auto_ptr inset; + auto_ptr inset; LyXTextClass tclass = buf.params().getLyXTextClass(); - + lex.next(); string tmptok = lex.getString(); @@ -397,16 +404,14 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) } else if (tmptok == "External") { inset.reset(new InsetExternal); } else if (tmptok == "FormulaMacro") { - inset.reset(new InsetFormulaMacro); + inset.reset(new MathMacroTemplate); } else if (tmptok == "Formula") { - inset.reset(new InsetFormula); + inset.reset(new MathHullInset); } else if (tmptok == "Graphics") { inset.reset(new InsetGraphics); } else if (tmptok == "Note") { inset.reset(new InsetNote(buf.params(), tmptok)); - } else if (tmptok == "Boxed" || tmptok == "ovalbox" - || tmptok == "Shadowbox" || tmptok == "Doublebox" - || tmptok == "Ovalbox" || tmptok == "Frameless") { + } else if (tmptok == "Box") { inset.reset(new InsetBox(buf.params(), tmptok)); } else if (tmptok == "CharStyle") { lex.next(); @@ -414,7 +419,8 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) CharStyles::iterator found_cs = tclass.charstyle(s); inset.reset(new InsetCharStyle(buf.params(), found_cs)); } else if (tmptok == "Branch") { - inset.reset(new InsetBranch(buf.params(), string())); + inset.reset(new InsetBranch(buf.params(), + InsetBranchParams())); } else if (tmptok == "Include") { InsetCommandParams p("Include"); inset.reset(new InsetInclude(p)); @@ -437,8 +443,6 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) inset.reset(new InsetMarginal(buf.params())); } else if (tmptok == "OptArg") { inset.reset(new InsetOptArg(buf.params())); - } else if (tmptok == "Minipage") { - inset.reset(new InsetMinipage(buf.params())); } else if (tmptok == "Float") { lex.next(); string tmptok = lex.getString(); @@ -466,6 +470,17 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) } inset->read(buf, lex); + +#ifdef WITH_WARNINGS +#warning hack.. +#endif + if (inset->lyxCode() == InsetBase::MATHMACRO_CODE) { + MathMacroTemplate const * tmpl = + static_cast(inset.get()); + MacroTable::globalMacros().insert + (tmpl->name(), tmpl->asMacroData()); + lyxerr << "creating local macro " << tmpl->name() << endl; + } } return inset.release();