File: //snap/core18/current/usr/lib/python3/dist-packages/pyudev/__pycache__/glib.cpython-36.pyc
3
u1�W� � @ s| d Z ddlmZmZmZmZ ddlZddlZG dd� de�Z G dd� dej
e �Zeje� G dd � d ej
e �Z
eje
� dS )
a� pyudev.glib
===========
Glib integration.
:class:`MonitorObserver` integrates device monitoring into the Glib
mainloop by turing device events into Glib signals.
:mod:`glib` and :mod:`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
� )�print_function�division�unicode_literals�absolute_importNc @ sB e Zd ZdZdd� Zedd� �Zejdd� �Zdd� Zd d
� Z dS )�_ObserverMixinz>Mixin to provide observer behavior to the old and the new API.c C s || _ d | _d| _d S )NT)�monitor�event_source�enabled)�selfr � r �-/usr/lib/python3/dist-packages/pyudev/glib.py�_setup_observer2 s z_ObserverMixin._setup_observerc C s
| j dk 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
r r r r 8 s
z_ObserverMixin.enabledc C sF |r&| j d kr&tj| jtj| j�| _ n| rB| j d k rBtj| j � d S )N)r �glibZio_add_watchr �IO_IN�_process_udev_eventZ
source_remove)r
�valuer r r r D s
c C s. |t jkr*| jjdd�}|d k r*| j|� dS )Nr )ZtimeoutT)r r r Zpoll�_emit_event)r
�sourceZ condition�devicer r r r M s
z"_ObserverMixin._process_udev_eventc C s | j d|� d S )Nzdevice-event)�emit)r
r r r r r U s z_ObserverMixin._emit_eventN)
�__name__�
__module__�__qualname__�__doc__r
�propertyr �setterr r r r r r r . s r c @ s2 e Zd ZdZed�ejejejffiZ dd� Z
dS )�MonitorObservera�
An observer for device events integrating into the :mod:`glib` mainloop.
This class inherits :class:`~gobject.GObject` 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:`gobject.GObject`.
zdevice-eventc C s t jj| � | j|� d S )N)�gobject�GObject�__init__r
)r
r r r r r y s zMonitorObserver.__init__N)r r r r �strr �SIGNAL_RUN_LAST� TYPE_NONE�
TYPE_PYOBJECT�__gsignals__r r r r r r Y s r c @ s� e Zd ZdZddddd�Zed�ejejej ej
ffed�ejejej
ffed�ejejej
ffed�ejejej
ffed�ejejej
ffiZdd � Zd
d� Z
dS )
�GUDevMonitorObserverz�
An observer for device events integrating into the :mod:`glib` mainloop.
.. deprecated:: 0.17
Will be removed in 1.0. Use :class:`MonitorObserver` instead.
zdevice-addedzdevice-removedzdevice-changedzdevice-moved)�add�removeZchangeZmovezdevice-eventc C s. t jj| � | j|� dd l}|jdt� d S )Nr z@Will be removed in 1.0. Use pyudev.glib.MonitorObserver instead.)r r r r
�warnings�warn�DeprecationWarning)r
r r( r r r r � s
zGUDevMonitorObserver.__init__c C s6 | j d|j|� | jj|j�}|d k r2| j ||� d S )Nzdevice-event)r �action�_action_signal_map�get)r
r �signalr r r r � s z GUDevMonitorObserver._emit_eventN)r r r r r, r r r! r"