def timeout_add( interval_in_ms, func , *args, **kargs):
    cfunc = c_void_p()
    def C_Callable( param ):
        retval = func( *args, **kargs )
        if not retval:
            cfuncs.remove(cfunc)
            retval = 0
        return retval
    cfunc = GSourceFunc(C_Callable)
    cfuncs.append(cfunc)
    GMainContext.g_timeout_add(c_uint(interval_in_ms), cfunc, cfunc )
def idle_add( func , *args, **kargs):
    cfunc = c_void_p()
    def C_Callable( param ):
        retval = func( *args, **kargs )
        if not retval:
            cfuncs.remove(cfunc)
            retval = 0
        return retval
    cfunc = GSourceFunc(C_Callable)
    cfuncs.append(cfunc)
    GMainContext.g_idle_add(cfunc, cfunc )