| Server IP : 93.86.61.54 / Your IP : 216.73.216.60 Web Server : Apache/2.4.62 (Ubuntu) System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64 User : www-data ( 33) PHP Version : 8.4.22 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3/dist-packages/blueman/main/ |
Upload File : |
from typing import Any
from blueman.Functions import *
from blueman.bluez.Manager import Manager
from blueman.bluez.Adapter import AnyAdapter
from blueman.bluez.Device import AnyDevice
import blueman.plugins.applet
from blueman.main.PluginManager import PersistentPluginManager
from blueman.main.DbusService import DbusService
from blueman.plugins.AppletPlugin import AppletPlugin
from gi.repository import Gio
import logging
class BluemanApplet(Gio.Application):
def __init__(self) -> None:
super().__init__(application_id="org.blueman.Applet", flags=Gio.ApplicationFlags.FLAGS_NONE)
setup_icon_path()
self.plugin_run_state_changed = False
self.manager_state = False
self._active = False
self.Manager = Manager()
self.Manager.connect_signal('adapter-added', self.on_adapter_added)
self.Manager.connect_signal('adapter-removed', self.on_adapter_removed)
self.Manager.connect_signal('device-created', self.on_device_created)
self.Manager.connect_signal('device-removed', self.on_device_removed)
self.DbusSvc = DbusService("org.blueman.Applet", "org.blueman.Applet", "/org/blueman/Applet",
Gio.BusType.SESSION)
self.DbusSvc.register()
self.Plugins = PersistentPluginManager(AppletPlugin, blueman.plugins.applet, self)
self.Plugins.load_plugin()
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_plugins_loaded()
self.Manager.watch_name_owner(self._on_dbus_name_appeared, self._on_dbus_name_vanished)
self._any_adapter = AnyAdapter()
self._any_adapter.connect_signal('property-changed', self._on_adapter_property_changed)
self._any_device = AnyDevice()
self._any_device.connect_signal('property-changed', self._on_device_property_changed)
def do_activate(self) -> None:
if not self._active:
self.hold()
self._active = True
def _on_dbus_name_appeared(self, _connection: Gio.DBusConnection, name: str, owner: str) -> None:
logging.info(f"{name} {owner}")
self.manager_state = True
self.plugin_run_state_changed = True
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_manager_state_changed(self.manager_state)
def _on_dbus_name_vanished(self, _connection: Gio.DBusConnection, name: str) -> None:
logging.info(name)
self.manager_state = False
self.plugin_run_state_changed = True
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_manager_state_changed(self.manager_state)
def _on_adapter_property_changed(self, _adapter: AnyAdapter, key: str, value: Any, path: str) -> None:
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_adapter_property_changed(path, key, value)
def _on_device_property_changed(self, _device: AnyDevice, key: str, value: Any, path: str) -> None:
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_device_property_changed(path, key, value)
def on_adapter_added(self, _manager: Manager, path: str) -> None:
logging.info(f"Adapter added {path}")
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_adapter_added(path)
def on_adapter_removed(self, _manager: Manager, path: str) -> None:
logging.info(f"Adapter removed {path}")
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_adapter_removed(path)
def on_device_created(self, _manager: Manager, path: str) -> None:
logging.info(f"Device created {path}")
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_device_created(path)
def on_device_removed(self, _manager: Manager, path: str) -> None:
logging.info(f"Device removed {path}")
for plugin in self.Plugins.get_loaded_plugins(AppletPlugin):
plugin.on_device_removed(path)