openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
action.h
Go to the documentation of this file.
1 #ifndef __lib_driver_action_h
2 #define __lib_driver_action_h
3 
4 #include <lib/base/object.h>
5 #include <lib/gui/ewidget.h>
6 
7 #include <lib/python/python.h>
8 #include <string>
9 #include <map>
10 #include <vector>
11 
13 class eActionMap: public iObject
14 {
15  DECLARE_REF(eActionMap);
16 #ifdef SWIG
17  eActionMap();
18  ~eActionMap();
19 #endif
20 public:
21 #ifndef SWIG
22  eActionMap();
23  ~eActionMap();
24  void bindAction(const std::string &context, int64_t priority, int id, eWidget *widget);
25  void unbindAction(eWidget *widget, int id);
26 #endif
27 
28  void bindAction(const std::string &context, int64_t priority, SWIG_PYOBJECT(ePyObject) function);
29  void unbindAction(const std::string &context, SWIG_PYOBJECT(ePyObject) function);
30 
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 bindTranslation(const std::string &domain, const std::string &device, int keyin, int keyout, int toggle);
33  void bindToggle(const std::string &domain, const std::string &device, int togglekey);
34  void unbindNativeKey(const std::string &context, int action);
35  void unbindPythonKey(const std::string &context, int key, const std::string &action);
36  void unbindKeyDomain(const std::string &domain);
37 
38  void keyPressed(const std::string &device, int key, int flags);
39 
40 #ifndef SWIG
42 private:
43  static eActionMap *instance;
44  struct eActionBinding
45  {
46  eActionBinding()
47  :m_prev_seen_make_key(-1), m_long_key_pressed(false)
48  {}
49 // eActionContext *m_context;
50  std::string m_context; // FIXME
51  std::string m_domain;
52 
53  ePyObject m_fnc;
54 
55  eWidget *m_widget;
56  int m_id;
57  int m_prev_seen_make_key;
58  bool m_long_key_pressed;
59  };
60 
61  std::multimap<int64_t, eActionBinding> m_bindings;
62 
63  struct eTranslationBinding
64  {
65  int m_keyin;
66  int m_keyout;
67  int m_toggle;
68  std::string m_domain;
69  };
70  struct eDeviceBinding
71  {
72  int m_togglekey;
73  int m_toggle;
74  std::vector<eTranslationBinding> m_translations;
75  };
76  std::map <std::string, eDeviceBinding> m_rcDevices;
77 
79  struct eNativeKeyBinding
80  {
81  std::string m_device;
82  std::string m_domain;
83  int m_key;
84  int m_flags;
85 
86 // eActionContext *m_context;
87  int m_action;
88  };
89 
90  std::multimap<std::string, eNativeKeyBinding> m_native_keys;
91 
93  struct ePythonKeyBinding
94  {
95  std::string m_device;
96  std::string m_domain;
97  int m_key;
98  int m_flags;
99 
100  std::string m_action;
101  };
102 
103  std::multimap<std::string, ePythonKeyBinding> m_python_keys;
104 #endif
105 };
108  static ePtr<eActionMap> getInstance()
109  {
110  extern ePtr<eActionMap> NewActionMapPtr(void);
111  return NewActionMapPtr();
112  }
113 );
114 
115 #endif
ePtr< eActionMap > NewActionMapPtr(void)
Definition: action.cpp:341
SWIG_EXTEND(ePtr< eActionMap >, static ePtr< eActionMap > getInstance() { extern ePtr< eActionMap > NewActionMapPtr(void);return NewActionMapPtr();})
SWIG_IGNORE(eActionMap)
SWIG_TEMPLATE_TYPEDEF(ePtr< eActionMap >, eActionMap)
Definition: action.h:14
friend struct compare_string_keybind_python
Definition: action.h:92
void bindToggle(const std::string &domain, const std::string &device, int togglekey)
Definition: action.cpp:175
eActionMap()
Definition: action.cpp:27
void unbindAction(const std::string &context, SWIG_PYOBJECT(ePyObject) function)
void unbindPythonKey(const std::string &context, int key, const std::string &action)
Definition: action.cpp:138
~eActionMap()
Definition: action.cpp:32
void bindAction(const std::string &context, int64_t priority, SWIG_PYOBJECT(ePyObject) function)
void bindTranslation(const std::string &domain, const std::string &device, int keyin, int keyout, int toggle)
Definition: action.cpp:151
void keyPressed(const std::string &device, int key, int flags)
Definition: action.cpp:221
void bindKey(const std::string &domain, const std::string &device, int key, int flags, const std::string &context, const std::string &action)
Definition: action.cpp:93
friend struct compare_string_keybind_native
Definition: action.h:78
void unbindKeyDomain(const std::string &domain)
Definition: action.cpp:194
static RESULT getInstance(ePtr< eActionMap > &)
Definition: action.cpp:37
void unbindAction(eWidget *widget, int id)
Definition: action.cpp:68
void bindAction(const std::string &context, int64_t priority, int id, eWidget *widget)
Definition: action.cpp:45
void unbindNativeKey(const std::string &context, int action)
Definition: action.cpp:125
Definition: smartptr.h:11
Definition: python.h:31
Definition: ewidget.h:14
Definition: object.h:15
priority
Definition: SystemPlugins/FastChannelChange/plugin.py:18
domain
Definition: CCcamInfo.py:252
device
Definition: LocationBox.py:28
action
Definition: lamedb2satxml.py:20
int RESULT
Definition: object.h:12
#define SWIG_PYOBJECT(x)
Definition: swig.h:23