Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@gmail.com>2009-11-05 22:29:32 (GMT)
committer Sayamindu Dasgupta <sayamindu@gmail.com>2009-11-05 22:29:32 (GMT)
commitb427bd8cede93d5ae0619889bb53dabe3a1a2757 (patch)
tree6f746264603aa7ef674fcd87feb02a447a5511ed
parent327979e59be70d2df01a4599829a932b3f46dd34 (diff)
Fix volume monitoring code
-rwxr-xr-xGetIABooksActivity.py31
-rw-r--r--devicemanager.py11
2 files changed, 28 insertions, 14 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py
index 565c12b..0ffaebf 100755
--- a/GetIABooksActivity.py
+++ b/GetIABooksActivity.py
@@ -64,7 +64,7 @@ class BooksToolbar(gtk.Toolbar):
self.source_combo = ComboBox()
self.source_combo.props.sensitive = True
- self.source_combo.connect('changed', self.__source_changed_cb)
+ self.__source_changed_cb_id = self.source_combo.connect('changed', self.__source_changed_cb)
combotool = ToolComboBox(self.source_combo)
self.insert(combotool, -1)
combotool.show()
@@ -122,31 +122,39 @@ class BooksToolbar(gtk.Toolbar):
def __source_changed_cb(self, widget):
self.emit('source-changed')
- def __device_added_cb(self):
+ def __device_added_cb(self, mgr):
+ _logger.debug('Device was added')
self._refresh_sources()
- def __device_removed_cb(self):
+ def __device_removed_cb(self, mgr):
+ _logger.debug('Device was removed')
self._refresh_sources()
def _refresh_sources(self):
- self.source_combo.remove_all() #TODO: Do not blindly clear this
+ self.source_combo.handler_block(self.__source_changed_cb_id)
+ self.source_combo.remove_all() #TODO: Do not blindly clear this
for key in _SOURCES.keys():
self.source_combo.append_item(_SOURCES[key], key)
- self.source_combo.append_separator()
-
devices = self._device_manager.get_devices()
+
+ if len(devices):
+ self.source_combo.append_separator()
+
for device in devices:
mount_point = device[1].GetProperty('volume.mount_point')
label = device[1].GetProperty('volume.label')
if label == '' or label is None:
capacity = int(device[1].GetProperty('volume.partition.media_size'))
label = (_('%.2f GB Volume') % (capacity/(1024.0**3)))
+ _logger.debug('Adding device %s' % (label))
self.source_combo.append_item(mount_point, label)
self.source_combo.set_active(0)
+ self.source_combo.handler_unblock(self.__source_changed_cb_id)
+
def set_activity(self, activity):
self.activity = activity
@@ -287,6 +295,11 @@ class GetIABooksActivity(activity.Activity):
def find_books(self, search_text = ''):
source = self._books_toolbar.source_combo.props.value
+ self._books_toolbar.enable_button(False)
+ self.clear_downloaded_bytes()
+ self.book_selected = False
+ self.listview.clear()
+
if self.queryresults is not None:
self.queryresults.cancel()
self.queryresults = None
@@ -310,14 +323,10 @@ class GetIABooksActivity(activity.Activity):
self.queryresults = opds.InternetArchiveQueryResult(search_text)
else:
self.queryresults = opds.LocalVolumeQueryResult( \
- self._books_toolbar.source_combo.props.value, search_text)
+ source, search_text)
- self._books_toolbar.enable_button(False)
- self.clear_downloaded_bytes()
textbuffer = self.textview.get_buffer()
textbuffer.set_text(_('Performing lookup, please wait...'))
- self.book_selected = False
- self.listview.clear()
self.queryresults.connect('completed', self.__query_completed_cb)
diff --git a/devicemanager.py b/devicemanager.py
index 8ee8fe6..5ca1b29 100644
--- a/devicemanager.py
+++ b/devicemanager.py
@@ -18,11 +18,13 @@
import os
+import logging
import gobject
import dbus
from dbus.mainloop.glib import DBusGMainLoop
-DBusGMainLoop(set_as_default=True)
+
+_logger = logging.getLogger('get-ia-books-activity')
class DeviceManager(gobject.GObject):
__gsignals__ = {
@@ -83,19 +85,22 @@ class DeviceManager(gobject.GObject):
# get an interface to the device
dev = dbus.Interface (dev_obj, 'org.freedesktop.Hal.Device')
if self._is_removable_volume(dev):
- self.emit('device-added')
self._devices.append((udi, dev))
+ self.emit('device-added')
+ _logger.debug('DeviceManager: Device was added %s' % str(udi))
def __device_removed(self, udi):
for device in self._devices:
if udi in device:
- self.emit('device-removed')
self._devices.remove(device)
+ self.emit('device-removed')
+ _logger.debug('DeviceManager: Device was removed %s' % str(udi))
def get_devices(self):
return self._devices
if __name__ == '__main__':
+ DBusGMainLoop(set_as_default=True)
dm = DeviceManager()
print dm.get_devices()[0][1].GetProperty('volume.mount_point'), dm.get_devices()[0][1].GetProperty('volume.label')