diff options
author | Sascha Silbe <silbe@activitycentral.com> | 2010-12-15 00:22:29 (GMT) |
---|---|---|
committer | Sascha Silbe <silbe@activitycentral.com> | 2011-02-12 12:45:44 (GMT) |
commit | df126badb7b76e5152c4abfdfec17db02cefa014 (patch) | |
tree | 571db4e67b525b29c0bbe024e031f29bfe867a78 | |
parent | 8e59b300caeff8fee61eb8e586ef54ad64cdf0f1 (diff) |
Show busy cursor during session shutdown
Show a busy cursor when shutdown, logout, or reboot options are
selected. Defer the selected action to an idle task so that the cursor
change is flushed to the display.
Co-Authored-By: James Cameron <quozl@laptop.org>
Co-Authored-By: Aleksey Lim <alsroot@member.fsf.org>
Co-Authored-By: Anurag Chowdhury <anurag@seeta.in>
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
Reviewed-by: James Cameron <quozl@laptop.org>
-rw-r--r-- | src/jarabe/desktop/homewindow.py | 14 | ||||
-rw-r--r-- | src/jarabe/view/buddymenu.py | 14 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/jarabe/desktop/homewindow.py b/src/jarabe/desktop/homewindow.py index 945a9c1..07deff7 100644 --- a/src/jarabe/desktop/homewindow.py +++ b/src/jarabe/desktop/homewindow.py @@ -16,6 +16,7 @@ import logging +import gobject import gtk from sugar.graphics import style @@ -187,6 +188,19 @@ class HomeWindow(gtk.Window): def get_home_box(self): return self._home_box + def busy_during_delayed_action(self, action): + """Use busy cursor during execution of action, scheduled via idle_add. + """ + def action_wrapper(old_cursor): + try: + action() + finally: + self.get_window().set_cursor(old_cursor) + + old_cursor = self.get_window().get_cursor() + self.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) + gobject.idle_add(action_wrapper, old_cursor) + def get_instance(): global _instance diff --git a/src/jarabe/view/buddymenu.py b/src/jarabe/view/buddymenu.py index 61b10e9..f824e70 100644 --- a/src/jarabe/view/buddymenu.py +++ b/src/jarabe/view/buddymenu.py @@ -30,6 +30,7 @@ from jarabe.model import shell from jarabe.model import friends from jarabe.model.session import get_session_manager from jarabe.controlpanel.gui import ControlPanel +import jarabe.desktop.homewindow class BuddyMenu(Palette): @@ -104,17 +105,18 @@ class BuddyMenu(Palette): self.menu.append(item) item.show() + def _quit(self, action): + home_window = jarabe.desktop.homewindow.get_instance() + home_window.busy_during_delayed_action(action) + def __logout_activate_cb(self, menu_item): - session_manager = get_session_manager() - session_manager.logout() + self._quit(get_session_manager().logout) def __reboot_activate_cb(self, menu_item): - session_manager = get_session_manager() - session_manager.reboot() + self._quit(get_session_manager().reboot) def __shutdown_activate_cb(self, menu_item): - session_manager = get_session_manager() - session_manager.shutdown() + self._quit(get_session_manager().shutdown) def __controlpanel_activate_cb(self, menu_item): panel = ControlPanel() |