Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe
diff options
context:
space:
mode:
authorEben Eliason <eben@sugar.(none)>2009-01-15 21:18:32 (GMT)
committer Eben Eliason <eben@sugar.(none)>2009-01-15 21:18:32 (GMT)
commit487c684f0548a68ff6bfaf0516659de16bd2dbab (patch)
tree0bf21b277cb87442b7360eb0e9b36881573338db /src/jarabe
parenta718e0890927bd9417410edd68cc70a7c2e36f6c (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.py30
-rw-r--r--src/jarabe/desktop/groupbox.py13
-rw-r--r--src/jarabe/view/buddymenu.py39
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: