Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe/journal/volumestoolbar.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jarabe/journal/volumestoolbar.py')
-rw-r--r--src/jarabe/journal/volumestoolbar.py50
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'