Enlightenment CVS committal Author : ulisses Project : e17 Module : proto/python-efl
Dir : e17/proto/python-efl/python-edje/edje Modified Files: edje.c_edje.pyx edje.c_edje_object.pxi Log Message: More metaclass work. - changed EdjeMeta to EdjeObjectMeta and moved to edje object's .pxi - fixed EdjeObjectMeta to inherit from EvasObjectMeta (and not EvasMeta) - removed specific function to install metaclass (we just need one) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje.pyx,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- edje.c_edje.pyx 8 Oct 2007 00:04:08 -0000 1.7 +++ edje.c_edje.pyx 8 Oct 2007 15:15:58 -0000 1.8 @@ -237,38 +237,3 @@ include "edje.c_edje_message.pxi" include "edje.c_edje_object.pxi" - - -class EdjeMeta(evas.c_evas.EvasMeta): - def __init__(cls, name, bases, dict_): - evas.c_evas.EvasMeta.__init__(cls, name, bases, dict_) - cls._fetch_callbacks() - - def _fetch_callbacks(cls): - if "__edje_signal_callbacks__" in cls.__dict__: - return - - cls.__edje_signal_callbacks__ = [] - cls.__edje_message_callbacks__ = [] - cls.__edje_text_callbacks__ = [] - - sig_append = cls.__edje_signal_callbacks__.append - msg_append = cls.__edje_message_callbacks__.append - txt_append = cls.__edje_text_callbacks__.append - - for name in dir(cls): - val = getattr(cls, name) - if not callable(val): - continue - - if hasattr(val, "edje_signal_callback"): - sig_data = getattr(val, "edje_signal_callback") - sig_append((name, sig_data)) - elif hasattr(val, "edje_message_handler"): - msg_append(name) - elif hasattr(val, "edje_text_change_callback"): - txt_append(name) - - -# installing metaclass for all extension types -_edje_install_metaclass(EdjeMeta) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje_object.pxi,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- edje.c_edje_object.pxi 8 Oct 2007 00:04:08 -0000 1.21 +++ edje.c_edje_object.pxi 8 Oct 2007 15:15:58 -0000 1.22 @@ -727,11 +727,41 @@ edje_object_signal_emit(self.obj, emission, source) -evas.c_evas._object_mapping_register("edje", Edje) +class EdjeObjectMeta(evas.c_evas.EvasObjectMeta): + def __init__(cls, name, bases, dict_): + evas.c_evas.EvasObjectMeta.__init__(cls, name, bases, dict_) + cls._fetch_callbacks() + + def _fetch_callbacks(cls): + if "__edje_signal_callbacks__" in cls.__dict__: + return + + cls.__edje_signal_callbacks__ = [] + cls.__edje_message_callbacks__ = [] + cls.__edje_text_callbacks__ = [] + + sig_append = cls.__edje_signal_callbacks__.append + msg_append = cls.__edje_message_callbacks__.append + txt_append = cls.__edje_text_callbacks__.append + + for name in dir(cls): + val = getattr(cls, name) + if not callable(val): + continue + + if hasattr(val, "edje_signal_callback"): + sig_data = getattr(val, "edje_signal_callback") + sig_append((name, sig_data)) + elif hasattr(val, "edje_message_handler"): + msg_append(name) + elif hasattr(val, "edje_text_change_callback"): + txt_append(name) cdef extern from "Python.h": cdef python.PyTypeObject PyEdje_Type # hack to install metaclass -cdef void _edje_install_metaclass(object metaclass): - _install_metaclass(&PyEdje_Type, metaclass) +_install_metaclass(&PyEdje_Type, EdjeObjectMeta) + + +evas.c_evas._object_mapping_register("edje", Edje) ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs