3 ˆuAc# ã@s@dZddlmZd ZGdd„deƒZGdd„deƒZdd„Zd S) zVThis module contains mainloop wrappers. Currently only glib main loops are supported.é)Úabsolute_importÚMainLoopÚset_typecsXeZdZdZdZ‡fdd„Zedd„ƒZdd„Zd d „Z d d „Z d d„Z dd„Z ‡Z S)raAn abstract main loop wrapper class and factory. Use MainLoop() to get a main loop wrapper object for a main loop type previously registered with set_type(). Defaults to glib main loops. Actual main loop wrapper classes are derived from this class.Ncs.tjdkrtjdƒtt|ƒjtjf|ž|ŽS)NÚglib)rZ_mainloop_classrÚsuperÚ__new__Ú_MainLoop__mainloop_class)ÚclsÚargsÚkwargs)Ú __class__©ú/usr/lib/python3.6/mainloop.pyr*s   zMainLoop.__new__cCsHtjdk rtdƒ‚dti}||kr.||t_ntd|dj|ƒfƒ‚dS)zxSet a main loop type for non-blocking interfaces. mltype: "glib" (currently only glib main loops are supported)Nz(The main loop type can only be set once.rz0'%s' is not one of the valid main loop types: %sz, )rrÚ RuntimeErrorÚ GlibMainLoopÚ ValueErrorÚjoin)r ÚmltypeZ ml_type_classr r rr1s  zMainLoop.set_typecCs tƒ‚dS)z$Returns if there are pending events.N)ÚNotImplementedError)Úselfr r rÚpendingCszMainLoop.pendingcCs tƒ‚dS)z Iterates over one pending event.N)r)rr r rÚiterateHszMainLoop.iteratecCsx|jƒr|jƒqWdS)z!Iterates over all pending events.N)rr)rr r rÚiterate_over_pending_eventsMs z$MainLoop.iterate_over_pending_eventscCs tƒ‚dS)zRuns the main loop.N)r)rr r rÚrunSsz MainLoop.runcCs tƒ‚dS)zQuits the main loop.N)r)rr r rÚquitXsz MainLoop.quit)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrÚ classmethodrrrrrrÚ __classcell__r r )r rr s  c@seZdZdd„ZdS)rcCsFddlm}|jƒ}|jƒ}||_|j|_|j|_|j|_|j |_ dS)Né)Ú_glib) Z _wrappersr"rZ get_contextZ _mainlooprZ iterationrrr)rr"ZmlZctxr r rÚ__init__`s zGlibMainLoop.__init__N)rrrr#r r r rr^srcCs$ddlm}|dtƒtj|ƒdS)z¦Set a main loop type for non-blocking interfaces. mltype: "glib" (currently only glib main loops are supported) Deprecated, use MainLoop.set_type() instead.r)Úwarnzuse MainLoop.set_type() insteadN)Úwarningsr$ÚDeprecationWarningrr)rr$r r rrls  N)rr)rZ __future__rÚ__all__Úobjectrrrr r r rÚs  >