// -*- C++ -*- #ifndef LYXACTION_H #define LYXACTION_H #ifdef __GNUG__ #pragma interface #endif #include "commandtags.h" class LString; /// Command name - action struct kb_func_table { /// char const * name; /// kb_action action; }; /** This class encapsulates LyX action and user command operations. */ class LyXAction { public: /// LyXAction(); /// ~LyXAction(); /** Returns an action tag from a string. Returns kb_action. Include arguments in func_name ONLY if you want to create new pseudo actions. */ int LookupFunc(char const * func_name); /** Returns an action tag which name is the most similar to a string. Don't include arguments, they would be ignored. */ int getApproxFunc(char const * func); /** Returns an action name the most similar to a string. Don't include arguments, they would be ignored. */ char const * getApproxFuncName(char const * func); /// Returns a pseudo-action given an action and its argument. int getPseudoAction(kb_action action, char const * arg); /// Retrieves the real action and its argument. int retrieveActionArg(int i, char const ** arg); /// Search for an existent pseudoaction, return -1 if it doesn't exist. int searchActionArg(kb_action action, char const * arg); /// Check if a value is a pseudo-action. bool isPseudoAction(int); /// Not sure if this function should be here int bindKey(char const * seq, int action); /// Return the name associated with command char const * getActionName(int action) const; /// Return one line help text associated with command char const * helpText(kb_action action) const; /// True if the command is Read Only (not allowed for RO buffers) bool isFuncRO(kb_action action) const; private: /// Standard commands static kb_func_table const * lyx_func_table; /// Number of commands int funcCount; /// Pseudoactions static kb_func_table * lyx_func_args; /// Pseudoaction index static int psd_idx; /// Last action index found int last_action_idx; }; /* -------------------- Inlines ------------------ */ inline bool LyXAction::isPseudoAction(int a) { return (a >= int(LFUN_LASTACTION)); } #endif