-
#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 "math_support.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"
+
+using std::auto_ptr;
+using std::endl;
RefInset::RefInset()
{}
-MathInset * RefInset::clone() const
+auto_ptr<InsetBase> RefInset::clone() const
{
- return new RefInset(*this);
+ return auto_ptr<InsetBase>(new RefInset(*this));
}
switch (cmd.action) {
case LFUN_MOUSE_RELEASE:
if (cmd.button() == mouse_button::button3) {
- lyxerr << "trying to goto ref" << cell(0) << "\n";
+ lyxerr << "trying to goto ref" << cell(0) << endl;
cmd.view()->dispatch(FuncRequest(LFUN_REF_GOTO, asString(cell(0))));
return DISPATCHED;
}
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;
}
-string RefInset::screenLabel() const
+string const RefInset::screenLabel() const
{
string str;
for (int i = 0; !types[i].latex_name.empty(); ++i)
- if (name_ == types[i].latex_name) {
+ if (commandname() == types[i].latex_name) {
str = _(types[i].short_gui_name);
break;
}
void RefInset::validate(LaTeXFeatures & features) const
{
- if (name_ == "vref" || name_ == "vpageref")
+ if (commandname() == "vref" || commandname() == "vpageref")
features.require("varioref");
- else if (name_ == "prettyref")
+ else if (commandname() == "prettyref")
features.require("prettyref");
}
dispatch_result RefInset::localDispatch(FuncRequest const & cmd)
{
+ 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);
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: ")},
- { "vpageref", N_("Textual Page Number"), N_("TextPage: ")},
- { "vref", N_("Standard+Textual Page"), N_("Ref+Text: ")},
- { "prettyref", N_("PrettyRef"), N_("PrettyRef: ")},
+ { "ref", N_("Standard"), N_("Ref: ")},
+ { "eqref", N_("Equation"), N_("EqRef: ")},
+ { "pageref", N_("Page Number"), N_("Page: ")},
+ { "vpageref", N_("Textual Page Number"), N_("TextPage: ")},
+ { "vref", N_("Standard+Textual Page"), N_("Ref+Text: ")},
+ { "prettyref", N_("PrettyRef"), N_("PrettyRef: ")},
{ "", "", "" }
};