Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl
Dir : e17/proto/python-efl/python-ecore/ecore Modified Files: ecore.c_ecore.pyx ecore.c_ecore_animator.pxi ecore.c_ecore_fd_handler.pxi ecore.c_ecore_idle_enterer.pxi ecore.c_ecore_idle_exiter.pxi ecore.c_ecore_idler.pxi ecore.c_ecore_timer.pxi Log Message: Documentation and minor fixes. TODO: ecore.evas =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore.pyx,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore.pyx 13 May 2007 20:51:38 -0000 1.4 +++ ecore.c_ecore.pyx 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,9 @@ cimport python +__extra_epydoc_fields__ = ( + ("parm", "Parameter", "Parameters"), # epydoc don't support pyrex properly + ) + def init(): return ecore_init() @@ -9,26 +13,38 @@ def main_loop_quit(): + "Quit main loop, have L{main_loop_begin()} to return." ecore_main_loop_quit() def main_loop_begin(): + "Enter main loop, this function will not return until L{main_loop_quit()}." ecore_main_loop_begin() def main_loop_iterate(): + "Force main loop to process requests (timers, fd handlers, idlers, ...)" ecore_main_loop_iterate() def time_get(): + """Get current time, in seconds. + + @rtype: float + """ return ecore_time_get() def animator_frametime_set(double frametime): + """Set time between frames (M{\frac{1}{frames-per-second}}). + + @parm: B{frametime} in seconds. + """ ecore_animator_frametime_set(frametime) def animator_frametime_get(): + "@rtype: float" return ecore_animator_frametime_get() include "ecore.c_ecore_timer.pxi" =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_animator.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_animator.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_animator.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef int animator_cb(void *_td): cdef Animator obj cdef int r @@ -9,7 +11,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -19,6 +20,25 @@ cdef class Animator: + """Creates an animator to tick off at every animaton tick during main loop + execution. + + This class represents an animator that will call the given B{func} + every N seconds where N is the frametime interval set by + L{animator_frametime_set()}. The function will be passed any extra + parameters given to constructor. + + When the animator B{func} is called, it must return a value of either + True or False (remember that Python returns None if no value is + explicitly returned and None evaluates to False). If it returns + B{True}, it will be called again at the next tick, or if it returns + B{False} it will be deleted automatically making any references/handles + for it invalid. + + Animators should be stopped/deleted by means of L{delete()} or + returning False from B{func}, otherwise they'll continue alive, even + if the current python context delete it's reference to it. + """ def __init__(self, func, *args, **kargs): if not callable(func): raise TypeError("Parameter 'func' must be callable") @@ -52,14 +72,20 @@ return self.func(*self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_animator_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def animator_add(func, *args, **kargs): + """L{Animator} factory, for C-api compatibility. + + @rtype: L{Animator} + """ return Animator(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_fd_handler.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_fd_handler.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_fd_handler.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef void fd_handler_prepare_cb(void *_td, Ecore_Fd_Handler *fdh): cdef FdHandler obj cdef int r @@ -11,7 +13,6 @@ try: func(obj, *args, **kargs) except Exception, e: - import traceback traceback.print_exc() @@ -35,7 +36,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -45,6 +45,23 @@ cdef class FdHandler: + """Adds a callback for activity on the given file descriptor. + + B{func} will be called during the execution of B{main_loop_begin()} + when the file descriptor is available for reading, or writing, or both. + + When the handler B{func} is called, it must return a value of + either True or False (remember that Python returns None if no value + is explicitly returned and None evaluates to False). If it returns + B{True}, it will continue to montior the given file descriptor, or if + it returns B{False} it will be deleted automatically making any + references/handles for it invalid. + + FdHandler use includes: + - handle multiple socket connections using a single process; + - thread wake-up and synchronization; + - non-blocking file description operations. + """ def __init__(self, fd, int flags, func, *args, **kargs): if not callable(func): raise TypeError("Parameter 'func' must be callable") @@ -101,15 +118,18 @@ return self.func(self, *self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_main_fd_handler_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def fd_get(self): + "@rtype: int" return ecore_main_fd_handler_fd_get(self.obj) property fd: @@ -117,26 +137,47 @@ return self.fd_get() def active_get(self, int flags_query): + """Return if read, write or error, or a combination thereof, is + active on the file descriptor of the given FD handler. + + @rtype: bool + """ cdef Ecore_Fd_Handler_Flags v v = <Ecore_Fd_Handler_Flags>flags_query - return ecore_main_fd_handler_active_get(self.obj, v) + return bool(ecore_main_fd_handler_active_get(self.obj, v)) def active_set(self, int flags): + """Set what active streams the given FdHandler should be monitoring. + + @parm: B{flags} one of: + - ECORE_FD_NONE + - ECORE_FD_READ + - ECORE_FD_WRITE + - ECORE_FD_ERROR + - ECORE_FD_ALL + """ cdef Ecore_Fd_Handler_Flags v v = <Ecore_Fd_Handler_Flags>flags_query ecore_main_fd_handler_active_set(self.obj, v) def can_read(self): - return ecore_main_fd_handler_active_get(self.obj, ECORE_FD_READ) + "@rtype: bool" + return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_READ)) def can_write(self): - return ecore_main_fd_handler_active_get(self.obj, ECORE_FD_WRITE) + "@rtype: bool" + return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_WRITE)) def has_error(self): - return ecore_main_fd_handler_active_get(self.obj, ECORE_FD_ERROR) + "@rtype: bool" + return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_ERROR)) def prepare_callback_set(self, func, *args, **kargs): + """Set a function to call becore doing the select() on the fd. + + Signature: C{function(object, *args, **kargs)} + """ if func is None: self._prepare_callback = None ecore_main_fd_handler_prepare_callback_set(self.obj, NULL, NULL) @@ -150,4 +191,8 @@ def fd_handler_add(fd, int flags, func, *args, **kargs): + """L{FdHandler} factory, for C-api compatibility. + + @rtype: L{FdHandler} + """ return FdHandler(fd, flags, func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idle_enterer.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_idle_enterer.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_idle_enterer.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef int idle_enterer_cb(void *_td): cdef IdleEnterer obj cdef int r @@ -9,7 +11,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -19,6 +20,25 @@ cdef class IdleEnterer: + """Add an idle enterer handler. + + This class represents a function that will be called before systems + enter idle. The function will be passed any extra parameters given + to constructor. + + When the idle enterer B{func} is called, it must return a value of + either True or False (remember that Python returns None if no value + is explicitly returned and None evaluates to False). If it returns + B{True}, it will be called again when system become idle, or if it + returns B{False} it will be deleted automatically making any + references/handles for it invalid. + + Idle enterers should be stopped/deleted by means of L{delete()} or + returning False from B{func}, otherwise they'll continue alive, even + if the current python context delete it's reference to it. + + Idle enterer are useful for post-work jobs, like garbage collection. + """ def __init__(self, func, *args, **kargs): if not callable(func): raise TypeError("Parameter 'func' must be callable") @@ -52,14 +72,20 @@ return self.func(*self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_idle_enterer_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def idle_enterer_add(func, *args, **kargs): + """L{IdleEnterer} factory, for C-api compatibility. + + @rtype: L{IdleEnterer} + """ return IdleEnterer(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idle_exiter.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_idle_exiter.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_idle_exiter.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef int idle_exiter_cb(void *_td): cdef IdleExiter obj cdef int r @@ -9,7 +11,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -19,6 +20,23 @@ cdef class IdleExiter: + """Add an idle exiter handler. + + This class represents a function that will be called before systems + exits idle. The function will be passed any extra parameters given + to constructor. + + When the idle exiter B{func} is called, it must return a value of + either True or False (remember that Python returns None if no value + is explicitly returned and None evaluates to False). If it returns + B{True}, it will be called again when system become idle, or if it + returns B{False} it will be deleted automatically making any + references/handles for it invalid. + + Idle exiters should be stopped/deleted by means of L{delete()} or + returning False from B{func}, otherwise they'll continue alive, even + if the current python context delete it's reference to it. + """ def __init__(self, func, *args, **kargs): if not callable(func): raise TypeError("Parameter 'func' must be callable") @@ -52,14 +70,20 @@ return self.func(*self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_idle_exiter_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def idle_exiter_add(func, *args, **kargs): + """L{IdleExiter} factory, for C-api compatibility. + + @rtype: L{IdleExiter} + """ return IdleExiter(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idler.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_idler.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_idler.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef int idler_cb(void *_td): cdef Idler obj cdef int r @@ -9,7 +11,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -19,6 +20,25 @@ cdef class Idler: + """Add an idler handler. + + This class represents an idler on the event loop that will + call B{func} when there is nothing more to do. The function will + be passed any extra parameters given to constructor. + + When the idler B{func} is called, it must return a value of either + True or False (remember that Python returns None if no value is + explicitly returned and None evaluates to False). If it returns + B{True}, it will be called again when system become idle, or if it + returns B{False} it will be deleted automatically making any + references/handles for it invalid. + + Idlers should be stopped/deleted by means of L{delete()} or + returning False from B{func}, otherwise they'll continue alive, even + if the current python context delete it's reference to it. + + Idlers are useful for progressively prossessing data without blocking. + """ def __init__(self, func, *args, **kargs): self.func = func self.args = args @@ -50,14 +70,20 @@ return self.func(*self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_idler_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def idler_add(func, *args, **kargs): + """L{Idler} factory, for C-api compatibility. + + @rtype: L{Idler} + """ return Idler(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_timer.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore.c_ecore_timer.pxi 2 Sep 2007 15:11:54 -0000 1.4 +++ ecore.c_ecore_timer.pxi 29 Sep 2007 00:32:30 -0000 1.5 @@ -1,5 +1,7 @@ # This file is included verbatim by c_ecore.pyx +import traceback + cdef int timer_cb(void *_td): cdef Timer obj cdef int r @@ -9,7 +11,6 @@ try: r = bool(obj._exec()) except Exception, e: - import traceback traceback.print_exc() r = 0 @@ -19,7 +20,25 @@ cdef class Timer: + """Creates a timer to call the given function in the given period of time. + + This class represents a timer that will call the given B{func} every + B{interval} seconds. The function will be passed any extra + parameters given to constructor. + + When the timer B{func} is called, it must return a value of either + True or False (remember that Python returns None if no value is + explicitly returned and None evaluates to False). If it returns + B{True}, it will be called again at the next interval, or if it returns + B{False} it will be deleted automatically making any references/handles + for it invalid. + + Timers should be stopped/deleted by means of L{delete()} or + returning False from B{func}, otherwise they'll continue alive, even + if the current python context delete it's reference to it. + """ def __init__(self, double interval, func, *args, **kargs): + "@parm: B{interval} interval in seconds (float)." if not callable(func): raise TypeError("Parameter 'func' must be callable") self._interval = interval @@ -54,19 +73,23 @@ return self.func(*self.args, **self.kargs) def delete(self): + "Stop callback emission and free internal resources." if self.obj != NULL: ecore_timer_del(self.obj) self.obj = NULL python.Py_DECREF(self) def stop(self): + "Alias for L{delete()}." self.delete() def interval_set(self, double t): + "Change interval to call function." self._interval = t ecore_timer_interval_set(self.obj, t) def interval_get(self): + "@rtype: float" return self._interval property interval: @@ -79,4 +102,8 @@ def timer_add(double t, func, *args, **kargs): + """L{Timer} factory, for C-api compatibility. + + @rtype: L{Timer} + """ return Timer(t, func, *args, **kargs) ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs