]> git.lyx.org Git - lyx.git/blobdiff - src/factory.C
get rid of broken_header.h and some unneeded tests
[lyx.git] / src / factory.C
index f5a79b3ec543ba7d9fae794743371a4f566aac82..03a285a3c3e0e007b6eea7644f1f28878602148c 100644 (file)
 #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 <boost/assert.hpp>
 
+#include <sstream>
+
 using lyx::support::compare_ascii_no_case;
 
 using std::auto_ptr;
@@ -69,7 +72,7 @@ using std::endl;
 using std::string;
 
 
-InsetOld * createInset(BufferView * bv, FuncRequest const & cmd)
+InsetBase * createInset(BufferView * bv, FuncRequest const & cmd)
 {
        BufferParams const & params = bv->buffer()->params();
 
@@ -152,7 +155,7 @@ InsetOld * createInset(BufferView * bv, 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);
 
@@ -179,16 +182,17 @@ InsetOld * createInset(BufferView * bv, FuncRequest const & cmd)
                bv->owner()->getDialogs().show("tabularcreate");
                return 0;
 
-       case LFUN_INSET_CAPTION: 
-       if (!bv->innerInset()) {
-               auto_ptr<InsetCaption> 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<InsetCaption> 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"));
@@ -327,7 +331,7 @@ InsetOld * createInset(BufferView * bv, FuncRequest const & cmd)
 }
 
 
-InsetOld * readInset(LyXLex & lex, Buffer const & buf)
+InsetBase * readInset(LyXLex & lex, Buffer const & buf)
 {
        // consistency check
        if (lex.getString() != "\\begin_inset") {
@@ -335,10 +339,10 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
                       << endl;
        }
 
-       auto_ptr<InsetOld> inset;
+       auto_ptr<InsetBase> inset;
 
        LyXTextClass tclass = buf.params().getLyXTextClass();
-               
+
        lex.next();
        string tmptok = lex.getString();
 
@@ -400,9 +404,9 @@ 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") {
@@ -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<MathMacroTemplate*>(inset.get());
+                       MacroTable::globalMacros().insert
+                               (tmpl->name(), tmpl->asMacroData());
+                       lyxerr << "creating local macro " << tmpl->name() << endl;
+               }
        }
 
        return inset.release();