Ticket #2318: 0001-Free-space-displayed-for-Journal-Button-in-Volumes-T.patch

File 0001-Free-space-displayed-for-Journal-Button-in-Volumes-T.patch, 2.7 KB (added by ishan, 14 years ago)
  • src/jarabe/journal/volumestoolbar.py

    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  
    1616
    1717import logging
    1818import os
     19import statvfs
    1920from gettext import gettext as _
    2021
    2122import gobject
    import gconf 
    2627from sugar.graphics.radiotoolbutton import RadioToolButton
    2728from sugar.graphics.palette import Palette
    2829from sugar.graphics.xocolor import XoColor
     30from sugar import env
    2931
    3032from jarabe.journal import model
    3133from jarabe.view.palettes import VolumePalette
    class VolumesToolbar(gtk.Toolbar): 
    4850        self._mount_removed_hid = None
    4951
    5052        button = JournalButton()
    51         button.set_palette(Palette(_('Journal')))
    5253        button.connect('toggled', self._button_toggled_cb)
    5354        self.insert(button, 0)
    5455        button.show()
    class JournalButton(BaseButton): 
    206207        client = gconf.client_get_default()
    207208        color = XoColor(client.get_string('/desktop/sugar/user/color'))
    208209        self.props.xo_color = color
     210    def create_palette(self):
     211        palette = JournalButtonPalette(self)
     212        return palette
    209213
     214class 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)}