diff options
author | Eben Eliason <eben@sugar.(none)> | 2009-01-15 21:18:32 (GMT) |
---|---|---|
committer | Eben Eliason <eben@sugar.(none)> | 2009-01-15 21:18:32 (GMT) |
commit | 487c684f0548a68ff6bfaf0516659de16bd2dbab (patch) | |
tree | 0bf21b277cb87442b7360eb0e9b36881573338db /src/jarabe | |
parent | a718e0890927bd9417410edd68cc70a7c2e36f6c (diff) |
Make the XO menu ubiquitous in the UI.
This change makes the XO menu appear on all instances
of the XO icon in the UI, including all zoom levels
as well as the Frame.
In the short term, the register option remains as a
special case only on the XO enu in Home.
Diffstat (limited to 'src/jarabe')
-rw-r--r-- | src/jarabe/desktop/favoritesview.py | 30 | ||||
-rw-r--r-- | src/jarabe/desktop/groupbox.py | 13 | ||||
-rw-r--r-- | src/jarabe/view/buddymenu.py | 39 |
3 files changed, 48 insertions, 34 deletions
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 27e1c32..81f2730 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -31,10 +31,13 @@ from sugar.graphics.menuitem import MenuItem from sugar.graphics.alert import Alert from sugar.graphics.xocolor import XoColor from sugar.activity import activityfactory +from sugar.presence import presenceservice from sugar import dispatch from jarabe.view.palettes import JournalPalette from jarabe.view.palettes import CurrentActivityPalette, ActivityPalette +from jarabe.view.buddymenu import BuddyMenu +from jarabe.model.buddy import BuddyModel from jarabe.model import shell from jarabe.model import bundleregistry from jarabe import journal @@ -620,30 +623,11 @@ class _MyIcon(MyIcon): self._palette_enabled = True return - client = gconf.client_get_default() - nick = client.get_string("/desktop/sugar/user/nick") - color = XoColor(client.get_string("/desktop/sugar/user/color")) - - palette_icon = Icon(icon_name='computer-xo', - icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, - xo_color=color) - palette = Palette(nick, icon=palette_icon) - - item = MenuItem(_('Settings'), 'preferences-system') - item.connect('activate', self.__controlpanel_activate_cb) - palette.menu.append(item) - item.show() - - item = MenuItem(_('Restart'), 'system-restart') - item.connect('activate', self._reboot_activate_cb) - palette.menu.append(item) - item.show() - - item = MenuItem(_('Shutdown'), 'system-shutdown') - item.connect('activate', self._shutdown_activate_cb) - palette.menu.append(item) - item.show() + presence_service = presenceservice.get_instance() + owner = BuddyModel(buddy=presence_service.get_owner()) + palette = BuddyMenu(owner) + client = gconf.client_get_default() backup_url = client.get_string('/desktop/sugar/backup_url') if not backup_url: self._register_menu = MenuItem(_('Register'), 'media-record') diff --git a/src/jarabe/desktop/groupbox.py b/src/jarabe/desktop/groupbox.py index b77ae6e..5599d0c 100644 --- a/src/jarabe/desktop/groupbox.py +++ b/src/jarabe/desktop/groupbox.py @@ -25,7 +25,10 @@ from sugar.graphics import style from sugar.graphics.icon import CanvasIcon, Icon from sugar.graphics.palette import Palette from sugar.graphics.xocolor import XoColor +from sugar.presence import presenceservice +from jarabe.view.buddymenu import BuddyMenu +from jarabe.model.buddy import BuddyModel from jarabe.model import friends from jarabe.desktop.friendview import FriendView from jarabe.desktop.spreadlayout import SpreadLayout @@ -52,14 +55,10 @@ class GroupBox(hippo.Canvas): self._owner_icon = CanvasIcon(icon_name='computer-xo', cache=True, xo_color=color) self._owner_icon.props.size = style.LARGE_ICON_SIZE - palette_icon = Icon(icon_name='computer-xo', - xo_color=color) - palette_icon.props.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR - nick = client.get_string("/desktop/sugar/user/nick") - palette = Palette(None, primary_text=nick, icon=palette_icon) - - self._owner_icon.set_palette(palette) + presence_service = presenceservice.get_instance() + owner = BuddyModel(buddy=presence_service.get_owner()) + self._owner_icon.set_palette(BuddyMenu(owner)) self._layout.add(self._owner_icon) friends_model = friends.get_model() diff --git a/src/jarabe/view/buddymenu.py b/src/jarabe/view/buddymenu.py index fc1fdbe..2e0be1e 100644 --- a/src/jarabe/view/buddymenu.py +++ b/src/jarabe/view/buddymenu.py @@ -42,8 +42,10 @@ class BuddyMenu(Palette): self._buddy.connect('icon-changed', self._buddy_icon_changed_cb) self._buddy.connect('nick-changed', self._buddy_nick_changed_cb) - if not buddy.is_owner(): - self._add_items() + if buddy.is_owner(): + self._add_my_items() + else: + self._add_buddy_items() def __destroy_cb(self, menu): if self._active_activity_changed_hid is not None: @@ -52,7 +54,7 @@ class BuddyMenu(Palette): self._buddy.disconnect_by_func(self._buddy_icon_changed_cb) self._buddy.disconnect_by_func(self._buddy_nick_changed_cb) - def _add_items(self): + def _add_buddy_items(self): if friends.get_model().has_buddy(self._buddy): menu_item = MenuItem(_('Remove friend'), 'list-remove') menu_item.connect('activate', self._remove_friend_cb) @@ -72,7 +74,36 @@ class BuddyMenu(Palette): 'active-activity-changed', self._cur_activity_changed_cb) activity = home_model.get_active_activity() self._update_invite_menu(activity) - + + def _add_my_items(self): + item = MenuItem(_('My Settings'), 'preferences-system') + item.connect('activate', self.__controlpanel_activate_cb) + self.menu.append(item) + item.show() + + item = MenuItem(_('Restart'), 'system-restart') + item.connect('activate', self.__reboot_activate_cb) + self.menu.append(item) + item.show() + + item = MenuItem(_('Shutdown'), 'system-shutdown') + item.connect('activate', self.__shutdown_activate_cb) + self.menu.append(item) + item.show() + + def __reboot_activate_cb(self, menu_item): + session_manager = get_session_manager() + session_manager.reboot() + + def __shutdown_activate_cb(self, menu_item): + session_manager = get_session_manager() + session_manager.shutdown() + + def __controlpanel_activate_cb(self, menu_item): + panel = ControlPanel() + panel.set_transient_for(self.get_toplevel()) + panel.show() + def _update_invite_menu(self, activity): buddy_activity = self._buddy.get_current_activity() if buddy_activity is not None: |