Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jarabe/journal/volumestoolbar.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
index 72b5918..7a34e18 100644
--- a/src/jarabe/journal/volumestoolbar.py
+++ b/src/jarabe/journal/volumestoolbar.py
@@ -16,6 +16,8 @@
import logging
import os
+import subprocess
+import errno
import statvfs
from gettext import gettext as _
@@ -53,6 +55,27 @@ def _get_id(document):
return None
+def _get_documents_path():
+ """Gets the path of the DOCUMENTS folder
+
+ If xdg-user-dir can not find the DOCUMENTS folder it will
+ return the user directory instead. It also handles
+ localization (i.e. translation) of the filenames.
+
+ Returns: Path to $HOME/DOCUMENTS or None if an error occurs
+ """
+ try:
+ pipe = subprocess.Popen(['xdg-user-dir', 'DOCUMENTS'],
+ stdout=subprocess.PIPE)
+ documents_path = pipe.communicate()[0].strip()
+ if os.path.exists(documents_path):
+ return documents_path
+ except OSError, exception:
+ if exception.errno != errno.ENOENT:
+ logging.exception('Could not run xdg-user-dir')
+ return None
+
+
def _convert_entries(root):
"""Convert entries written by the datastore version 0.
@@ -189,6 +212,8 @@ class VolumesToolbar(gtk.Toolbar):
volume_monitor.disconnect(self._mount_removed_hid)
def _set_up_volumes(self):
+ self._set_up_documents_button()
+
volume_monitor = gio.volume_monitor_get()
self._mount_added_hid = volume_monitor.connect('mount-added',
self.__mount_added_cb)
@@ -198,6 +223,19 @@ class VolumesToolbar(gtk.Toolbar):
for mount in volume_monitor.get_mounts():
self._add_button(mount)
+ def _set_up_documents_button(self):
+ documents_path = _get_documents_path()
+ if documents_path is not None:
+ button = DocumentsButton(documents_path)
+ button.props.group = self._volume_buttons[0]
+ button.set_palette(Palette(_('Documents')))
+ button.connect('toggled', self._button_toggled_cb)
+ button.show()
+
+ self.insert(button, -1)
+ self._volume_buttons.append(button)
+ self.show()
+
def __mount_added_cb(self, volume_monitor, mount):
self._add_button(mount)
@@ -372,3 +410,15 @@ class JournalButtonPalette(Palette):
self._progress_bar.props.fraction = fraction
self._free_space_label.props.label = _('%(free_space)d MB Free') % \
{'free_space': free_space / (1024 * 1024)}
+
+
+class DocumentsButton(BaseButton):
+
+ def __init__(self, documents_path):
+ BaseButton.__init__(self, mount_point=documents_path)
+
+ self.props.named_icon = 'user-documents'
+
+ client = gconf.client_get_default()
+ color = XoColor(client.get_string('/desktop/sugar/user/color'))
+ self.props.xo_color = color