From 63f53e648a830fb1e62f7f21bfabece58debf09f Mon Sep 17 00:00:00 2001 From: "Paul W. Frields" Date: Tue, 16 Jun 2009 17:26:37 -0400 Subject: Handle device changes using dbus --- pulsecaster/ui.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'pulsecaster') diff --git a/pulsecaster/ui.py b/pulsecaster/ui.py index d3d49cd..7473fb8 100644 --- a/pulsecaster/ui.py +++ b/pulsecaster/ui.py @@ -19,11 +19,14 @@ # Author: Paul W. Frields -import gtk -import gtk.glade from config import * from pulseaudio.PulseObj import PulseObj +import gtk +import gtk.glade import os +import dbus +import gobject +import dbus.mainloop.glib # FIXME fname = os.getcwd() + '/data/pulsecaster.glade' @@ -92,8 +95,9 @@ class PulseCasterUI: # Fill the combo boxes initially self.repop_sources() - self.pa.pulse_context_set_subscribe_callback(self.dummy) - self.pa.pulse_context_subscribe(0x3f) + #self.pa.pulse_context_set_subscribe_callback(self.dummy) + #self.pa.pulse_context_subscribe(0x3f) + self.listener = PulseCasterListener(self) def dummy(self, c, event, index, userdata): self.repop_sources() @@ -139,6 +143,21 @@ class PulseCasterUI: self.about.hide() +class PulseCasterListener: + def __init__(self, ui): + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + self.bus = dbus.SystemBus() + + self.bus.add_signal_receiver(ui.repop_sources, + signal_name='DeviceAdded', + dbus_interface='org.freedesktop.Hal.Manager', + path='/org/freedesktop/Hal/Manager') + self.bus.add_signal_receiver(ui.repop_sources, + signal_name='DeviceRemoved', + dbus_interface='org.freedesktop.Hal.Manager', + path='/org/freedesktop/Hal/Manager') + + if __name__ == '__main__': pulseCaster = PulseCasterUI() pulseCaster.main.show_all() -- cgit