kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=9db6938f1e3600cedc4d77507b26826fdbffefee

commit 9db6938f1e3600cedc4d77507b26826fdbffefee
Author: Kai Huuhko <kai.huu...@gmail.com>
Date:   Thu Nov 7 11:35:03 2013 +0200

    Use types in objects' callback list definitions to simplify access.
    
    Also use a more descriptive name for Evas' event callback list.
---
 efl/elementary/object.pxd              |  3 ++-
 efl/evas/efl.evas_canvas.pxi           | 16 ++++++++--------
 efl/evas/efl.evas_canvas_callbacks.pxi |  4 ++--
 efl/evas/efl.evas_object.pxi           | 19 ++++++++-----------
 efl/evas/efl.evas_object_callbacks.pxi |  4 ++--
 include/efl.evas.pxd                   | 11 ++---------
 6 files changed, 24 insertions(+), 33 deletions(-)

diff --git a/efl/elementary/object.pxd b/efl/elementary/object.pxd
index 47786ec..508bad3 100644
--- a/efl/elementary/object.pxd
+++ b/efl/elementary/object.pxd
@@ -163,6 +163,7 @@ cdef class Canvas(evasCanvas):
 
 cdef class Object(evasObject):
     cdef:
-        object _elmcallbacks, _elm_event_cbs, _elm_signal_cbs
+        dict _elmcallbacks
+        list _elm_event_cbs, _elm_signal_cbs
         object cnp_drop_cb, cnp_drop_data
         object cnp_selection_loss_cb, cnp_selection_loss_data
diff --git a/efl/evas/efl.evas_canvas.pxi b/efl/evas/efl.evas_canvas.pxi
index 52d254c..b3f639d 100644
--- a/efl/evas/efl.evas_canvas.pxi
+++ b/efl/evas/efl.evas_canvas.pxi
@@ -19,7 +19,7 @@
 # cdef int _canvas_free_wrapper_resources(Canvas canvas) except 0:
 #     cdef int i
 #     for i from 0 <= i < evas_canvas_event_callbacks_len:
-#         canvas._callbacks[i] = None
+#         canvas._event_callbacks[i] = None
 #     return 1
 #
 #
@@ -28,7 +28,7 @@ cdef int _canvas_unregister_callbacks(Canvas canvas) except 0:
     cdef Evas_Event_Cb cb
     e = canvas.obj
     if e != NULL:
-        for i, lst in enumerate(canvas._callbacks):
+        for i, lst in enumerate(canvas._event_callbacks):
             if lst is not None:
                 cb = evas_canvas_event_callbacks[i]
                 evas_event_callback_del(e, i, cb)
@@ -40,12 +40,12 @@ cdef _canvas_add_callback_to_list(Canvas canvas, int type, 
func, args, kargs):
         raise ValueError("Invalid callback type")
 
     r = (func, args, kargs)
-    lst = canvas._callbacks[type]
+    lst = canvas._event_callbacks[type]
     if lst is not None:
         lst.append(r)
         return False
     else:
-        canvas._callbacks[type] = [r]
+        canvas._event_callbacks[type] = [r]
         return True
 
 
@@ -53,7 +53,7 @@ cdef _canvas_del_callback_from_list(Canvas canvas, int type, 
func):
     if type < 0 or type >= evas_canvas_event_callbacks_len:
         raise ValueError("Invalid callback type")
 
-    lst = canvas._callbacks[type]
+    lst = canvas._event_callbacks[type]
     if not lst:
         raise ValueError("Callback %s was not registered with type %d" %
                          (func, type))
@@ -68,7 +68,7 @@ cdef _canvas_del_callback_from_list(Canvas canvas, int type, 
func):
 
     lst.pop(i)
     if len(lst) == 0:
-        canvas._callbacks[type] = None
+        canvas._event_callbacks[type] = None
         return True
     else:
         return False
@@ -94,7 +94,7 @@ cdef class Canvas(Eo):
 
     """
     def __cinit__(self, *a, **ka):
-        self._callbacks = [None] * evas_canvas_event_callbacks_len
+        self._event_callbacks = [None] * evas_canvas_event_callbacks_len
 
     def __init__(self, method=None, size=None, viewport=None):
         self._set_obj(evas_new())
@@ -109,7 +109,7 @@ cdef class Canvas(Eo):
     def __dealloc__(self):
         if self.obj != NULL:
             _canvas_unregister_callbacks(self)
-        self._callbacks = None
+        self._event_callbacks = None
 
     def __str__(self):
         return ("%s Canvas(size=%s, method=%r)") % (Eo.__repr__(self),
diff --git a/efl/evas/efl.evas_canvas_callbacks.pxi 
b/efl/evas/efl.evas_canvas_callbacks.pxi
index 9731c74..01add1d 100644
--- a/efl/evas/efl.evas_canvas_callbacks.pxi
+++ b/efl/evas/efl.evas_canvas_callbacks.pxi
@@ -18,7 +18,7 @@
 
 cdef int cb_canvas_dispatcher(Canvas self, event, int type) except 0:
     # iterate over copy since users may delete callback from callback
-    lst = tuple(self._callbacks[type])
+    lst = tuple(self._event_callbacks[type])
     for func, args, kargs in lst:
         try:
             func(self, event, *args, **kargs)
@@ -29,7 +29,7 @@ cdef int cb_canvas_dispatcher(Canvas self, event, int type) 
except 0:
 
 cdef int cb_canvas_dispatcher2(Canvas self, int type) except 0:
     # iterate over copy since users may delete callback from callback
-    lst = tuple(self._callbacks[type])
+    lst = tuple(self._event_callbacks[type])
     for func, args, kargs in lst:
         try:
             func(self, *args, **kargs)
diff --git a/efl/evas/efl.evas_object.pxi b/efl/evas/efl.evas_object.pxi
index 0f642c0..3849026 100644
--- a/efl/evas/efl.evas_object.pxi
+++ b/efl/evas/efl.evas_object.pxi
@@ -22,7 +22,7 @@ from efl.utils.conversions cimport 
eina_list_objects_to_python_list
 cdef int _object_free_wrapper_resources(Object obj) except 0:
     cdef int i
     for i from 0 <= i < evas_object_event_callbacks_len:
-        obj._callbacks[i] = None
+        obj._event_callbacks[i] = None
     return 1
 
 
@@ -31,7 +31,7 @@ cdef int _object_unregister_callbacks(Object obj) except 0:
     cdef Evas_Object_Event_Cb cb
     o = obj.obj
     if o != NULL:
-        for i, lst in enumerate(obj._callbacks):
+        for i, lst in enumerate(obj._event_callbacks):
             if lst is not None:
                 cb = evas_object_event_callbacks[i]
                 evas_object_event_callback_del(o, i, cb)
@@ -44,7 +44,7 @@ cdef void obj_free_cb(void *data, Evas *e,
                       Evas_Object *obj, void *event_info) with gil:
     cdef Object self = <Object>data
 
-    lst = self._callbacks[enums.EVAS_CALLBACK_FREE]
+    lst = self._event_callbacks[enums.EVAS_CALLBACK_FREE]
     if lst is not None:
         for func, args, kargs in lst:
             try:
@@ -71,12 +71,12 @@ cdef _object_add_callback_to_list(Object obj, int type, 
func, args, kargs):
         raise ValueError("Invalid callback type")
 
     r = (func, args, kargs)
-    lst = obj._callbacks[type]
+    lst = obj._event_callbacks[type]
     if lst is not None:
         lst.append(r)
         return False
     else:
-        obj._callbacks[type] = [r]
+        obj._event_callbacks[type] = [r]
         return True
 
 
@@ -84,7 +84,7 @@ cdef _object_del_callback_from_list(Object obj, int type, 
func):
     if type < 0 or type >= evas_object_event_callbacks_len:
         raise ValueError("Invalid callback type")
 
-    lst = obj._callbacks[type]
+    lst = obj._event_callbacks[type]
     if not lst:
         raise ValueError("Callback %s was not registered with type %d" %
                          (func, type))
@@ -99,7 +99,7 @@ cdef _object_del_callback_from_list(Object obj, int type, 
func):
 
     lst.pop(i)
     if len(lst) == 0:
-        obj._callbacks[type] = None
+        obj._event_callbacks[type] = None
         return True
     else:
         return False
@@ -164,10 +164,7 @@ cdef class Object(Eo):
 
     """
     def __cinit__(self):
-        #
-        # TODO: Make this C only if possible
-        #
-        self._callbacks = [None] * evas_object_event_callbacks_len
+        self._event_callbacks = [None] * evas_object_event_callbacks_len
 
     def __init__(self, *args, **kwargs):
         if type(self) is Object:
diff --git a/efl/evas/efl.evas_object_callbacks.pxi 
b/efl/evas/efl.evas_object_callbacks.pxi
index 4766fcd..eaaf229 100644
--- a/efl/evas/efl.evas_object_callbacks.pxi
+++ b/efl/evas/efl.evas_object_callbacks.pxi
@@ -18,7 +18,7 @@
 
 cdef int cb_object_dispatcher(Object self, event, int type) except 0:
     # iterate over copy since users may delete callback from callback
-    lst = tuple(self._callbacks[type])
+    lst = tuple(self._event_callbacks[type])
     for func, args, kargs in lst:
         try:
             func(self, event, *args, **kargs)
@@ -29,7 +29,7 @@ cdef int cb_object_dispatcher(Object self, event, int type) 
except 0:
 
 cdef int cb_object_dispatcher2(Object self, int type) except 0:
     # iterate over copy since users may delete callback from callback
-    lst = tuple(self._callbacks[type])
+    lst = tuple(self._event_callbacks[type])
     for func, args, kargs in lst:
         try:
             func(self, *args, **kargs)
diff --git a/include/efl.evas.pxd b/include/efl.evas.pxd
index a6784a5..8161915 100644
--- a/include/efl.evas.pxd
+++ b/include/efl.evas.pxd
@@ -873,11 +873,7 @@ cdef class Rect:
 
 
 cdef class Canvas(Eo):
-#     cdef Evas *obj
-    cdef object _callbacks
-#
-#     cdef int _set_obj(self, Evas *obj) except 0
-#     cdef int _unset_obj(self) except 0
+    cdef list _event_callbacks
 
 
 cdef class Map(object):
@@ -885,10 +881,7 @@ cdef class Map(object):
 
 
 cdef class Object(Eo):
-#     cdef readonly Canvas evas
-    cdef object _callbacks
-    #     cdef int _unset_obj(self) except 0
-    #     cdef int _set_obj(self, Evas_Object *obj) except 0
+    cdef list _event_callbacks
 
 
 cdef class Rectangle(Object):

-- 


Reply via email to