
    9*b                         d Z ddlmZmZ  G d de      Z G d dej                  e      Z ej                  e        G d dej                  e      Z	 ej                  e	       y	)
a  pyudev.glib
    ===========

    Glib integration.

    :class:`MonitorObserver` integrates device monitoring into the Glib
    mainloop by turing device events into Glib signals.

    :mod:`gi.repository.GLib` and :mod:`gi.repository.GObject` from PyGObject_
    must be available when importing this module. PyGtk is not required.

    .. _PyGObject: http://www.pygtk.org/

    .. moduleauthor::  Sebastian Wiesner  <lunaryorn@gmail.com>
    .. versionadded:: 0.7

    )GLibGObjectc                   V    e Zd ZdZd Zed        Zej                  d        Zd Zd Z	y)_ObserverMixinz>Mixin to provide observer behavior to the old and the new API.c                 .    || _         d | _        d| _        y )NT)monitorevent_sourceenabledselfr   s     -/usr/lib/python3/dist-packages/pyudev/glib.py_setup_observerz_ObserverMixin._setup_observer,   s         c                     | j                   duS )z
        Whether this observer is enabled or not.

        If ``True`` (the default), this observer is enabled, and emits events.
        Otherwise it is disabled and does not emit any events.

        .. versionadded:: 0.14
        N)r	   )r   s    r   r
   z_ObserverMixin.enabled2   s       ,,r   c                     |rK| j                   ?t        j                  | j                  t        j                  | j
                        | _         y |s-| j                    t        j                  | j                          y y y N)r	   r   io_add_watchr   IO_IN_process_udev_eventsource_remove)r   values     r   r
   z_ObserverMixin.enabled>   se    T&&. !% 1 1djj$*B*B!D 4,,8t001 9r   c                     |t         j                  k(  r/| j                  j                  d      }|| j	                  |       y)Nr   )timeoutT)r   r   r   poll_emit_event)r   source	conditiondevices       r   r   z"_ObserverMixin._process_udev_eventJ   s>     

"\\&&q&1F!  (r   c                 (    | j                  d|       y Ndevice-event)emit)r   r   s     r   r   z_ObserverMixin._emit_eventS   s    		.&)r   N)
__name__
__module____qualname____doc__r   propertyr
   setterr   r    r   r   r   r   '   s@    H 	- 	- ^^	2 	2*r   r   c                   n    e Zd ZdZ ed      ej                  ej                  ej                  ffiZ	d Z
y)MonitorObservera  
    An observer for device events integrating into the :mod:`gi.repository.GLib`
    mainloop.

    This class inherits :class:`~gi.repository.GObject.Object` to turn device
    events into glib signals.

    >>> from pyudev import Context, Monitor
    >>> from pyudev.glib import MonitorObserver
    >>> context = Context()
    >>> monitor = Monitor.from_netlink(context)
    >>> monitor.filter_by(subsystem='input')
    >>> observer = MonitorObserver(monitor)
    >>> def device_event(observer, device):
    ...     print('event {0} on device {1}'.format(device.action, device))
    >>> observer.connect('device-event', device_event)
    >>> monitor.start()

    This class is a child of :class:`gi.repository.GObject.Object`.
    r!   c                 d    t         j                  j                  |        | j                  |       y r   )r   Object__init__r   r   s     r   r.   zMonitorObserver.__init__|   s"    %W%r   N)r#   r$   r%   r&   strr   SIGNAL_RUN_LAST	TYPE_NONETYPE_PYOBJECT__gsignals__r.   r)   r   r   r+   r+   W   s@    8 	N##""$
L&r   r+   c                      e Zd ZdZdddddZ ed      ej                  ej                  ej                  ej                  ff ed      ej                  ej                  ej                  ff ed      ej                  ej                  ej                  ff ed      ej                  ej                  ej                  ff ed      ej                  ej                  ej                  ffiZd Zd	 Zy
)GUDevMonitorObserverz
    An observer for device events integrating into the :mod:`gi.repository.GLib`
    mainloop.

    .. deprecated:: 0.17
       Will be removed in 1.0.  Use :class:`MonitorObserver` instead.
    zdevice-addedzdevice-removedzdevice-changedzdevice-moved)addremovechangemover!   c                     t         j                  j                  |        | j                  |       dd l}|j                  dt               y )Nr   z@Will be removed in 1.0. Use pyudev.glib.MonitorObserver instead.)r   r-   r.   r   warningswarnDeprecationWarning)r   r   r;   s      r   r.   zGUDevMonitorObserver.__init__   s7    %W%Q	
r   c                     | j                  d|j                  |       | j                  j                  |j                        }|| j                  ||       y y r    )r"   action_action_signal_mapget)r   r   signals      r   r   z GUDevMonitorObserver._emit_event   sI    		.&--8((,,V]];IIff% r   N)r#   r$   r%   r&   r@   r/   r   r0   r1   TYPE_STRINGr2   r3   r.   r   r)   r   r   r5   r5      s    ""	 	N##  '"7"78

 	N##""$

 	##""$ 

 	##""$ 

 	N##""$
+L8	
&r   r5   N)
r&   gi.repositoryr   r   objectr   r-   r+   type_registerr5   r)   r   r   <module>rG      sg   "& (-*V -*`'&gnnn '&T   o &<&7>>> <&~   * +r   