From 713502eda39e1686283c5f2d33071ebd8bdb7bf4 Mon Sep 17 00:00:00 2001
From: Ishan Bansal <ishan@seeta.in>
Date: Mon, 27 Sep 2010 23:37:38 +0530
Subject: [PATCH] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)
Pallete added to calculate and display free journal space when we write click.
---
src/jarabe/journal/volumestoolbar.py | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
index 4208c17..749f2cb 100644
a
|
b
|
|
16 | 16 | |
17 | 17 | import logging |
18 | 18 | import os |
| 19 | import statvfs |
19 | 20 | from gettext import gettext as _ |
20 | 21 | |
21 | 22 | import gobject |
… |
… |
import gconf |
26 | 27 | from sugar.graphics.radiotoolbutton import RadioToolButton |
27 | 28 | from sugar.graphics.palette import Palette |
28 | 29 | from sugar.graphics.xocolor import XoColor |
| 30 | from sugar import env |
29 | 31 | |
30 | 32 | from jarabe.journal import model |
31 | 33 | from jarabe.view.palettes import VolumePalette |
… |
… |
class VolumesToolbar(gtk.Toolbar): |
48 | 50 | self._mount_removed_hid = None |
49 | 51 | |
50 | 52 | button = JournalButton() |
51 | | button.set_palette(Palette(_('Journal'))) |
52 | 53 | button.connect('toggled', self._button_toggled_cb) |
53 | 54 | self.insert(button, 0) |
54 | 55 | button.show() |
… |
… |
class JournalButton(BaseButton): |
206 | 207 | client = gconf.client_get_default() |
207 | 208 | color = XoColor(client.get_string('/desktop/sugar/user/color')) |
208 | 209 | self.props.xo_color = color |
| 210 | def create_palette(self): |
| 211 | palette = JournalButtonPalette(self) |
| 212 | return palette |
209 | 213 | |
| 214 | class JournalButtonPalette(Palette): |
| 215 | def __init__(self, mount): |
| 216 | label = 'Journal' |
| 217 | Palette.__init__(self, label) |
| 218 | vbox = gtk.VBox() |
| 219 | self.set_content(vbox) |
| 220 | vbox.show() |
| 221 | |
| 222 | self._progress_bar = gtk.ProgressBar() |
| 223 | vbox.add(self._progress_bar) |
| 224 | self._progress_bar.show() |
| 225 | |
| 226 | self._free_space_label = gtk.Label() |
| 227 | self._free_space_label.set_alignment(0.5, 0.5) |
| 228 | vbox.add(self._free_space_label) |
| 229 | self._free_space_label.show() |
| 230 | |
| 231 | self.connect('popup', self.__popup_cb) |
| 232 | |
| 233 | def __popup_cb(self, palette): |
| 234 | stat = os.statvfs(env.get_profile_path()) |
| 235 | free_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL] |
| 236 | total_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BLOCKS] |
| 237 | |
| 238 | fraction = (total_space - free_space) / float(total_space) |
| 239 | self._progress_bar.props.fraction = fraction |
| 240 | self._free_space_label.props.label = _('%(free_space)d MB Free') % \ |
| 241 | {'free_space': free_space / (1024 * 1024)} |