Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@laptop.org>2012-10-25 12:09:00 (GMT)
committer Simon Schampijer <simon@laptop.org>2012-10-25 13:57:51 (GMT)
commit365f11dcd48b8689528b536cf845a19082366114 (patch)
treee3682f0b52a4c3c9a729c89cd6406012e6baabd8
parentcfac8c9a7c33b1db531e9fb6bb6f22ee7435d863 (diff)
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 <simon@laptop.org> Acked-by: Manuel QuiƱones <manuq@laptop.org>
-rw-r--r--src/jarabe/desktop/favoritesview.py17
-rw-r--r--src/jarabe/view/buddyicon.py6
-rw-r--r--src/jarabe/view/buddymenu.py39
3 files changed, 30 insertions, 32 deletions
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()