o
    b8                  	   @   s   d Z ddlZddlmZ ddlmZ zeeds!ddlZed W n e	e
fy-   Y nw ddlZeedr;e  G dd	 d	ejZG d
d dejZdddZdddZej dkraeZneZdgZdS )a>  
This module provides support for Twisted to interact with the glib/gtk2
mainloop.

In order to use this support, simply do the following::

    from twisted.internet import gtk2reactor
    gtk2reactor.install()

Then use twisted.internet APIs as usual.  The other methods here are not
intended to be called directly.
    N)	_glibbase)runtimefrozenz2.0threads_initc                   @   sH   e Zd ZdZejejB ejB Zej	Z
ejZe
eB ZeeB ZdddZdS )Gtk2Reactorz&
    PyGTK+ 2 event loop reactor.
    Tc                 C   ,   d }|du r
dd l }tjj| t||d d S NTr   )useGtk)gtkr   GlibReactorBase__init__gobjectselfr	   _gtk r   >/usr/lib/python3/dist-packages/twisted/internet/gtk2reactor.pyr   F      zGtk2Reactor.__init__NT)__name__
__module____qualname____doc__r   IO_HUPIO_ERRIO_NVAL_POLL_DISCONNECTEDIO_IN_POLL_INIO_OUT	_POLL_OUTINFLAGSOUTFLAGSr   r   r   r   r   r   7   s    r   c                   @   s   e Zd ZdZdddZdS )PortableGtkReactorzd
    Reactor that works on Windows.

    Sockets aren't supported by GTK+'s input_add on Win32.
    Tc                 C   r   r   )r
   r   PortableGlibReactorBaser   r   r   r   r   r   r   U   r   zPortableGtkReactor.__init__Nr   )r   r   r   r   r   r   r   r   r   r#   N   s    r#   Tc                 C   s    t | }ddlm} || |S )z
    Configure the twisted mainloop to be run inside the gtk mainloop.

    @param useGtk: should glib rather than GTK+ event loop be
        used (this will be slightly faster but does not support GUI).
    r   installReactor)r   twisted.internet.mainr&   r	   reactorr&   r   r   r   install]   s   r*   c                 C   s   t  }ddlm} || |S )zK
    Configure the twisted mainloop to be run inside the gtk mainloop.
    r   r%   )r#   r'   r&   r(   r   r   r   portableInstallk   s   r+   posixr   )r   systwisted.internetr   twisted.pythonr   hasattrpygtkrequireImportErrorAttributeErrorr   r   r   r   r$   r#   r*   r+   platformgetType__all__r   r   r   r   <module>   s.   





