X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffuncrequest.h;h=118e4f45bfdeeccdbf12463affa64794dcbc40b8;hb=e7f4618bcce770369cf46335c2c7f0164b4b8857;hp=c48a8938a9a555fc09e727baf206fb2e26eddae8;hpb=b8198905dc65d62ec43f835a42dc219455f881a0;p=lyx.git diff --git a/src/funcrequest.h b/src/funcrequest.h index c48a8938a9..118e4f45bf 100644 --- a/src/funcrequest.h +++ b/src/funcrequest.h @@ -1,30 +1,95 @@ +// -*- C++ -*- +/** + * \file funcrequest.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + #ifndef FUNCREQUEST_H #define FUNCREQUEST_H -#include "commandtags.h" -#include "LString.h" +#include "lfuns.h" +#include "frontends/mouse_state.h" + +#include "support/docstring.h" + +#include + -/** This class encapsulates LyX action and arguemnt - * in order to passs it around easily. +namespace lyx { + + +/** + * This class encapsulates a LyX action and its argument + * in order to pass it around easily. */ -struct FuncRequest { - /// - FuncRequest() - : action(LFUN_UNKNOWN_ACTION) - {} - /// - FuncRequest(kb_action act) - : action(act) - {} - /// - FuncRequest(kb_action act, string const & arg) - : action(act), argument(arg) - {} - - /// +class FuncRequest { +public: + /// Where the request came from + enum Origin { + INTERNAL, + MENU, // A menu entry + TOOLBAR, // A toolbar icon + KEYBOARD, // a keyboard binding + COMMANDBUFFER + }; + + /// just for putting these things in std::container + explicit FuncRequest(Origin o = INTERNAL); + /// actions without extra argument + explicit FuncRequest(kb_action act, Origin o = INTERNAL); + /// actions without extra argument + FuncRequest(kb_action act, int x, int y, mouse_button::state button, + Origin o = INTERNAL); + /// actions with extra argument + FuncRequest(kb_action act, docstring const & arg, + Origin o = INTERNAL); + /// actions with extra argument. FIXME: remove this + FuncRequest(kb_action act, std::string const & arg, + Origin o = INTERNAL); + /// 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; + + /// argument parsing, extract argument i as std::string + std::string getArg(unsigned int i) const; + + /// access the whole argument + docstring const & argument() const { return argument_; } + +public: // should be private + /// the action kb_action action; - /// - string argument; +private: + /// the action's string argument + docstring argument_; +public: // should be private + /// who initiated the action + Origin origin; + /// the x coordinate of a mouse press + int x; + /// the y coordinate of a mouse press + int y; + /// some extra information (like button number) + mouse_button::state button_; }; -#endif + +bool operator==(FuncRequest const & lhs, FuncRequest const & rhs); + +std::ostream & operator<<(std::ostream &, FuncRequest const &); + + +} // namespace lyx + +#endif // FUNCREQUEST_H