]> git.lyx.org Git - lyx.git/blobdiff - src/factory.cpp
Allow using \binom without amsmath and add support for \brace and \brack
[lyx.git] / src / factory.cpp
index 8e562bb75944ea5912f33fab750f3bc06ad5cbbd..b50b64abd1ad9fc60dba30682eaf7e45b55e07cc 100644 (file)
@@ -40,6 +40,8 @@
 #include "insets/InsetLabel.h"
 #include "insets/InsetLine.h"
 #include "insets/InsetMarginal.h"
+#include "insets/InsetNewline.h"
+#include "insets/InsetNewpage.h"
 #include "insets/InsetNote.h"
 #include "insets/InsetBox.h"
 #include "insets/InsetBranch.h"
@@ -85,17 +87,19 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                case LFUN_LINE_INSERT:
                        return new InsetLine;
 
-               case LFUN_NEWPAGE_INSERT:
-                       return new InsetNewpage;
-
-               case LFUN_PAGEBREAK_INSERT:
-                       return new InsetPagebreak;
-
-               case LFUN_CLEARPAGE_INSERT:
-                       return new InsetClearPage;
-
-               case LFUN_CLEARDOUBLEPAGE_INSERT:
-                       return new InsetClearDoublePage;
+               case LFUN_NEWPAGE_INSERT: {
+                       string const name = cmd.getArg(0);
+                       InsetNewpageParams inp;
+                       if (name.empty() || name == "newpage")
+                               inp.kind = InsetNewpageParams::NEWPAGE;
+                       else if (name == "pagebreak")
+                               inp.kind = InsetNewpageParams::PAGEBREAK;
+                       else if (name == "clearpage")
+                               inp.kind = InsetNewpageParams::CLEARPAGE;
+                       else if (name == "cleardoublepage")
+                               inp.kind = InsetNewpageParams::CLEARDOUBLEPAGE;
+                       return new InsetNewpage(inp);
+               }
 
                case LFUN_FLEX_INSERT: {
                        string s = cmd.getArg(0);
@@ -154,7 +158,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        string const argument = to_utf8(cmd.argument());
                        if (params.documentClass().floats().typeExist(argument)) {
                                auto_ptr<InsetFloat> p(new InsetFloat(buf, argument));
-                               p->wide(true, params);
+                               p->setWide(true, params);
                                return p.release();
                        }
                        lyxerr << "Non-existent float type: " << argument << endl;
@@ -219,59 +223,59 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        
                        case BIBITEM_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetBibitem(icp);
                        }
                        
                        case BIBTEX_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetBibtex(icp);
                        }
                        
                        case CITE_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetCitation(icp);
                        }
                        
                        case ERT_CODE: {
-                               InsetCollapsable::CollapseStatus st;
-                               InsetERTMailer::string2params(to_utf8(cmd.argument()), st);
-                               return new InsetERT(buf, st);
+                               return new InsetERT(buf,
+                                       InsetERT::string2params(to_utf8(cmd.argument())));
                        }
                                
                        case LISTINGS_CODE: {
                                InsetListingsParams par;
-                               InsetListingsMailer::string2params(to_utf8(cmd.argument()), par);
+                               InsetListings::string2params(to_utf8(cmd.argument()), par);
                                return new InsetListings(buf, par);
                        }
                        
                        case EXTERNAL_CODE: {
                                InsetExternalParams iep;
-                               InsetExternalMailer::string2params(to_utf8(cmd.argument()), buf, iep);
-                               auto_ptr<InsetExternal> inset(new InsetExternal);
+                               InsetExternal::string2params(to_utf8(cmd.argument()), buf, iep);
+                               auto_ptr<InsetExternal> inset(new InsetExternal(buf));
+                               inset->setBuffer(buf);
                                inset->setParams(iep);
                                return inset.release();
                        }
                        
                        case GRAPHICS_CODE: {
                                InsetGraphicsParams igp;
-                               InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buf, igp);
-                               auto_ptr<InsetGraphics> inset(new InsetGraphics);
+                               InsetGraphics::string2params(to_utf8(cmd.argument()), buf, igp);
+                               auto_ptr<InsetGraphics> inset(new InsetGraphics(buf));
                                inset->setParams(igp);
                                return inset.release();
                        }
                        
                        case HYPERLINK_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetHyperlink(icp);
                        }
                        
                        case INCLUDE_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetInclude(icp);
                        }
                        
@@ -280,37 +284,37 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        
                        case NOMENCL_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, lyx::to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, lyx::to_utf8(cmd.argument()), icp);
                                return new InsetNomencl(icp);
                        }
                        
                        case LABEL_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetLabel(icp);
                        }
                        
                        case REF_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetRef(buf, icp);
                        }
 
                        case SPACE_CODE: {
                                InsetSpaceParams isp;
-                               InsetSpaceMailer::string2params(to_utf8(cmd.argument()), isp);
+                               InsetSpace::string2params(to_utf8(cmd.argument()), isp);
                                return new InsetSpace(isp);
                        }
                        
                        case TOC_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetTOC(icp);
                        }
                        
                        case VSPACE_CODE: {
                                VSpace vspace;
-                               InsetVSpaceMailer::string2params(to_utf8(cmd.argument()), vspace);
+                               InsetVSpace::string2params(to_utf8(cmd.argument()), vspace);
                                return new InsetVSpace(vspace);
                        }
                        
@@ -348,6 +352,8 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                                isp.kind = InsetSpaceParams::NEGTHIN;
                        else if (name == "hfill")
                                isp.kind = InsetSpaceParams::HFILL;
+                       else if (name == "hfill*")
+                               isp.kind = InsetSpaceParams::HFILL_PROTECTED;
                        else if (name == "dotfill")
                                isp.kind = InsetSpaceParams::DOTFILL;
                        else if (name == "hrulefill")
@@ -393,10 +399,10 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                }
        }
 
-
        return 0;
 }
 
+
 Inset * createInset(Buffer & buf, FuncRequest const & cmd)
 {
        Inset * inset = createInsetHelper(buf, cmd);
@@ -405,13 +411,12 @@ Inset * createInset(Buffer & buf, FuncRequest const & cmd)
        return inset;
 }
 
+
 Inset * readInset(Lexer & lex, Buffer const & buf)
 {
        // consistency check
-       if (lex.getString() != "\\begin_inset") {
-               lyxerr << "Buffer::readInset: Consistency check failed."
-                      << endl;
-       }
+       if (lex.getString() != "\\begin_inset")
+               LYXERR0("Buffer::readInset: Consistency check failed.");
 
        auto_ptr<Inset> inset;
 
@@ -420,13 +425,13 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
 
        // test the different insets
        
-       //FIXME It would be better if we did not have this branch and could
-       //just do one massive switch for all insets. But at present, it's easier 
-       //to do it this way, and we can't do the massive switch until the conversion 
-       //mentioned below. 
-       //Note that if we do want to do a single switch, we need to remove
-       //this "CommandInset" line---or replace it with a single "InsetType" line
-       //that would be used in all insets.
+       // FIXME It would be better if we did not have this branch and could
+       // just do one massive switch for all insets. But at present, it's
+       // easier to do it this way, and we can't do the massive switch until
+       // the conversion mentioned below.  Note that if we do want to do a
+       // single switch, we need to remove this "CommandInset" line---or
+       // replace it with a single "InsetType" line that would be used in all
+       // insets.
        if (tmptok == "CommandInset") {
                lex.next();
                string const insetType = lex.getString();
@@ -495,13 +500,13 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                if (tmptok == "Quotes") {
                        inset.reset(new InsetQuotes);
                } else if (tmptok == "External") {
-                       inset.reset(new InsetExternal);
+                       inset.reset(new InsetExternal(const_cast<Buffer &>(buf)));
                } else if (tmptok == "FormulaMacro") {
                        inset.reset(new MathMacroTemplate);
                } else if (tmptok == "Formula") {
                        inset.reset(new InsetMathHull);
                } else if (tmptok == "Graphics") {
-                       inset.reset(new InsetGraphics);
+                       inset.reset(new InsetGraphics(const_cast<Buffer &>(buf)));
                } else if (tmptok == "Note") {
                        inset.reset(new InsetNote(buf, tmptok));
                } else if (tmptok == "Box") {
@@ -533,6 +538,10 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                        inset.reset(new InsetFoot(buf));
                } else if (tmptok == "Marginal") {
                        inset.reset(new InsetMarginal(buf));
+               } else if (tmptok == "Newpage") {
+                       inset.reset(new InsetNewpage);
+               } else if (tmptok == "Newline") {
+                       inset.reset(new InsetNewline);
                } else if (tmptok == "OptArg") {
                        inset.reset(new InsetOptArg(buf));
                } else if (tmptok == "Float") {