X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffactory.cpp;h=fd823085ee6e6b194dbc2f95ca3b05585224946e;hb=3256dbc78a76f947080dc8e3414abc60e4b5c5af;hp=347493a75039f9323ce75157df8ce4c178c38592;hpb=4064d2c468bff8e5d5f4cdd4442d52087d1b137e;p=lyx.git diff --git a/src/factory.cpp b/src/factory.cpp index 347493a750..fd823085ee 100644 --- a/src/factory.cpp +++ b/src/factory.cpp @@ -13,14 +13,12 @@ #include "factory.h" #include "Buffer.h" -#include "BufferView.h" #include "BufferParams.h" -#include "debug.h" #include "FloatList.h" #include "FuncRequest.h" -#include "Color.h" #include "Lexer.h" #include "LyX.h" +#include "TextClass.h" #include "insets/InsetBibitem.h" #include "insets/InsetBibtex.h" @@ -47,7 +45,7 @@ #include "insets/InsetBox.h" #include "insets/InsetBranch.h" #include "insets/InsetOptArg.h" -#include "insets/InsetPagebreak.h" +#include "insets/InsetNewpage.h" #include "insets/InsetRef.h" #include "insets/InsetSpace.h" #include "insets/InsetTabular.h" @@ -61,29 +59,25 @@ #include "frontends/alert.h" +#include "support/debug.h" #include "support/lstrings.h" #include "support/ExceptionMessage.h" #include -#include #include -using std::auto_ptr; -using std::endl; -using std::string; - +using namespace std; +using namespace lyx::support; namespace lyx { namespace Alert = frontend::Alert; -using support::compare_ascii_no_case; - -Inset * createInset(BufferView * bv, FuncRequest const & cmd) +Inset * createInset(Buffer & buf, FuncRequest const & cmd) { - BufferParams const & params = bv->buffer().params(); + BufferParams const & params = buf.params(); try { @@ -94,6 +88,9 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) case LFUN_LINE_INSERT: return new InsetLine; + case LFUN_NEWPAGE_INSERT: + return new InsetNewpage; + case LFUN_PAGEBREAK_INSERT: return new InsetPagebreak; @@ -105,9 +102,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) case LFUN_FLEX_INSERT: { string s = cmd.getArg(0); - TextClass tclass = params.getTextClass(); - InsetLayout il = tclass.insetlayout(from_utf8(s)); - return new InsetFlex(params, il); + return new InsetFlex(params, params.getTextClassPtr(), s); } case LFUN_NOTE_INSERT: { @@ -155,7 +150,6 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) if (params.getTextClass().floats().typeExist(argument)) return new InsetFloat(params, argument); lyxerr << "Non-existent float type: " << argument << endl; - return 0; } case LFUN_FLOAT_WIDE_INSERT: { @@ -183,30 +177,28 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) case LFUN_NOMENCL_INSERT: { InsetCommandParams icp(NOMENCL_CODE); - icp["symbol"] = cmd.argument().empty() ? - bv->cursor().innerText()->getStringToIndex(bv->cursor()) : - cmd.argument(); + icp["symbol"] = cmd.argument(); return new InsetNomencl(icp); } case LFUN_TABULAR_INSERT: { if (cmd.argument().empty()) return 0; - std::istringstream ss(to_utf8(cmd.argument())); + istringstream ss(to_utf8(cmd.argument())); int r = 0, c = 0; ss >> r >> c; if (r <= 0) r = 2; if (c <= 0) c = 2; - return new InsetTabular(bv->buffer(), r, c); + 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); + inset->setFrameColor(Color_captionframe); return inset.release(); } @@ -268,18 +260,16 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) } case EXTERNAL_CODE: { - Buffer const & buffer = bv->buffer(); InsetExternalParams iep; - InsetExternalMailer::string2params(to_utf8(cmd.argument()), buffer, iep); + InsetExternalMailer::string2params(to_utf8(cmd.argument()), buf, iep); auto_ptr inset(new InsetExternal); - inset->setParams(iep, buffer); + inset->setParams(iep, buf); return inset.release(); } case GRAPHICS_CODE: { - Buffer const & buffer = bv->buffer(); InsetGraphicsParams igp; - InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buffer, igp); + InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buf, igp); auto_ptr inset(new InsetGraphics); inset->setParams(igp); return inset.release(); @@ -315,7 +305,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) case REF_CODE: { InsetCommandParams icp(code); InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp); - return new InsetRef(icp, bv->buffer()); + return new InsetRef(icp, buf); } case TOC_CODE: { @@ -332,7 +322,7 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) default: lyxerr << "Inset '" << name << "' not permitted with LFUN_INSET_INSERT." - << std::endl; + << endl; return 0; } @@ -342,21 +332,21 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) string const name = to_utf8(cmd.argument()); if (name == "normal") return new InsetSpace(InsetSpace::NORMAL); - else if (name == "protected") + if (name == "protected") return new InsetSpace(InsetSpace::PROTECTED); - else if (name == "thin") + if (name == "thin") return new InsetSpace(InsetSpace::THIN); - else if (name == "quad") + if (name == "quad") return new InsetSpace(InsetSpace::QUAD); - else if (name == "qquad") + if (name == "qquad") return new InsetSpace(InsetSpace::QQUAD); - else if (name == "enspace") + if (name == "enspace") return new InsetSpace(InsetSpace::ENSPACE); - else if (name == "enskip") + if (name == "enskip") return new InsetSpace(InsetSpace::ENSKIP); - else if (name == "negthinspace") + if (name == "negthinspace") return new InsetSpace(InsetSpace::NEGTHIN); - else if (name.empty()) + if (name.empty()) lyxerr << "LyX function 'space' needs an argument." << endl; else lyxerr << "Wrong argument for LyX function 'space'." << endl; @@ -367,12 +357,12 @@ Inset * createInset(BufferView * bv, FuncRequest const & cmd) break; } - } catch (support::ExceptionMessage const & message) { - if (message.type_ == support::ErrorException) { + } catch (ExceptionMessage const & message) { + if (message.type_ == ErrorException) { + // This should never happen! Alert::error(message.title_, message.details_); - LyX::cref().emergencyCleanup(); - abort(); - } else if (message.type_ == support::WarningException) { + LyX::cref().exit(1); + } else if (message.type_ == WarningException) { Alert::warning(message.title_, message.details_); return 0; } @@ -393,8 +383,6 @@ Inset * readInset(Lexer & lex, Buffer const & buf) auto_ptr inset; - TextClass tclass = buf.params().getTextClass(); - lex.next(); string tmptok = lex.getString(); @@ -437,9 +425,6 @@ Inset * readInset(Lexer & lex, Buffer const & buf) case INCLUDE_CODE: inset.reset(new InsetInclude(inscmd)); break; - case INDEX_CODE: - inset.reset(new InsetIndex(buf.params())); - break; case INDEX_PRINT_CODE: inset.reset(new InsetPrintIndex(inscmd)); break; @@ -462,7 +447,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf) case NO_CODE: default: lyxerr << "unknown CommandInset '" << insetType - << "'" << std::endl; + << "'" << endl; while (lex.isOK() && lex.getString() != "\\end_inset") lex.next(); return 0; @@ -491,8 +476,8 @@ Inset * readInset(Lexer & lex, Buffer const & buf) } else if (tmptok == "Flex") { lex.next(); string s = lex.getString(); - InsetLayout il = tclass.insetlayout(from_utf8(s)); - inset.reset(new InsetFlex(buf.params(), il)); + inset.reset(new InsetFlex(buf.params(), + buf.params().getTextClassPtr(), s)); } else if (tmptok == "Branch") { inset.reset(new InsetBranch(buf.params(), InsetBranchParams())); @@ -539,25 +524,13 @@ Inset * readInset(Lexer & lex, Buffer const & buf) inset.reset(new InsetInfo(buf.params())); } else { lyxerr << "unknown Inset type '" << tmptok - << "'" << std::endl; + << "'" << endl; while (lex.isOK() && lex.getString() != "\\end_inset") lex.next(); return 0; } inset->read(buf, lex); - -// FIXME: hack.. - if (inset->lyxCode() == MATHMACRO_CODE) { - MathMacroTemplate const * tmpl = - static_cast(inset.get()); - MacroTable::globalMacros().insert - (tmpl->name(), tmpl->asMacroData()); - LYXERR(Debug::DEBUG) - << BOOST_CURRENT_FUNCTION - << ": creating local macro " << to_utf8(tmpl->name()) - << endl; - } } return inset.release();