[Sugar-devel] [PATCH v2] 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 | 36 +- 1 files changed, 35 insertions(+), 1 deletions(-) v1->v2: pep8 errors corrected diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py index 4208c17..76bf607 100644 --- a/src/jarabe/journal/volumestoolbar.py +++ b/src/jarabe/journal/volumestoolbar.py @@ -17,6 +17,7 @@ import logging import os from gettext import gettext as _ +import statvfs import gobject import gio @@ -26,6 +27,7 @@ import gconf from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.palette import Palette from sugar.graphics.xocolor import XoColor +from sugar import env from jarabe.journal import model from jarabe.view.palettes import VolumePalette @@ -48,7 +50,6 @@ class VolumesToolbar(gtk.Toolbar): self._mount_removed_hid = None button = JournalButton() -button.set_palette(Palette(_('Journal'))) button.connect('toggled', self._button_toggled_cb) self.insert(button, 0) button.show() @@ -207,3 +208,36 @@ class JournalButton(BaseButton): color = XoColor(client.get_string('/desktop/sugar/user/color')) self.props.xo_color = color +def create_palette(self): +palette = JournalButtonPalette(self) +return palette + +class JournalButtonPalette(Palette): +def __init__(self, mount): +label = _('Journal') +Palette.__init__(self, label) + +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) + +def __popup_cb(self, palette): +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] + +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)} -- 1.7.0.4 ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] [PATCH v2] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)
On Mon, Oct 18, 2010 at 12:14:59AM +0530, Ishan Bansal wrote: > Pallete added to calculate and display free journal space when we write click. Two errors. s/Pallete/Palette s/write click/right click > --- a/src/jarabe/journal/volumestoolbar.py > +++ b/src/jarabe/journal/volumestoolbar.py > [...] > @@ -207,3 +208,36 @@ class JournalButton(BaseButton): > color = XoColor(client.get_string('/desktop/sugar/user/color')) > self.props.xo_color = color > > +def create_palette(self): > +palette = JournalButtonPalette(self) > +return palette > + > +class JournalButtonPalette(Palette): > +def __init__(self, mount): > +label = _('Journal') > +Palette.__init__(self, label) > + > +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) > + > +def __popup_cb(self, palette): > +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] > + > +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)} An os.statvfs against get_profile_path ... this looks very familiar. It is very similar to code in src/jarabe/journal/journalactivity.py and src/jarabe/view/palettes.py The use of the gtk.ProgressBar also appears in a similar form in src/jarabe/view/palettes.py Perhaps it is time to factor rather than duplicate code. -- James Cameron http://quozl.linux.org.au/ ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] [PATCH v2] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)
Excerpts from Ishan Bansal's message of Sun Oct 17 20:44:59 +0200 2010: > Pallete added to calculate and display free journal space when we write click. Pushed (with a different description) as 8e59b30 [1], thanks! I tried refactoring this to use jarabe.views.palettes.JournalPalette, but the latter builds on jarabe.views.palettes.BasePalette which requires a HomeActivity instance to work. Since jarabe.journal.JournalButton is added during Journal initialisation, a HomeActivity instance (which is basically a wrapper around a mapped window in our window manager code) is not available. I'm not perfectly happy with the code duplication, but we can revisit this when we slim out our window manager code. Sascha [1] http://git.sugarlabs.org/sugar/mainline/commit/8e59b300caeff8fee61eb8e586ef54ad64cdf0f1 -- http://sascha.silbe.org/ http://www.infra-silbe.de/ signature.asc Description: PGP signature ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel