#include "math_factory.h"
#include "BufferView.h"
+#include "cursor.h"
#include "debug.h"
#include "funcrequest.h"
#include "math_support.h"
#include "frontends/LyXView.h"
#include "frontends/Dialogs.h"
-
using std::string;
using std::auto_ptr;
using std::endl;
+
RefInset::RefInset()
: CommandInset("ref")
{}
}
-dispatch_result
-RefInset::dispatch(FuncRequest const & cmd, idx_type & idx, pos_type & pos)
+void RefInset::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
{
switch (cmd.action) {
- case LFUN_MOUSE_RELEASE:
- if (cmd.button() == mouse_button::button3) {
- 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
- string const data = createDialogStr("ref");
- cmd.view()->owner()->getDialogs().
- show("ref", data, this);
- return DISPATCHED;
+ case LFUN_INSET_MODIFY:
+ if (cmd.getArg(0) == "ref") {
+ MathArray ar;
+ if (createMathInset_fromDialogStr(cmd.argument, ar)) {
+ *this = *ar[0].nucleus()->asRefInset();
+ break;
}
+ }
+ cur.undispatched();
+ break;
+
+ case LFUN_MOUSE_RELEASE:
+ if (cmd.button() == mouse_button::button3) {
+ lyxerr << "trying to goto ref" << cell(0) << endl;
+ cur.bv().dispatch(FuncRequest(LFUN_REF_GOTO, asString(cell(0))));
+ break;
+ }
+ if (cmd.button() == mouse_button::button1) {
+ // Eventually trigger dialog with button 3, not 1
+ string const data = createDialogStr("ref");
+ cur.bv().owner()->getDialogs().show("ref", data, this);
break;
- case LFUN_MOUSE_PRESS:
- case LFUN_MOUSE_MOTION:
- // eat other mouse commands
- return DISPATCHED;
- default:
- return CommandInset::dispatch(cmd, idx, pos);
+ }
+ cur.undispatched();
+ break;
+
+ case LFUN_MOUSE_PRESS:
+ case LFUN_MOUSE_MOTION:
+ // eat other mouse commands
+ break;
+
+ default:
+ CommandInset::priv_dispatch(cur, cmd);
+ break;
}
- // not our business
- return UNDISPATCHED;
}
}
-int RefInset::ascii(std::ostream & os, int) const
+int RefInset::plaintext(std::ostream & os, OutputParams const &) const
{
os << '[' << asString(cell(0)) << ']';
return 0;
}
-int RefInset::linuxdoc(std::ostream & os) const
+int RefInset::linuxdoc(std::ostream & os, OutputParams const &) const
{
os << "<ref id=\"" << asString(cell(0))
<< "\" name=\"" << asString(cell(1)) << "\" >";
}
-int RefInset::docbook(std::ostream & os, bool) const
+int RefInset::docbook(std::ostream & os, OutputParams const &) const
{
if (cell(1).empty()) {
os << "<xref linkend=\"" << asString(cell(0)) << "\">";
}
-dispatch_result RefInset::localDispatch(FuncRequest const & cmd)
-{
- if (cmd.action != LFUN_INSET_MODIFY || cmd.getArg(0) != "ref")
- return UNDISPATCHED;
-
- MathArray 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;
-}
RefInset::ref_type_info RefInset::types[] = {