replace some more Clock() by ObsoleteSource redirect (and fix skin_default), by Morit...
[enigma2.git] / lib / actions / action.h
index f2e0d8f460d5730374f7fcdde3613c7e32f66900..9628a69a32ad5f1d0dcc0c7efbec4dd91908c7ff 100644 (file)
@@ -13,6 +13,7 @@
 
 class eWidget;
 
+SWIG_IGNORE(eActionMap);
 class eActionMap: public iObject
 {
 DECLARE_REF(eActionMap);
@@ -30,24 +31,30 @@ public:
 
        void bindAction(const std::string &context, int priority, SWIG_PYOBJECT(ePyObject) function);
        void unbindAction(const std::string &context, SWIG_PYOBJECT(ePyObject) function);
-       
-       void bindKey(const std::string &device, int key, int flags, const std::string &context, const std::string &action);
+
+       void bindKey(const std::string &domain, const std::string &device, int key, int flags, const std::string &context, const std::string &action);
+       void unbindKeyDomain(const std::string &domain);
        
        void keyPressed(const std::string &device, int key, int flags);
        
-       static RESULT getInstance(ePtr<eActionMap> &ptr);
 #ifndef SWIG
+       static RESULT getInstance(ePtr<eActionMap> &);
 private:
        static eActionMap *instance;
        struct eActionBinding
        {
+               eActionBinding()
+                       :m_prev_seen_make_key(-1)
+               {}
 //             eActionContext *m_context;
                std::string m_context; // FIXME
+               std::string m_domain;
                
                ePyObject m_fnc;
                
                eWidget *m_widget;
                int m_id;
+               int m_prev_seen_make_key;
        };
        
        std::multimap<int, eActionBinding> m_bindings;
@@ -56,6 +63,7 @@ private:
        struct eNativeKeyBinding
        {
                std::string m_device;
+               std::string m_domain;
                int m_key;
                int m_flags;
                
@@ -69,6 +77,7 @@ private:
        struct ePythonKeyBinding
        {
                std::string m_device;
+               std::string m_domain;
                int m_key;
                int m_flags;
                
@@ -78,5 +87,13 @@ private:
        std::multimap<std::string, ePythonKeyBinding> m_python_keys;
 #endif
 };
+SWIG_TEMPLATE_TYPEDEF(ePtr<eActionMap>, eActionMap);
+SWIG_EXTEND(ePtr<eActionMap>,
+       static ePtr<eActionMap> getInstance()
+       {
+               extern ePtr<eActionMap> NewActionMapPtr(void);
+               return NewActionMapPtr();
+       }
+);
 
 #endif