17 #ifndef _GAZEBO_GUI_KEYEVENTHANDLER_HH_
18 #define _GAZEBO_GUI_KEYEVENTHANDLER_HH_
23 #include <boost/function.hpp>
37 class KeyEventHandlerPrivate;
41 class GZ_GUI_VISIBLE KeyEventHandler :
public SingletonT<KeyEventHandler>
45 public:
typedef boost::function<bool (const common::KeyEvent &_event)>
55 public: Filter(
const std::string &_name,
57 : name(_name), func(_func) {}
62 public:
bool operator==(
const Filter &_f)
const
64 return this->name == _f.name;
70 public:
bool operator==(
const std::string &_f)
const
72 return this->name == _f;
76 public: std::string name;
79 public: KeyEventFilter func;
83 private: KeyEventHandler();
86 private:
virtual ~KeyEventHandler();
91 public:
void AddPressFilter(
const std::string &_name,
92 KeyEventFilter _filter);
97 public:
void AddReleaseFilter(
const std::string &_name,
98 KeyEventFilter _filter);
102 public:
void RemovePressFilter(
const std::string &_name);
106 public:
void RemoveReleaseFilter(
const std::string &_name);
111 public:
bool HandlePress(
const common::KeyEvent &_event);
116 public:
bool HandleRelease(
const common::KeyEvent &_event);
120 public:
bool AutoRepeat()
const;
124 public:
void SetAutoRepeat(
const bool _autorepeat);
130 private:
void Add(
const std::string &_name, KeyEventFilter _filter,
131 std::list<Filter> &_list);
136 private:
void Remove(
const std::string &_name, std::list<Filter> &_list);
142 private:
bool Handle(
const common::KeyEvent &_event,
143 std::list<Filter> &_list);
146 private:
friend class SingletonT<KeyEventHandler>;
150 private: std::unique_ptr<KeyEventHandlerPrivate> dataPtr;
Singleton template class.
Definition: SingletonT.hh:33