X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FAction.cpp;h=bd102e6b73a8f987c248ec55dec6e07759ee35c0;hb=b6eacd8d4f86734e8abef3335b190ce12a6a11b5;hp=2cbe3d8e58c857b39fbad22a01abb818fab986c0;hpb=e36fba33abc2e80599b164d91e90e1558225576d;p=lyx.git diff --git a/src/frontends/qt4/Action.cpp b/src/frontends/qt4/Action.cpp index 2cbe3d8e58..bd102e6b73 100644 --- a/src/frontends/qt4/Action.cpp +++ b/src/frontends/qt4/Action.cpp @@ -12,67 +12,64 @@ #include "Action.h" -#include "GuiView.h" -#include "qt_helpers.h" - -#include "callback.h" -#include "LyXFunc.h" +// DispatchResult.h is needed by the windows compiler because lyx::dispatch +// returns a DispatchResult const reference. Gcc does not complain. Weird... +#include "DispatchResult.h" +#include "FuncRequest.h" #include "FuncStatus.h" -#include "debug.h" +#include "LyX.h" +#include "qt_helpers.h" + +#include "support/debug.h" #include "support/lstrings.h" -#include +using namespace std; -using std::string; -using std::endl; namespace lyx { namespace frontend { -Action::Action(GuiView & lyxView, docstring const & text, - FuncRequest const & func, docstring const & tooltip) - : QAction(&lyxView), func_(func), lyxView_(lyxView) +Action::Action(FuncRequest func, QIcon const & icon, QString const & text, + QString const & tooltip, QObject * parent) + : QAction(parent), func_(make_shared(move(func))) { -#if QT_VERSION >= 0x040200 - // only Qt/Mac handles that - setMenuRole(NoRole); -#endif - setText(toqstr(text)); - setToolTip(toqstr(tooltip)); - setStatusTip(toqstr(tooltip)); - connect(this, SIGNAL(triggered()), this, SLOT(action())); - update(); + init(icon, text, tooltip); } -Action::Action(GuiView & lyxView, string const & icon, docstring const & text, - FuncRequest const & func, docstring const & tooltip) - : QAction(&lyxView), func_(func), lyxView_(lyxView) + +Action::Action(shared_ptr func, + QIcon const & icon, QString const & text, + QString const & tooltip, QObject * parent) + : QAction(parent), func_(func) { - setIcon(QPixmap(icon.c_str())); - setText(toqstr(text)); - setToolTip(toqstr(tooltip)); - setStatusTip(toqstr(tooltip)); - connect(this, SIGNAL(triggered()), this, SLOT(action())); - update(); + init(icon, text, tooltip); } -/* -void Action::setAction(FuncRequest const & func) + +void Action::init(QIcon const & icon, QString const & text, + QString const & tooltip) { - func_=func; + // only Qt/Mac handles that + setMenuRole(NoRole); + setIcon(icon); + setText(text); + setToolTip(tooltip); + setStatusTip(tooltip); + connect(this, SIGNAL(triggered()), this, SLOT(action())); + update(); } -*/ + void Action::update() { - FuncStatus const status = getStatus(func_); + FuncStatus const status = getStatus(*func_); - if (status.onoff(true)) { + if (status.onOff(true)) { setCheckable(true); setChecked(true); - } else if (status.onoff(false)) { + } else if (status.onOff(false)) { setCheckable(true); setChecked(false); } else { @@ -85,13 +82,13 @@ void Action::update() void Action::action() { -// LYXERR(Debug::ACTION) << "calling LyXFunc::dispatch: func_: " << func_ << endl; + //LYXERR(Debug::ACTION, "calling lyx::dispatch: func_: "); - lyxView_.dispatch(func_); + lyx::dispatch(*func_); triggered(this); } } // namespace frontend } // namespace lyx -#include "Action_moc.cpp" +#include "moc_Action.cpp"