File: //snap/core20/2599/lib/python3/dist-packages/pyudev/__pycache__/glib.cpython-38.pyc
U
u1�W� � @ s| d Z ddlmZmZmZmZ ddlZddlZG dd� de�Z G dd� dej
e �Ze�e� G dd � d ej
e �Z
e�e
� 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 sD |r&| j d kr&t�| jtj| j�| _ n|s@| j d k r@t�| 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*| �|� 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 | � d|� d S �N�device-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`.
r c C s t j�| � | �|� d S r )�gobject�GObject�__init__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�removeZchangeZmover c C s. t j�| � | �|� dd l}|�dt� d S )Nr z@Will be removed in 1.0. Use pyudev.glib.MonitorObserver instead.)r! r"