[Dextrose] [PATCH] Journal space messages alert and improved modal alert
Anish Mangal
anishmangal2002 at gmail.com
Mon Feb 14 22:38:52 EST 2011
bump again :-)
On Wed, Jan 26, 2011 at 00:59, Anish Mangal <anishmangal2002 at gmail.com> wrote:
> bump!
>
> any updates on this? was it committed to dx/mainline or upstream?
>
> On Tue, Dec 7, 2010 at 18:04, Martin Abente
> <martin.abente.lahaye at gmail.com> wrote:
>> Based on the comments from #630
>>
>> When available space reaches the _PREEMPTIVE_SPACE_TRESHOLD
>> (75MB) a message notification will be displayed on every startup.
>>
>> When available space reaches the _SPACE_TRESHOLD (50MB) the
>> ModalaAlert will be displayed.
>>
>> Changes on the ModaAlert:
>>
>> * It will remain active until there is enough available space again.
>> * It will be deactivated when the journal is on the foreground
>> and it will be activated again otherwise.
>> * It contains a new progressbar to determine intuitively how much
>> deletion is required to reach the safe state again.
>> ---
>> src/jarabe/journal/journalactivity.py | 47 +++++++++++++++++++++++++-------
>> src/jarabe/journal/modalalert.py | 28 +++++++++++++++++--
>> 2 files changed, 61 insertions(+), 14 deletions(-)
>>
>> diff --git a/src/jarabe/journal/journalactivity.py b/src/jarabe/journal/journalactivity.py
>> index eab292b..66299c9 100644
>> --- a/src/jarabe/journal/journalactivity.py
>> +++ b/src/jarabe/journal/journalactivity.py
>> @@ -45,13 +45,16 @@ from jarabe.journal.journalentrybundle import JournalEntryBundle
>> from jarabe.journal.objectchooser import ObjectChooser
>> from jarabe.journal.modalalert import ModalAlert
>> from jarabe.journal import model
>> +from jarabe.frame import get_view
>>
>> J_DBUS_SERVICE = 'org.laptop.Journal'
>> J_DBUS_INTERFACE = 'org.laptop.Journal'
>> J_DBUS_PATH = '/org/laptop/Journal'
>>
>> _SPACE_TRESHOLD = 52428800
>> +_PREEMPTIVE_SPACE_TRESHOLD = _SPACE_TRESHOLD * 1.5
>> _BUNDLE_ID = 'org.laptop.JournalActivity'
>> +_JOURNAL_ICON = 'activity-journal'
>>
>> class JournalActivityDBusService(dbus.service.Object):
>> def __init__(self, parent):
>> @@ -139,7 +142,7 @@ class JournalActivity(Window):
>> self.iconify()
>>
>> self._critical_space_alert = None
>> - self._check_available_space()
>> + self._check_available_space(startup=True)
>>
>> def _alert_notify_cb(self, gobject, strerror, severity):
>> alert = ErrorAlert()
>> @@ -273,6 +276,9 @@ class JournalActivity(Window):
>> kwargs['object_id'] == self._detail_view.props.metadata['uid']:
>> self.show_main_view()
>>
>> + if self._critical_space_alert:
>> + self._check_available_space(display=False)
>> +
>> def _focus_in_event_cb(self, window, event):
>> self.search_grab_focus()
>> self._list_view.update_dates()
>> @@ -324,32 +330,51 @@ class JournalActivity(Window):
>> visible = not state & gtk.gdk.WINDOW_STATE_ICONIFIED
>> self._list_view.set_is_visible(visible)
>>
>> + if self._critical_space_alert and not visible:
>> + self._check_available_space()
>> +
>> def __visibility_notify_event_cb(self, window, event):
>> logging.debug('visibility_notify_event_cb %r', self)
>> visible = event.state != gtk.gdk.VISIBILITY_FULLY_OBSCURED
>> self._list_view.set_is_visible(visible)
>>
>> - def _check_available_space(self):
>> + def _check_available_space(self, startup=False, display=True):
>> ''' Check available space on device
>>
>> If the available space is below 50MB an alert will be
>> shown which encourages to delete old journal entries.
>> '''
>> -
>> - if self._critical_space_alert:
>> - return
>> stat = os.statvfs(env.get_profile_path())
>> free_space = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL]
>> - if free_space < _SPACE_TRESHOLD:
>> +
>> + if self._critical_space_alert and free_space >= _SPACE_TRESHOLD:
>> + self._critical_space_alert.destroy()
>> + self._critical_space_alert = None
>> +
>> + elif free_space < _SPACE_TRESHOLD:
>> + space_fraction = 1.0 - (float(free_space) / float(_SPACE_TRESHOLD))
>> + self._setup_space_alert(space_fraction, display)
>> +
>> + elif startup and free_space < _PREEMPTIVE_SPACE_TRESHOLD:
>> + body = _('Your Journal currently contains too much entries'
>> + ' please consider removing unnecessary ones')
>> +
>> + frame = get_view()
>> + frame.add_message(body, icon_name=_JOURNAL_ICON)
>> +
>> + def _setup_space_alert(self, space_fraction, display):
>> + if self._critical_space_alert is None:
>> self._critical_space_alert = ModalAlert()
>> - self._critical_space_alert.connect('destroy',
>> - self.__alert_closed_cb)
>> - self._critical_space_alert.show()
>> + self._critical_space_alert.connect('show-journal',
>> + self.__show_journal_cb)
>> + self._critical_space_alert.update_space_fraction(space_fraction)
>> + if display:
>> + self._critical_space_alert.present()
>>
>> - def __alert_closed_cb(self, data):
>> + def __show_journal_cb(self, data):
>> self.show_main_view()
>> self.reveal()
>> - self._critical_space_alert = None
>> + self._critical_space_alert.hide()
>>
>> def set_active_volume(self, mount):
>> self._volumes_toolbar.set_active_volume(mount)
>> diff --git a/src/jarabe/journal/modalalert.py b/src/jarabe/journal/modalalert.py
>> index c7c6a0a..0c774e7 100644
>> --- a/src/jarabe/journal/modalalert.py
>> +++ b/src/jarabe/journal/modalalert.py
>> @@ -17,6 +17,7 @@
>> import gtk
>> from gettext import gettext as _
>> import gconf
>> +import gobject
>>
>> from sugar.graphics.icon import Icon
>> from sugar.graphics import style
>> @@ -26,6 +27,10 @@ class ModalAlert(gtk.Window):
>>
>> __gtype_name__ = 'SugarModalAlert'
>>
>> + __gsignals__ = {
>> + 'show-journal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([]))
>> + }
>> +
>> def __init__(self):
>> gtk.Window.__init__(self)
>>
>> @@ -35,6 +40,7 @@ class ModalAlert(gtk.Window):
>> height = gtk.gdk.screen_height() - offset * 2
>> self.set_size_request(width, height)
>> self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
>> + self.set_accept_focus(True)
>> self.set_decorated(False)
>> self.set_resizable(False)
>> self.set_modal(True)
>> @@ -71,6 +77,16 @@ class ModalAlert(gtk.Window):
>> self._vbox.pack_start(self._message, False)
>> self._message.show()
>>
>> + self._space_bar = gtk.ProgressBar()
>> + self._vbox.pack_start(self._space_bar, False)
>> + self._space_bar.show()
>> +
>> + advice = gtk.Label(_('Delete entries until this bar is empty'))
>> + advice.modify_fg(gtk.STATE_NORMAL,
>> + style.COLOR_WHITE.get_gdk_color())
>> + self._vbox.pack_start(advice, False)
>> + advice.show()
>> +
>> alignment = gtk.Alignment(xalign=0.5, yalign=0.5)
>> self._vbox.pack_start(alignment, expand=False)
>> alignment.show()
>> @@ -91,7 +107,13 @@ class ModalAlert(gtk.Window):
>> self.window.set_accept_focus(True)
>>
>> def __show_journal_cb(self, button):
>> - '''The opener will listen on the destroy signal
>> - '''
>> - self.destroy()
>> + self.emit('show-journal')
>> +
>> + def update_space_fraction(self, fraction):
>> + if fraction > 1.0:
>> + fraction = 1.0
>> + elif fraction < 0.0:
>> + fraction = 0.0
>> +
>> + self._space_bar.set_fraction(fraction)
>>
>> --
>> 1.7.1
>>
>> _______________________________________________
>> Dextrose mailing list
>> Dextrose at lists.sugarlabs.org
>> http://lists.sugarlabs.org/listinfo/dextrose
>>
>
>
>
> --
> Anish
>
--
Anish
More information about the Dextrose
mailing list