1 #ifndef __lib_driver_action_h
2 #define __lib_driver_action_h
4 #include <lib/base/object.h>
9 #define _POSIX_C_SOURCE 200112L
10 #include <lib/python/python.h>
16 class eActionMap: public iObject
18 DECLARE_REF(eActionMap);
27 void bindAction(const std::string &context, int priority, int id, eWidget *widget);
28 void unbindAction(eWidget *widget, int id);
31 void bindAction(const std::string &context, int priority, PyObject *function);
32 void unbindAction(const std::string &context, PyObject *function);
34 void bindKey(const std::string &device, int key, int flags, const std::string &context, const std::string &action);
36 void keyPressed(const std::string &device, int key, int flags);
38 static RESULT getInstance(ePtr<eActionMap> &ptr);
41 static eActionMap *instance;
44 // eActionContext *m_context;
45 std::string m_context; // FIXME
53 std::multimap<int, eActionBinding> m_bindings;
55 friend struct compare_string_keybind_native;
56 struct eNativeKeyBinding
62 // eActionContext *m_context;
66 std::multimap<std::string, eNativeKeyBinding> m_native_keys;
68 friend struct compare_string_keybind_python;
69 struct ePythonKeyBinding
78 std::multimap<std::string, ePythonKeyBinding> m_python_keys;