summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul W. Frields <stickster@gmail.com>2009-06-16 17:26:37 -0400
committerPaul W. Frields <stickster@gmail.com>2009-06-16 17:26:37 -0400
commit63f53e648a830fb1e62f7f21bfabece58debf09f (patch)
tree3d42945baeae3141de05426fbfa9773d034bb283
parent9edc1e8c462c757baf4e438f0aeefe0a58a1efd1 (diff)
downloadpulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.tar.gz
pulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.tar.xz
pulsecaster-63f53e648a830fb1e62f7f21bfabece58debf09f.zip
Handle device changes using dbus
-rw-r--r--pulsecaster/ui.py27
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()