From 365f11dcd48b8689528b536cf845a19082366114 Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Thu, 25 Oct 2012 12:09:00 +0000 Subject: BuddyMenu: switch from GTK.Menu to custom menu, part of SL #3992 The Gtk.Menu triggers a Palette popdown in a long press (and actually as well a long click). There is not realy a way around that so we go with our custom Palettes. Use the toggle_palette property from the invoker in order to popup/popdown Palette on left click or tap. Fixme: we need to make the Palette widget accessible through the Palette API. Signed-off-by: Simon Schampijer Acked-by: Manuel QuiƱones --- diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index e71b769..6e32363 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -29,7 +29,6 @@ from gi.repository import GdkPixbuf from sugar3.graphics import style from sugar3.graphics.icon import Icon from sugar3.graphics.icon import CanvasIcon -from sugar3.graphics.menuitem import MenuItem from sugar3.graphics.palettemenuitem import PaletteMenuItem from sugar3.graphics.palettemenuitem import PaletteMenuItemSeparator from sugar3.graphics.alert import Alert @@ -606,13 +605,14 @@ class OwnerIcon(BuddyIcon): backup_url = client.get_string('/desktop/sugar/backup_url') if not backup_url: - self._register_menu = MenuItem(_('Register'), 'media-record') + self._register_menu = PaletteMenuItem(_('Register'), + 'media-record') else: - self._register_menu = MenuItem(_('Register again'), - 'media-record') + self._register_menu = PaletteMenuItem(_('Register again'), + 'media-record') self._register_menu.connect('activate', self.__register_activate_cb) - palette.menu.append(self._register_menu) + palette.menu_box.pack_end(self._register_menu, True, True, 0) self._register_menu.show() self.connect_to_palette_pop_events(palette) @@ -623,10 +623,11 @@ class OwnerIcon(BuddyIcon): self.emit('register-activate') def set_registered(self): - self.palette.menu.remove(self._register_menu) - self._register_menu = MenuItem(_('Register again'), 'media-record') + self.palette.menu_box.remove(self._register_menu) + self._register_menu = PaletteMenuItem(_('Register again'), + 'media-record') self._register_menu.connect('activate', self.__register_activate_cb) - self.palette.menu.append(self._register_menu) + self.palette.menu_box.pack_end(self._register_menu, True, True, 0) self._register_menu.show() diff --git a/src/jarabe/view/buddyicon.py b/src/jarabe/view/buddyicon.py index cd648b1..6320113 100644 --- a/src/jarabe/view/buddyicon.py +++ b/src/jarabe/view/buddyicon.py @@ -35,8 +35,7 @@ class BuddyIcon(CanvasIcon): self._buddy.connect('notify::present', self.__buddy_notify_present_cb) self._buddy.connect('notify::color', self.__buddy_notify_color_cb) - self.connect('button-release-event', self.__button_release_event_cb) - + self.palette_invoker.props.toggle_palette = True self.palette_invoker.cache_palette = False self._update_color() @@ -46,9 +45,6 @@ class BuddyIcon(CanvasIcon): self.connect_to_palette_pop_events(palette) return palette - def __button_release_event_cb(self, icon, event): - self.props.palette.popup(immediate=True, state=Palette.SECONDARY) - def __buddy_notify_present_cb(self, buddy, pspec): # Update the icon's color when the buddy comes and goes self._update_color() diff --git a/src/jarabe/view/buddymenu.py b/src/jarabe/view/buddymenu.py index d17f4ff..f1cc533 100644 --- a/src/jarabe/view/buddymenu.py +++ b/src/jarabe/view/buddymenu.py @@ -24,7 +24,7 @@ import glib import dbus from sugar3.graphics.palette import Palette -from sugar3.graphics.menuitem import MenuItem +from sugar3.graphics.palettemenuitem import PaletteMenuItem from sugar3.graphics.icon import Icon from jarabe.model import shell @@ -45,9 +45,13 @@ class BuddyMenu(Palette): Palette.__init__(self, None, primary_text=glib.markup_escape_text(nick), icon=buddy_icon) + self.menu_box = Gtk.VBox() + self.set_content(self.menu_box) + self.menu_box.show_all() self._invite_menu = None self._active_activity_changed_hid = None - self.get_menu().connect('destroy', self.__destroy_cb) + # Fixme: we need to make the widget accessible through the Palette API + self._widget.connect('destroy', self.__destroy_cb) self._buddy.connect('notify::nick', self.__buddy_notify_nick_cb) @@ -64,18 +68,17 @@ class BuddyMenu(Palette): def _add_buddy_items(self): if friends.get_model().has_buddy(self._buddy): - menu_item = MenuItem(_('Remove friend'), 'list-remove') + menu_item = PaletteMenuItem(_('Remove friend'), 'list-remove') menu_item.connect('activate', self._remove_friend_cb) else: - menu_item = MenuItem(_('Make friend'), 'list-add') + menu_item = PaletteMenuItem(_('Make friend'), 'list-add') menu_item.connect('activate', self._make_friend_cb) - self.menu.append(menu_item) - menu_item.show() + self.menu_box.pack_start(menu_box, True, True, 0) - self._invite_menu = MenuItem('') + self._invite_menu = PaletteMenuItem('') self._invite_menu.connect('activate', self._invite_friend_cb) - self.menu.append(self._invite_menu) + self.menu_box.pack_start(self._invite_menu, True, True, 0) home_model = shell.get_model() self._active_activity_changed_hid = home_model.connect( @@ -84,28 +87,27 @@ class BuddyMenu(Palette): self._update_invite_menu(activity) def _add_my_items(self): - item = MenuItem(_('Shutdown'), 'system-shutdown') + item = PaletteMenuItem(_('Shutdown'), 'system-shutdown') item.connect('activate', self.__shutdown_activate_cb) - self.menu.append(item) - item.show() + self.menu_box.pack_start(item, True, True, 0) client = GConf.Client.get_default() if client.get_bool('/desktop/sugar/show_restart'): - item = MenuItem(_('Restart'), 'system-restart') + item = PaletteMenuItem(_('Restart'), 'system-restart') item.connect('activate', self.__reboot_activate_cb) - self.menu.append(item) + self.menu_box.pack_start(item, True, True, 0) item.show() if client.get_bool('/desktop/sugar/show_logout'): - item = MenuItem(_('Logout'), 'system-logout') + item = PaletteMenuItem(_('Logout'), 'system-logout') item.connect('activate', self.__logout_activate_cb) - self.menu.append(item) + self.menu_box.pack_start(item, True, True, 0) item.show() - item = MenuItem(_('My Settings'), 'preferences-system') + item = PaletteMenuItem(_('My Settings'), 'preferences-system') item.connect('activate', self.__controlpanel_activate_cb) - self.menu.append(item) + self.menu_box.pack_start(item, True, True, 0) item.show() def _quit(self, action): @@ -138,8 +140,7 @@ class BuddyMenu(Palette): self._invite_menu.hide() else: title = activity.get_title() - label = self._invite_menu.get_children()[0] - label.set_text(_('Invite to %s') % title) + self._invite_menu.set_label(_('Invite to %s') % title) icon = Icon(file=activity.get_icon_path()) icon.props.xo_color = activity.get_icon_color() -- cgit v0.9.1