File: //snap/core22/current/usr/lib/python3/dist-packages/pyudev/__pycache__/glib.cpython-310.pyc
o
g-` � @ s| d Z ddlmZmZmZmZ ddlmZmZ G dd� de �Z
G dd� deje
�Ze�
e� G dd � d eje
�Ze�
e� d
S )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
� )�print_function�division�unicode_literals�absolute_import)�GLib�GObjectc @ 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_observer. s
z_ObserverMixin._setup_observerc C s
| j duS )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 4 s
z_ObserverMixin.enabledc C sN |r| j d u rt�| jtj| j�| _ d S |s#| j d ur%t�| j � d S d S d S �N)r
r �io_add_watchr �IO_IN�_process_udev_event�
source_remove)r
�valuer r r r @ s
��c C s. |t jkr| jjdd�}|d ur| �|� dS )Nr )�timeoutT)r r r �poll�_emit_event)r
�source� condition�devicer r r r K s
z"_ObserverMixin._process_udev_eventc C s | � d|� d S �N�device-event)�emit)r
r r r r r T 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:`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 C s t j�| � | �|� d S r )r �Object�__init__r r r r r r( z s zMonitorObserver.__init__N)r r! r"