Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-01-21 09:50:57 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-01-21 09:50:57 (GMT)
commit752b164b0f55e00ecef5f405557110e8d9b3951f (patch)
tree80d57661fdc61c9fbe8c84b7968ddf923a6175b6 /src
parent081f350e2554ab2ca2a38d00dc65dde8d2327a5d (diff)
#33 Display space used and left in the volume palette in the journal
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/volumestoolbar.py17
-rw-r--r--src/jarabe/view/palettes.py52
2 files changed, 58 insertions, 11 deletions
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
index bb27ab7..32c8f68 100644
--- a/src/jarabe/journal/volumestoolbar.py
+++ b/src/jarabe/journal/volumestoolbar.py
@@ -27,6 +27,7 @@ from sugar.graphics.palette import Palette
from sugar.graphics.xocolor import XoColor
from jarabe.journal import model
+from jarabe.view.palettes import VolumePalette
class VolumesToolbar(gtk.Toolbar):
__gtype_name__ = 'VolumesToolbar'
@@ -77,11 +78,8 @@ class VolumesToolbar(gtk.Toolbar):
def _add_button(self, mount):
logging.debug('VolumeToolbar._add_button: %r' % mount.get_name())
- palette = Palette(mount.get_name())
-
button = VolumeButton(mount)
button.props.group = self._volume_buttons[0]
- button.set_palette(palette)
button.connect('toggled', self._button_toggled_cb)
position = self.get_item_index(self._volume_buttons[-1]) + 1
self.insert(button, position)
@@ -89,12 +87,6 @@ class VolumesToolbar(gtk.Toolbar):
self._volume_buttons.append(button)
- if mount.can_unmount():
- menu_item = gtk.MenuItem(_('Unmount'))
- menu_item.connect('activate', self._unmount_activated_cb, mount)
- palette.menu.append(menu_item)
- menu_item.show()
-
if len(self.get_children()) > 1:
self.show()
@@ -149,6 +141,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)
@@ -160,6 +153,12 @@ class VolumeButton(BaseButton):
color = XoColor(client.get_string('/desktop/sugar/user/color'))
self.props.xo_color = color
+ def create_palette(self):
+ palette = VolumePalette(self._mount)
+ #palette.props.invoker = FrameWidgetInvoker(self)
+ #palette.set_group_id('frame')
+ return palette
+
class JournalButton(BaseButton):
def __init__(self):
BaseButton.__init__(self, mount_point='/')
diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py
index 5ba2cc2..bc542ba 100644
--- a/src/jarabe/view/palettes.py
+++ b/src/jarabe/view/palettes.py
@@ -18,6 +18,7 @@ import os
import statvfs
from gettext import gettext as _
import gconf
+import logging
import gobject
import gtk
@@ -213,8 +214,6 @@ class JournalPalette(BasePalette):
self._home_activity.get_window().activate(gtk.get_current_event_time())
def __popup_cb(self, palette):
- # TODO: we should be able to ask the datastore this info, as that's the
- # component that knows about mount points.
stat = os.statvfs(env.get_profile_path())
free_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL]
total_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BLOCKS]
@@ -224,3 +223,52 @@ class JournalPalette(BasePalette):
self._free_space_label.props.label = _('%(free_space)d MB Free') % \
{'free_space': free_space / (1024 * 1024)}
+class VolumePalette(Palette):
+ def __init__(self, mount):
+ Palette.__init__(self, label=mount.get_name())
+ self._mount = mount
+
+ self.props.secondary_text = mount.get_root().get_path()
+
+ vbox = gtk.VBox()
+ self.set_content(vbox)
+ vbox.show()
+
+ self._progress_bar = gtk.ProgressBar()
+ vbox.add(self._progress_bar)
+ self._progress_bar.show()
+
+ self._free_space_label = gtk.Label()
+ self._free_space_label.set_alignment(0.5, 0.5)
+ vbox.add(self._free_space_label)
+ self._free_space_label.show()
+
+ self.connect('popup', self.__popup_cb)
+
+ menu_item = MenuItem(_('Unmount'))
+
+ icon = Icon(icon_name='media-eject', icon_size=gtk.ICON_SIZE_MENU)
+ menu_item.set_image(icon)
+ icon.show()
+
+ menu_item.connect('activate', self.__unmount_activate_cb)
+ self.menu.append(menu_item)
+ menu_item.show()
+
+ def __unmount_activate_cb(self, menu_item):
+ self._mount.unmount(self.__unmount_cb)
+
+ def __unmount_cb(self, source, result):
+ logging.debug('__unmount_cb %r %r' % (source, result))
+
+ def __popup_cb(self, palette):
+ mount_point = self._mount.get_root().get_path()
+ stat = os.statvfs(mount_point)
+ free_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL]
+ total_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BLOCKS]
+
+ fraction = (total_space - free_space) / float(total_space)
+ self._progress_bar.props.fraction = fraction
+ self._free_space_label.props.label = _('%(free_space)d MB Free') % \
+ {'free_space': free_space / (1024 * 1024)}
+