X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXAction.h;h=70381a00227556b8ee6a15c0ee25d985343701b0;hb=105e0dfe2910e0bbd13857dabff84bfadda156c4;hp=5d7c88ede6d6af1903223fb681c14e4f22edbbd3;hpb=1dffc5cfe45c34d9ef42d3d58d2ed4ce855339e2;p=lyx.git diff --git a/src/LyXAction.h b/src/LyXAction.h index 5d7c88ede6..70381a0022 100644 --- a/src/LyXAction.h +++ b/src/LyXAction.h @@ -13,50 +13,61 @@ #ifndef LYXACTION_H #define LYXACTION_H -#include "lfuns.h" +#include "FuncCode.h" -#include "LString.h" -#include #include +#include +namespace lyx { + class FuncRequest; /** - * This class is a container for LyX actions. It also - * stores and managers "pseudo-actions". Pseudo-actions - * are not part of the kb_action enum, but are created - * dynamically, for encapsulating a real action and an - * argument. They are used for things like the menus. + * This class is a container for LyX actions. It associates a name to + * most of them and describes some of their properties. */ -class LyXAction : boost::noncopyable { +class LyXAction { +public: + /// category of an action, used in the Shortcuts dialog + enum func_type { + Hidden, //< Not listed for configuration + Edit, //< Cursor and mouse movement, copy/paste etc + Math, //< Mathematics + Buffer, //< Buffer and window related + Layout, //< Font, Layout and textclass related + System, //< Lyx preference, server etc + }; + private: /// information for an action - struct func_info { + struct FuncInfo { /// the action name - string name; + std::string name; /// the func_attrib values set unsigned int attrib; + /// the category of this func + func_type type; }; public: + /// noncopyable + LyXAction(LyXAction const &); + void operator=(LyXAction const &); + /// type for map between a function name and its action - typedef std::map func_map; + typedef std::map func_map; /// type for map between an action and its info - typedef std::map info_map; - /// type for a map between a pseudo-action and its stored action/arg - typedef std::map pseudo_map; - /// map from argument to pseudo-action - typedef std::map arg_item; - /// map from an action to all its dependent pseudo-actions - typedef std::map arg_map; + typedef std::map info_map; /// possible "permissions" for an action enum func_attrib { Noop = 0, //< nothing special about this func - ReadOnly = 1, //< can be used in RO mode (perhaps this should change) + ReadOnly = 1, //< can be used in RO mode (perhaps this should change); no automatic markDirty NoBuffer = 2, //< Can be used when there is no document open - Argument = 4 //< Requires argument + Argument = 4, //< Requires argument + NoUpdate = 8, //< Does not (usually) require update + SingleParUpdate = 16 //< Usually only requires this par updated }; LyXAction(); @@ -66,25 +77,15 @@ public: * If you include arguments in func_name, a new pseudoaction * will be created if needed. */ - int LookupFunc(string const & func_name); - - /// Returns a pseudo-action given an action and its argument. - int getPseudoAction(kb_action action, string const & arg); - - /** - * Given a pseudo-action, return the real action and - * associated argument - */ - FuncRequest retrieveActionArg(int pseudo) const; - - /// Search for an existent pseudoaction, return -1 if it doesn't exist. - int searchActionArg(kb_action action, string const & arg) const; + FuncRequest lookupFunc(std::string const & func_name) const; /// Return the name (and argument) associated with the given (pseudo) action - string const getActionName(int action) const; + std::string const getActionName(FuncCode action) const; + + func_type const getActionType(FuncCode action) const; /// True if the command has `flag' set - bool funcHasFlag(kb_action action, func_attrib flag) const; + bool funcHasFlag(FuncCode action, func_attrib flag) const; /// iterator across all real actions typedef func_map::const_iterator const_func_iterator; @@ -99,7 +100,7 @@ private: /// populate the action container with our actions void init(); /// add the given action - void newFunc(kb_action, string const & name, unsigned int attrib); + void newFunc(FuncCode, std::string const & name, unsigned int attrib, func_type type); /** * This is a list of all the LyXFunc names with the @@ -114,21 +115,12 @@ private: * command attributes (ro) */ info_map lyx_info_map; - - /** - * A mapping from the automatically created pseudo action number - * to the real action and its argument. - */ - pseudo_map lyx_pseudo_map; - - /** - * A (multi) mapping from the lyx action to all the generated - * pseudofuncs and the arguments the action should use. - */ - arg_map lyx_arg_map; }; /// singleton instance extern LyXAction lyxaction; + +} // namespace lyx + #endif // LYXACTION_H