1 #ifndef __lib_driver_action_h
2 #define __lib_driver_action_h
4 #include <lib/base/object.h>
6 #include <lib/python/python.h>
12 SWIG_IGNORE(eActionMap);
13 class eActionMap: public iObject
15 DECLARE_REF(eActionMap);
24 void bindAction(const std::string &context, int priority, int id, eWidget *widget);
25 void unbindAction(eWidget *widget, int id);
28 void bindAction(const std::string &context, int priority, SWIG_PYOBJECT(ePyObject) function);
29 void unbindAction(const std::string &context, SWIG_PYOBJECT(ePyObject) function);
31 void bindKey(const std::string &domain, const std::string &device, int key, int flags, const std::string &context, const std::string &action);
32 void unbindKeyDomain(const std::string &domain);
34 void keyPressed(const std::string &device, int key, int flags);
37 static RESULT getInstance(ePtr<eActionMap> &);
39 static eActionMap *instance;
43 :m_prev_seen_make_key(-1)
45 // eActionContext *m_context;
46 std::string m_context; // FIXME
53 int m_prev_seen_make_key;
56 std::multimap<int, eActionBinding> m_bindings;
58 friend struct compare_string_keybind_native;
59 struct eNativeKeyBinding
66 // eActionContext *m_context;
70 std::multimap<std::string, eNativeKeyBinding> m_native_keys;
72 friend struct compare_string_keybind_python;
73 struct ePythonKeyBinding
83 std::multimap<std::string, ePythonKeyBinding> m_python_keys;
86 SWIG_TEMPLATE_TYPEDEF(ePtr<eActionMap>, eActionMap);
87 SWIG_EXTEND(ePtr<eActionMap>,
88 static ePtr<eActionMap> getInstance()
90 extern ePtr<eActionMap> NewActionMapPtr(void);
91 return NewActionMapPtr();