]> git.lyx.org Git - lyx.git/blobdiff - src/kbmap.h
gettext support, fast_start option, scons all, mingw bug fix and some cleanup for...
[lyx.git] / src / kbmap.h
index 70dc5e81920932a40a0df8131bdb689afdb143cf..63bf3c05db07f3a764572e57f5155b4cb6e353e7 100644 (file)
@@ -1,21 +1,28 @@
 // -*- C++ -*-
 /**
  * \file kbmap.h
- * Copyright 1995-2002 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes <larsbj@lyx.org>
- * \author John Levon <moz@compsoc.man.ac.uk>
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
  */
 
 #ifndef KBMAP_H
 #define KBMAP_H
 
-#include "LString.h"
+#include "funcrequest.h"
+
 #include "frontends/key_state.h"
 #include "frontends/LyXKeySym.h"
 
+#include <boost/shared_ptr.hpp>
+
 #include <vector>
+#include <deque>
 
 class kb_sequence;
 
@@ -28,32 +35,50 @@ public:
         * occurs.
         * See kb_sequence::parse for the syntax of the seq string
         */
-       string::size_type bind(string const & seq, int action);
+       std::string::size_type bind(std::string const & seq, FuncRequest const & func);
+
+       // Parse a bind file
+       bool read(std::string const & bind_file);
 
        /// print all available keysyms
-       string const print() const;
+       std::string const print() const;
 
        /**
         * Look up a key press in the keymap.
         * @param key the keysym
         * @param mod the modifiers
         * @param seq the current key sequence so far
-        * @return the action / LFUN_PREFIX / LFUN_UNKNOWN_ACTION
+        * @return the action / LFUN_COMMAND_PREFIX / LFUN_UNKNOWN_ACTION
         */
-       int lookup(LyXKeySymPtr key,
-                  key_modifier::state mod, kb_sequence * seq) const;
+       FuncRequest const &
+       lookup(LyXKeySymPtr key,
+              key_modifier::state mod, kb_sequence * seq) const;
+
+       ///
+       typedef std::deque<kb_sequence> Bindings;
 
        /// Given an action, find all keybindings.
-       string const findbinding(int action,
-                                string const & prefix = string()) const;
+       Bindings findbindings(FuncRequest const & func) const;
+
+       /// Given an action, print the keybindings.
+       std::string const printbindings(FuncRequest const & func) const;
+
+       /**
+        *  Given an action, find the first 1-key binding (if it exists).
+        *  The LyXKeySym pointer is 0 is no key is found.
+        *  [only used by the Qt/Mac frontend]
+        */
+       std::pair<LyXKeySym const *, key_modifier::state>
+       find1keybinding(FuncRequest const & func) const;
+
 
        /**
         * Returns a string of the given keysym, with modifiers.
         * @param key the key as a keysym
         * @param mod the modifiers
         */
-       static string const printKeysym(LyXKeySymPtr key,
-                                       key_modifier::state mod);
+       static std::string const printKeySym(LyXKeySym const & key,
+                                            key_modifier::state mod);
 
        typedef std::pair<key_modifier::state, key_modifier::state> modifier_pair;
 
@@ -70,17 +95,26 @@ private:
                boost::shared_ptr<kb_keymap> table;
 
                /// Action for !prefix keys
-               int action;
+               FuncRequest func;
        };
 
        /**
         * Define an action for a key sequence.
         * @param r internal recursion level
         */
-       void defkey(kb_sequence * seq, int action, unsigned int r = 0);
+       void defkey(kb_sequence * seq, FuncRequest const & func,
+                   unsigned int r = 0);
 
        ///  Returns a string of the given key
-       string const printKey(kb_key const & key) const;
+       std::string const printKey(kb_key const & key) const;
+
+       /**
+        * Given an action, find all keybindings
+        * @param func the action
+        * @param prefix a sequence to prepend the results
+        */
+       Bindings findbindings(FuncRequest const & func,
+                             kb_sequence const & prefix) const;
 
        /// is the table empty ?
        bool empty() const {