36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
"""Lazily-built shared services handed to every module via ModuleContext.
|
|
|
|
Astal's GObject service libraries (AstalNetwork, AstalBluetooth) are consumed here
|
|
through GObject-introspection; modules connect to their `notify::` signals instead
|
|
of polling. The location service is our own singleton.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import gi
|
|
|
|
gi.require_version("AstalNetwork", "0.1")
|
|
gi.require_version("AstalBluetooth", "0.1")
|
|
from gi.repository import AstalBluetooth, AstalNetwork # noqa: E402
|
|
|
|
from services.location import get_location_service
|
|
|
|
|
|
class Services:
|
|
def __init__(self) -> None:
|
|
self._network = None
|
|
self._bluetooth = None
|
|
self.location = get_location_service()
|
|
|
|
@property
|
|
def network(self):
|
|
if self._network is None:
|
|
self._network = AstalNetwork.Network.get_default()
|
|
return self._network
|
|
|
|
@property
|
|
def bluetooth(self):
|
|
if self._bluetooth is None:
|
|
self._bluetooth = AstalBluetooth.Bluetooth.get_default()
|
|
return self._bluetooth
|