]> git.lyx.org Git - lyx.git/blobdiff - src/factory.cpp
reorder.
[lyx.git] / src / factory.cpp
index 18b733f06a7f498f825773fb637261fa1a90cc29..85c84d9b945ea09d6d504394af7405dbcecba121 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author André Pönitz
+ * \author André Pönitz
  *
  * Full author contact details are available in file CREDITS.
  */
 
 #include "insets/InsetBibitem.h"
 #include "insets/InsetBibtex.h"
+#include "insets/InsetBox.h"
+#include "insets/InsetBranch.h"
 #include "insets/InsetCaption.h"
 #include "insets/InsetCitation.h"
 #include "insets/InsetFlex.h"
-#include "insets/InsetEnvironment.h"
 #include "insets/InsetERT.h"
 #include "insets/InsetListings.h"
 #include "insets/InsetExternal.h"
 #include "insets/InsetFloatList.h"
 #include "insets/InsetFoot.h"
 #include "insets/InsetGraphics.h"
+#include "insets/InsetHyperlink.h"
 #include "insets/InsetInclude.h"
 #include "insets/InsetIndex.h"
 #include "insets/InsetInfo.h"
-#include "insets/InsetNomencl.h"
 #include "insets/InsetLabel.h"
 #include "insets/InsetLine.h"
 #include "insets/InsetMarginal.h"
 #include "insets/InsetNewline.h"
 #include "insets/InsetNewpage.h"
+#include "insets/InsetNomencl.h"
 #include "insets/InsetNote.h"
-#include "insets/InsetBox.h"
-#include "insets/InsetBranch.h"
 #include "insets/InsetOptArg.h"
-#include "insets/InsetNewpage.h"
+#include "insets/InsetPhantom.h"
 #include "insets/InsetRef.h"
 #include "insets/InsetSpace.h"
 #include "insets/InsetTabular.h"
 #include "insets/InsetTOC.h"
-#include "insets/InsetHyperlink.h"
 #include "insets/InsetVSpace.h"
 #include "insets/InsetWrap.h"
 
@@ -127,6 +126,13 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        return new InsetBranch(buf, InsetBranchParams(arg));
                }
 
+               case LFUN_PHANTOM_INSERT: {
+                       string arg = cmd.getArg(0);
+                       if (arg.empty())
+                               arg = "Phantom";
+                       return new InsetPhantom(buf, arg);
+               }
+
                case LFUN_ERT_INSERT:
                        return new InsetERT(buf);
 
@@ -142,9 +148,6 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                case LFUN_OPTIONAL_INSERT:
                        return new InsetOptArg(buf);
 
-               case LFUN_BIBITEM_INSERT:
-                       return new InsetBibitem(InsetCommandParams(BIBITEM_CODE));
-
                case LFUN_FLOAT_INSERT: {
                        // check if the float type exists
                        string const argument = to_utf8(cmd.argument());
@@ -173,8 +176,10 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        return 0;
                }
 
-               case LFUN_INDEX_INSERT:
-                       return new InsetIndex(buf);
+               case LFUN_INDEX_INSERT: {
+                       docstring arg = cmd.argument();
+                       return new InsetIndex(buf, InsetIndexParams(arg));
+               }
 
                case LFUN_NOMENCL_INSERT: {
                        InsetCommandParams icp(NOMENCL_CODE);
@@ -198,18 +203,21 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                case LFUN_CAPTION_INSERT:
                        return new InsetCaption(buf);
 
-               case LFUN_INDEX_PRINT:
-                       return new InsetPrintIndex(InsetCommandParams(INDEX_PRINT_CODE));
+               case LFUN_INDEX_PRINT:  {
+                       InsetCommandParams icp(INDEX_PRINT_CODE);
+                       icp["type"] = cmd.argument();
+                       return new InsetPrintIndex(icp);
+               }
 
-               case LFUN_NOMENCL_PRINT:
-                       return new InsetPrintNomencl(InsetCommandParams(NOMENCL_PRINT_CODE));
+               case LFUN_NOMENCL_PRINT: {
+                       InsetCommandParams icp(NOMENCL_PRINT_CODE);
+                       icp["set_width"] = from_ascii("auto");
+                       return new InsetPrintNomencl(icp);
+               }
 
                case LFUN_TOC_INSERT:
                        return new InsetTOC(InsetCommandParams(TOC_CODE));
 
-               case LFUN_ENVIRONMENT_INSERT:
-                       return new InsetEnvironment(buf, cmd.argument());
-
                case LFUN_INFO_INSERT: {
                        InsetInfo * inset = new InsetInfo(buf, to_utf8(cmd.argument()));
                        inset->updateInfo();
@@ -227,7 +235,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                        case BIBITEM_CODE: {
                                InsetCommandParams icp(code);
                                InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
-                               return new InsetBibitem(icp);
+                               return new InsetBibitem(buf, icp);
                        }
                        
                        case BIBTEX_CODE: {
@@ -282,12 +290,20 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                                return new InsetInclude(icp);
                        }
                        
-                       case INDEX_CODE:
-                               return new InsetIndex(buf);
+                       case INDEX_CODE: {
+                               docstring arg = cmd.argument();
+                               return new InsetIndex(buf, InsetIndexParams(arg));
+                       }
+                       
+                       case INDEX_PRINT_CODE:  {
+                               InsetCommandParams icp(code);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
+                               return new InsetPrintIndex(icp);
+                       }
                        
                        case NOMENCL_CODE: {
                                InsetCommandParams icp(code);
-                               InsetCommand::string2params(name, lyx::to_utf8(cmd.argument()), icp);
+                               InsetCommand::string2params(name, to_utf8(cmd.argument()), icp);
                                return new InsetNomencl(icp);
                        }
                        
@@ -327,7 +343,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                                return 0;
                        
                        }
-                       } //end LFUN_INSET_INSERT
+               } //end LFUN_INSET_INSERT
 
                case LFUN_SPACE_INSERT: {
                        string const name = cmd.getArg(0);
@@ -337,12 +353,17 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                                break;
                        }
                        InsetSpaceParams isp;
+                       // The tests for isp.math might be disabled after a file format change
                        if (name == "normal")
                                isp.kind = InsetSpaceParams::NORMAL;
                        else if (name == "protected")
                                isp.kind = InsetSpaceParams::PROTECTED;
                        else if (name == "thin")
                                isp.kind = InsetSpaceParams::THIN;
+                       else if (isp.math && name == "med")
+                               isp.kind = InsetSpaceParams::MEDIUM;
+                       else if (isp.math && name == "thick")
+                               isp.kind = InsetSpaceParams::THICK;
                        else if (name == "quad")
                                isp.kind = InsetSpaceParams::QUAD;
                        else if (name == "qquad")
@@ -353,6 +374,10 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                                isp.kind = InsetSpaceParams::ENSKIP;
                        else if (name == "negthinspace")
                                isp.kind = InsetSpaceParams::NEGTHIN;
+                       else if (isp.math && name == "negmedspace")
+                               isp.kind = InsetSpaceParams::NEGMEDIUM;
+                       else if (isp.math && name == "negthickspace")
+                               isp.kind = InsetSpaceParams::NEGTHICK;
                        else if (name == "hfill")
                                isp.kind = InsetSpaceParams::HFILL;
                        else if (name == "hfill*")
@@ -395,7 +420,7 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
                if (message.type_ == ErrorException) {
                        // This should never happen!
                        Alert::error(message.title_, message.details_);
-                       LyX::cref().exit(1);
+                       lyx_exit(1);
                } else if (message.type_ == WarningException) {
                        Alert::warning(message.title_, message.details_);
                        return 0;
@@ -451,7 +476,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
 
                switch (code) {
                        case BIBITEM_CODE:
-                               inset.reset(new InsetBibitem(inscmd));
+                               inset.reset(new InsetBibitem(buf, inscmd));
                                break;
                        case BIBTEX_CODE:
                                inset.reset(new InsetBibtex(buf, inscmd));
@@ -502,7 +527,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                // 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);
+                       inset.reset(new InsetQuotes(buf));
                } else if (tmptok == "External") {
                        inset.reset(new InsetExternal(const_cast<Buffer &>(buf)));
                } else if (tmptok == "FormulaMacro") {
@@ -516,14 +541,13 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                } else if (tmptok == "Box") {
                        inset.reset(new InsetBox(buf, tmptok));
                } else if (tmptok == "Flex") {
-                       lex.next();
+                       lex.eatLine();
                        string s = lex.getString();
                        inset.reset(new InsetFlex(buf, s));
                } else if (tmptok == "Branch") {
                        inset.reset(new InsetBranch(buf, InsetBranchParams()));
-               } else if (tmptok == "Environment") {
-                       lex.next();
-                       inset.reset(new InsetEnvironment(buf, lex.getDocString()));
+               } else if (tmptok == "Phantom") {
+                       inset.reset(new InsetPhantom(buf, tmptok));
                } else if (tmptok == "ERT") {
                        inset.reset(new InsetERT(buf));
                } else if (tmptok == "listings") {
@@ -531,7 +555,7 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                } else if (tmptok == "space") {
                        inset.reset(new InsetSpace);
                } else if (tmptok == "Tabular") {
-                       inset.reset(new InsetTabular(buf));
+                       inset.reset(new InsetTabular(const_cast<Buffer &>(buf)));
                } else if (tmptok == "Text") {
                        inset.reset(new InsetText(buf));
                } else if (tmptok == "VSpace") {
@@ -554,14 +578,10 @@ Inset * readInset(Lexer & lex, Buffer const & buf)
                        lex.next();
                        string tmptok = lex.getString();
                        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));
                } else if (tmptok == "Index") {
-                       inset.reset(new InsetIndex(buf));
+                       inset.reset(new InsetIndex(buf, InsetIndexParams()));
                } else if (tmptok == "FloatList") {
                        inset.reset(new InsetFloatList);
                } else if (tmptok == "Info") {