[Sugar-devel] [PATCH] adding /home/walter/Documents to volume toolbar
Walter Bender
walter at sugarlabs.org
Wed Jul 6 16:29:19 EDT 2011
From: Walter Bender <walter.bender at gmail.com>
This patch adds $HOME/Documents to the volume toolbar in the Journal view.
The rationale is to make it easier for people to move files in and out of
the data store from the file system -- a feature oft requested by teachers.
It also means that Sugar activities can more readily access files generated
outside of Sugar -- another feature requested by teachers.
Note that this patch requires the inclusion of a new icon, user-documents,
that is included in a separate patch.
The current version of this patch reflects feedback from Sascha Silbe (See
http://lists.sugarlabs.org/archive/sugar-devel/2011-July/032200.html)
---
src/jarabe/journal/volumestoolbar.py | 39 ++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
index 72b5918..26f93ef 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 _
@@ -189,6 +191,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 +202,29 @@ class VolumesToolbar(gtk.Toolbar):
for mount in volume_monitor.get_mounts():
self._add_button(mount)
+ def _set_up_documents_button(self):
+ try:
+ pipe = subprocess.Popen(['xdg-user-dir', 'DOCUMENTS'],
+ stdout=subprocess.PIPE)
+ documents_path = pipe.communicate()[0].strip()
+ except OSError, exception:
+ if exception.errno != errno.ENOENT:
+ logging.exception('Could not run xdg-user-dir')
+ return
+
+ if not os.path.exists(documents_path):
+ return
+
+ 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 +399,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
--
1.7.4.4
More information about the Sugar-devel
mailing list