]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/ref_inset.C
fix #1073
[lyx.git] / src / mathed / ref_inset.C
index 570c7cf4c5d5981fe67300f7c1841f1fd2f8a385..abc6a215bbc8efe71850277de5f6742ce8084054 100644 (file)
@@ -2,20 +2,18 @@
 #include <config.h>
 
 #include "ref_inset.h"
-#include "funcrequest.h"
-#include "formulabase.h"
+#include "math_factory.h"
+
 #include "BufferView.h"
-#include "frontends/LyXView.h"
-#include "frontends/Painter.h"
-#include "frontends/Dialogs.h"
-#include "lyxfunc.h"
+#include "debug.h"
+#include "funcrequest.h"
 #include "gettext.h"
 #include "LaTeXFeatures.h"
-#include "debug.h"
-#include "math_mathmlstream.h"
-#include "Lsstream.h"
-#include "math_parser.h"
-#include "support/lstrings.h"
+
+#include "frontends/LyXView.h"
+#include "frontends/Dialogs.h"
+
+#include "support/LOstream.h"
 
 
 RefInset::RefInset()
@@ -53,13 +51,9 @@ RefInset::dispatch(FuncRequest const & cmd, idx_type & idx, pos_type & pos)
                        if (cmd.button() == mouse_button::button1) {
                                // Eventually trigger dialog with button 3
                                // not 1
-                               ostringstream data;
-                               WriteStream wsdata(data);
-                               write(wsdata);
-                               wsdata << "\n\\end_inset\n\n";
-
+                               string const data = createDialogStr("ref");
                                cmd.view()->owner()->getDialogs().
-                                       show("ref", data.str(), this);
+                                       show("ref", data, this);
                                return DISPATCHED;
                        }
                        break;
@@ -132,38 +126,22 @@ int RefInset::docbook(std::ostream & os, bool) const
 
 dispatch_result RefInset::localDispatch(FuncRequest const & cmd)
 {
-       if (cmd.action != LFUN_REF_APPLY)
+       if (cmd.action != LFUN_INSET_MODIFY || cmd.getArg(0) != "ref")
                return UNDISPATCHED;
 
        MathArray ar;
-       if (!string2RefInset(cmd.argument, ar))
+       if (!createMathInset_fromDialogStr(cmd.argument, ar))
                return UNDISPATCHED;
 
        *this = *ar[0].nucleus()->asRefInset();
 //     if (cmd.view())
 //                 // This does not compile because updateInset expects
 //                 // an Inset* and 'this' isn't.
-//             cmd.view()->updateInset(this, true);
+//             cmd.view()->updateInset(this);
        return DISPATCHED;
 }
 
 
-bool string2RefInset(string const & str, MathArray & ar)
-{
-       // str comes with a head "LatexCommand " and a
-       // tail "\nend_inset\n\n". Strip them off.
-       string trimmed;
-       string body = split(str, trimmed, ' ');
-       split(body, trimmed, '\n');
-
-       mathed_parse_cell(ar, trimmed);
-       if (ar.size() != 1)
-               return false;
-
-       return ar[0].nucleus()->asRefInset();
-}
-
-
 RefInset::ref_type_info RefInset::types[] = {
        { "ref",        N_("Standard"),                 N_("Ref: ")},
        { "pageref",    N_("Page Number"),              N_("Page: ")},