U
    
W[                  	   @   s   d Z ddlZddlmZ ddlmZ z eedsBddlZed W n e	e
fk
r\   Y nX ddlZeedrxe  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re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   s,   d }|dkrdd l }tjj| t||d d S NTr   )useGtk)gtkr   GlibReactorBase__init__gobjectselfr   Z_gtk r   >/usr/lib/python3/dist-packages/twisted/internet/gtk2reactor.pyr   D   s    zGtk2Reactor.__init__N)T)__name__
__module____qualname____doc__r   ZIO_HUPZIO_ERRZIO_NVALZ_POLL_DISCONNECTEDZIO_INZ_POLL_INZIO_OUTZ	_POLL_OUTZINFLAGSZOUTFLAGSr   r   r   r   r   r   6   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   s,   d }|dkrdd l }tjj| t||d d S r   )r	   r   PortableGlibReactorBaser   r   r   r   r   r   r   S   s    zPortableGtkReactor.__init__N)T)r   r   r   r   r   r   r   r   r   r   M   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   Z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   portableInstalli   s    r   posix)T)T)r   sysZtwisted.internetr   Ztwisted.pythonr   hasattrZpygtkZrequireImportErrorAttributeErrorr   r   r
   r   r   r   r   r   platformZgetType__all__r   r   r   r   <module>   s(   




