Re: [Sugar-devel] [PATCH v2] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)

2011-02-12 Thread Sascha Silbe
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


Re: [Sugar-devel] [PATCH v2] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)

2010-10-18 Thread James Cameron
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


[Sugar-devel] [PATCH v2] Free space displayed for Journal Button in Volumes Toolbar. (Ticket #2318)

2010-10-17 Thread Ishan Bansal
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