diff options
Diffstat (limited to 'src/jarabe/journal/volumestoolbar.py')
-rw-r--r-- | src/jarabe/journal/volumestoolbar.py | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py index 1c30281..368d287 100644 --- a/src/jarabe/journal/volumestoolbar.py +++ b/src/jarabe/journal/volumestoolbar.py @@ -17,6 +17,7 @@ import logging import os import statvfs +from urlparse import urlsplit from gettext import gettext as _ import gobject @@ -39,7 +40,7 @@ class VolumesToolbar(gtk.Toolbar): __gsignals__ = { 'volume-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([str])), + [str]), 'volume-error': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str, str])), } @@ -100,12 +101,10 @@ class VolumesToolbar(gtk.Toolbar): def _add_button(self, mount): logging.debug('VolumeToolbar._add_button: %r', mount.get_name()) - if os.path.exists(os.path.join(mount.get_root().get_path(), - model.JOURNAL_0_METADATA_DIR)): - logging.debug('Convert DS-0 Journal entries: starting conversion') - gobject.idle_add(model.convert_datastore_0_entries, - mount.get_root().get_path()) + #~ if mount.get_root().get_path(): + #~ return self._add_local_button(mount) + #~ def _add_local_button(self, mount): button = VolumeButton(mount) button.props.group = self._volume_buttons[0] button.connect('toggled', self._button_toggled_cb) @@ -119,12 +118,24 @@ class VolumesToolbar(gtk.Toolbar): if len(self.get_children()) > 1: self.show() + mount_point = mount.get_root().get_path() + if not mount_point: + return + + if urlsplit(mount.get_root().get_uri())[0] != 'file': + return + + if os.path.exists(os.path.join(mount_point, + model.JOURNAL_0_METADATA_DIR)): + logging.debug('Convert DS-0 Journal entries: starting conversion') + gobject.idle_add(model.convert_datastore_0_entries, mount_point) + def __volume_error_cb(self, button, strerror, severity): self.emit('volume-error', strerror, severity) def _button_toggled_cb(self, button): if button.props.active: - self.emit('volume-changed', button.mount_point) + self.emit('volume-changed', button.mount_uri) def _unmount_activated_cb(self, menu_item, mount): logging.debug('VolumesToolbar._unmount_activated_cb: %r', mount) @@ -134,11 +145,11 @@ class VolumesToolbar(gtk.Toolbar): logging.debug('__unmount_cb %r %r', source, result) def _get_button_for_mount(self, mount): - mount_point = mount.get_root().get_path() + uri = mount.get_root().get_uri() for button in self.get_children(): - if button.mount_point == mount_point: + if button.mount_uri == uri: return button - logging.error('Couldnt find button with mount_point %r', mount_point) + logging.error('Could not find button with uri %r', uri) return None def _remove_button(self, mount): @@ -161,10 +172,10 @@ class BaseButton(RadioToolButton): ([str, str])), } - def __init__(self, mount_point): + def __init__(self, mount_uri): RadioToolButton.__init__(self) - self.mount_point = mount_point + self.mount_uri = mount_uri self.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('journal-object-id', 0, 0)], @@ -173,9 +184,8 @@ class BaseButton(RadioToolButton): def _drag_data_received_cb(self, widget, drag_context, x, y, selection_data, info, timestamp): - object_id = selection_data.data - metadata = model.get(object_id) - file_path = model.get_file(metadata['uid']) + object_uri = selection_data.data + file_path = model.get_file(object_uri) if not file_path or not os.path.exists(file_path): logging.warn('Entries without a file cannot be copied.') self.emit('volume-error', @@ -184,7 +194,7 @@ class BaseButton(RadioToolButton): return try: - model.copy(metadata, self.mount_point) + model.copy(object_uri, self.mount_uri) except IOError, e: logging.exception('Error while copying the entry. %s', e.strerror) self.emit('volume-error', @@ -195,8 +205,7 @@ class BaseButton(RadioToolButton): class VolumeButton(BaseButton): def __init__(self, mount): self._mount = mount - mount_point = mount.get_root().get_path() - BaseButton.__init__(self, mount_point) + BaseButton.__init__(self, mount.get_root().get_uri()) icon_name = None icon_theme = gtk.icon_theme_get_default() @@ -225,7 +234,7 @@ class VolumeButton(BaseButton): class JournalButton(BaseButton): def __init__(self): - BaseButton.__init__(self, mount_point='/') + BaseButton.__init__(self, 'datastore:') self.props.named_icon = 'activity-journal' @@ -271,7 +280,8 @@ class JournalButtonPalette(Palette): class DocumentsButton(BaseButton): def __init__(self, documents_path): - BaseButton.__init__(self, mount_point=documents_path) + uri = 'file://' + documents_path + BaseButton.__init__(self, uri) self.props.named_icon = 'user-documents' |