#include "textpainter.h"
#include "frontends/Dialogs.h"
#include "intl.h"
-#include "insets/insetcommandparams.h"
#include "ref_inset.h"
using std::endl;
}
-Inset::RESULT InsetFormulaBase::lfunMouseRelease(FuncRequest const & cmd)
+dispatch_result InsetFormulaBase::lfunMouseRelease(FuncRequest const & cmd)
{
if (!mathcursor)
return UNDISPATCHED;
if (cmd.button() == mouse_button::button3) {
// try to dispatch to enclosed insets first
- if (mathcursor->dispatch(cmd) == MathInset::UNDISPATCHED) {
+ if (mathcursor->dispatch(cmd) == UNDISPATCHED) {
// launch math panel for right mouse button
+ lyxerr << "lfunMouseRelease: undispatched: " << cmd.button() << endl;
bv->owner()->getDialogs().showMathPanel();
}
return DISPATCHED;
}
-Inset::RESULT InsetFormulaBase::lfunMousePress(FuncRequest const & cmd)
+dispatch_result InsetFormulaBase::lfunMousePress(FuncRequest const & cmd)
{
BufferView * bv = cmd.view();
//lyxerr << "lfunMousePress: buttons: " << cmd.button() << endl;
}
-Inset::RESULT InsetFormulaBase::lfunMouseMotion(FuncRequest const & cmd)
+dispatch_result InsetFormulaBase::lfunMouseMotion(FuncRequest const & cmd)
{
if (!mathcursor)
return DISPATCHED;
- if (mathcursor->dispatch(FuncRequest(cmd)) != MathInset::UNDISPATCHED)
+ if (mathcursor->dispatch(FuncRequest(cmd)) != UNDISPATCHED)
return DISPATCHED;
// only select with button 1
}
-Inset::RESULT InsetFormulaBase::localDispatch(FuncRequest const & cmd)
+dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd)
{
//lyxerr << "InsetFormulaBase::localDispatch: act: " << cmd.action
// << " arg: '" << cmd.argument
switch (cmd.action) {
case LFUN_MOUSE_PRESS:
+ //lyxerr << "Mouse single press\n";
return lfunMousePress(cmd);
case LFUN_MOUSE_MOTION:
- return lfunMouseMotion(cmd);
+ //return lfunMouseMotion(cmd);
case LFUN_MOUSE_RELEASE:
+ //lyxerr << "Mouse single release\n";
return lfunMouseRelease(cmd);
case LFUN_MOUSE_DOUBLE:
//lyxerr << "Mouse double\n";
updateLocal(bv, true);
break;
- case LFUN_REF_INSERT:
- //if (argument.empty()) {
- // InsetCommandParams p("ref");
- // owner_->getDialogs().createRef(p.getAsString());
- //} else {
- // InsetCommandParams p;
- // p.setFromString(argument);
-
- // InsetRef * inset = new InsetRef(p, *buffer_);
- // if (!insertInset(inset))
- // delete inset;
- // else
- // updateInset(inset, true);
- //}
- //
- if (cmd.argument.empty()) {
- InsetCommandParams p("ref");
- bv->owner()->getDialogs().createRef(p.getAsString());
+ case LFUN_DIALOG_SHOW_NEW_INSET: {
+ string const & name = argument;
+ if (name == "ref") {
+ string data = "ref LatexCommand \\ref{}\n\\end_inset\n\n";
+ bv->owner()->getDialogs().show(name, data, 0);
+ } else
+ result = UNDISPATCHED;
+ }
+ break;
+
+ case LFUN_INSET_APPLY: {
+ string const name = cmd.getArg(0);
+ InsetBase * base =
+ bv->owner()->getDialogs().getOpenInset(name);
+
+ if (base) {
+ FuncRequest fr(bv, LFUN_INSET_MODIFY, cmd.argument);
+ result = base->localDispatch(fr);
} else {
- //mathcursor->handleNest(new InsetRef2);
- //mathcursor->insert(arg);
- mathcursor->insert(MathAtom(new RefInset(cmd.argument)));
+ // Turn 'argument' into a temporary RefInset.
+ MathArray ar;
+ if (string2RefInset(cmd.argument, ar)) {
+ mathcursor->insert(ar);
+ } else {
+ result = UNDISPATCHED;
+ }
}
- updateLocal(bv, true);
- break;
+ if (result == DISPATCHED)
+ updateLocal(bv, true);
+ }
+ break;
default:
result = UNDISPATCHED;