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): --