]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/Action.cpp
Make the InsetInfo dialog a bit less esoteric.
[lyx.git] / src / frontends / qt4 / Action.cpp
index 2cbe3d8e58c857b39fbad22a01abb818fab986c0..bd102e6b73a8f987c248ec55dec6e07759ee35c0 100644 (file)
 
 #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 <boost/bind.hpp>
+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<FuncRequest>(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<FuncRequest const> 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"