MachineIntelligenceCore:Toolchain
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
KeyHandlerRegistry.hpp
Go to the documentation of this file.
1 
23 #ifndef SRC_CONFIGURATION_KEYHANDLERREGISTRY_HPP_
24 #define SRC_CONFIGURATION_KEYHANDLERREGISTRY_HPP_
25 
26 #include <map>
27 
28 #include <boost/function.hpp>
29 #include <boost/bind.hpp>
30 
32 
33 #include <logger/Log.hpp>
34 
35 
36 namespace mic {
37  namespace application {
38 
39  // function pointer type
40  // typedef void (*OptionFunction)(void);
41  //typedef std::map<char, std::pair<std::string, OptionFunction> > OptionMap_t;
42  //typedef std::map<char, OptionFunction > OptionMap_t;
43  //boost::function<void ()> f1( boost::bind( &myclass::fun1, this ) );
44  //typedef std::map<char, boost::function<void ()> > OptionMap_t;
45 
46 
51  typedef std::pair<std::string, boost::function<void ()> > Handler;
52 
57  typedef std::pair<char, Handler > KeyHandler;
58 
63 #define MAKE_KEYHANDLER(KEY, DESCRIPTION, METHOD) std::make_pair((char)(KEY), std::make_pair( (DESCRIPTION), (METHOD) ) )
64 
65 
70  typedef std::map<char, Handler > KeyHandlerMap;
71 
76 #define REGISTER_KEY_HANDLER(KEY, DESCRIPTION, METHOD) key_handler_map.insert(std::make_pair((char)(KEY), std::make_pair( (DESCRIPTION), boost::bind(METHOD, this ) ) ) )
77 
84  public:
85 
90 
94  virtual ~KeyHandlerRegistry();
95 
100  virtual void keyboardHandler(unsigned char key);
101 
110  template<class SlotClass>
111  void registerKeyhandler(char key_, std::string description_, void (SlotClass::*function_)(void), SlotClass *obj_) {
112  //boost::function<void ()> f = boost::bind(function_, obj_ );
113  key_handler_map.insert(std::make_pair((char) (key_), std::make_pair((description_), boost::bind(function_, obj_))));
114  }
115 
116  /*void registerKeyhandler(KeyHandler kh_) {
117 
118  }*/
119 
120  std::string changeInputMode(unsigned char finishKey_);
122  unsigned char finishKey;
123  std::string payload;
124 
125  protected:
126 
131 
135  void keyhandlerQuit(void);
136 
140  void keyhandlerDisplayOptions(void);
141 
146 
151 
155  void keyhandlerToggleLearning(void);
156 
160  void keyhandlerPause(void);
161 
165  void keyhandlerSingleStep(void);
166 
170  void keyhandlerSlowDown(void);
171 
175  void keyhandlerFastenUp(void);
176 
181 
185  void keyhandlerDisplayAppState(void);
186 
187 
188  };
189 
190  } /* namespace application */
191 } /* namespace mic */
192 
193 #endif /* SRC_CONFIGURATION_KEYHANDLERREGISTRY_HPP_ */
std::string changeInputMode(unsigned char finishKey_)
std::pair< char, Handler > KeyHandler
Basic handler type representing <key, description, handler function> triplet.
std::map< char, Handler > KeyHandlerMap
Basic type storing <key, description, handler function> triplets.
Contains definitions of main logger-related macros.
std::pair< std::string, boost::function< void()> > Handler
Basic handler type representing <description, handler function> pair.
ApplicationState declaration.
Abstract class responsible for handling the keypressed callbacks. Implements several basic callbacks ...
virtual void keyboardHandler(unsigned char key)
void registerKeyhandler(char key_, std::string description_, void(SlotClass::*function_)(void), SlotClass *obj_)