diff options
author | Paul W. Frields <stickster@gmail.com> | 2009-06-16 17:26:37 -0400 |
---|---|---|
committer | Paul W. Frields <stickster@gmail.com> | 2009-06-16 17:26:37 -0400 |
commit | 63f53e648a830fb1e62f7f21bfabece58debf09f (patch) | |
tree | 3d42945baeae3141de05426fbfa9773d034bb283 | |
parent | 9edc1e8c462c757baf4e438f0aeefe0a58a1efd1 (diff) | |
download | pulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.tar.gz pulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.tar.xz pulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.zip |
Handle device changes using dbus
-rw-r--r-- | pulsecaster/ui.py | 27 |
1 files changed, 23 insertions, 4 deletions
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 <stickster@gmail.com> -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() |