X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFuncRequest.h;h=efbe425f57fc25d609f91cc0b42163d0584ebf95;hb=4ed0312c51704780af1c452d3a82a84171b3725a;hp=6aaad7bb8e10b16aed32218a1b5a55f1e0f004ef;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/FuncRequest.h b/src/FuncRequest.h index 6aaad7bb8e..efbe425f57 100644 --- a/src/FuncRequest.h +++ b/src/FuncRequest.h @@ -16,11 +16,18 @@ #include "support/docstring.h" +#include "frontends/KeyModifier.h" #include "frontends/mouse_state.h" namespace lyx { +class LyXErr; + +namespace frontend { + class GuiView; +} + /** * This class encapsulates a LyX action and its argument * in order to pass it around easily. @@ -34,7 +41,9 @@ public: MENU, // A menu entry TOOLBAR, // A toolbar icon KEYBOARD, // a keyboard binding - COMMANDBUFFER + COMMANDBUFFER, + LYXSERVER, + TOC }; /// just for putting these things in std::container @@ -43,7 +52,7 @@ public: explicit FuncRequest(FuncCode act, Origin o = INTERNAL); /// actions without extra argument FuncRequest(FuncCode act, int x, int y, mouse_button::state button, - Origin o = INTERNAL); + KeyModifier modifier, Origin o = INTERNAL); /// actions with extra argument FuncRequest(FuncCode act, docstring const & arg, Origin o = INTERNAL); @@ -53,45 +62,82 @@ public: /// for changing requests a bit FuncRequest(FuncRequest const & cmd, docstring const & arg, Origin o = INTERNAL); - /// for changing requests a bit. FIXME: remove this - FuncRequest(FuncRequest const & cmd, std::string const & arg, - Origin o = INTERNAL); - /// access to button - mouse_button::state button() const; + /// access the whole argument + docstring const & argument() const { return argument_; } + /// + FuncCode action() const { return action_ ; } + /// + void setAction(FuncCode act) { action_ = act; } + /// + Origin origin() const { return origin_; } + /// + void setOrigin(Origin o) { origin_ = o; } + /// + frontend::GuiView* view_origin() const { return view_origin_; } + /// + void setViewOrigin(frontend::GuiView* o) { view_origin_ = o; } + /// + int x() const { return x_; } + /// + int y() const { return y_; } + /// + void set_y(int y) { y_ = y; } + /// + mouse_button::state button() const { return button_; } + /// + KeyModifier modifier() const { return modifier_; } /// argument parsing, extract argument i as std::string std::string getArg(unsigned int i) const; + /// argument parsing, extract argument i as std::string, + /// eating all characters up to the end of the command line + std::string getLongArg(unsigned int i) const; - /// access the whole argument - docstring const & argument() const { return argument_; } - - /// + /// static FuncRequest const unknown; - /// + /// static FuncRequest const noaction; -public: // should be private - /// the action - FuncCode action; + /// + static FuncRequest const prefix; + + /// + bool allowAsync() const { return allow_async_; } + /// + void allowAsync(bool allow_async) { allow_async_ = allow_async; } + private: + /// the action + FuncCode action_ = LFUN_NOACTION; /// the action's string argument docstring argument_; -public: // should be private /// who initiated the action - Origin origin; + Origin origin_ = INTERNAL; + /// to which view should be this command sent (see bug #11004) + /// NULL=current view + frontend::GuiView* view_origin_ = nullptr; /// the x coordinate of a mouse press - int x; + int x_ = 0; /// the y coordinate of a mouse press - int y; + int y_ = 0; /// some extra information (like button number) - mouse_button::state button_; + mouse_button::state button_ = mouse_button::none; + /// + KeyModifier modifier_ = NoModifier; + /// Commands should be run synchronously when they + /// are launched via "command-sequence" or "repeat" or "buffer-forall" + bool allow_async_ = true; }; bool operator==(FuncRequest const & lhs, FuncRequest const & rhs); +bool operator!=(FuncRequest const & lhs, FuncRequest const & rhs); + std::ostream & operator<<(std::ostream &, FuncRequest const &); +LyXErr & operator<<(LyXErr &, FuncRequest const &); + } // namespace lyx