Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar

This commit is contained in:
Marco Pesenti Gritti 2007-07-05 21:24:50 +02:00
commit 290a053892
4 changed files with 56 additions and 3 deletions

View File

@ -21,6 +21,7 @@ import gobject
import hippo import hippo
from sugar.graphics.palette import Palette from sugar.graphics.palette import Palette
from sugar.graphics.menuitem import MenuItem
from sugar.graphics import units from sugar.graphics import units
from sugar.presence import presenceservice from sugar.presence import presenceservice
@ -74,10 +75,10 @@ class BuddyMenu(Palette):
friends = shell_model.get_friends() friends = shell_model.get_friends()
if friends.has_buddy(self._buddy): if friends.has_buddy(self._buddy):
menu_item = gtk.MenuItem(_('Remove friend')) #, 'theme:stock-remove') menu_item = MenuItem(_('Remove friend'), 'stock-remove')
menu_item.connect('activate', self._remove_friend_cb) menu_item.connect('activate', self._remove_friend_cb)
else: else:
menu_item = gtk.MenuItem(_('Make friend')) #, 'theme:stock-add') menu_item = MenuItem(_('Make friend'), 'stock-add')
menu_item.connect('activate', self._make_friend_cb) menu_item.connect('activate', self._make_friend_cb)
self.append_menu_item(menu_item) self.append_menu_item(menu_item)
menu_item.show() menu_item.show()
@ -88,7 +89,7 @@ class BuddyMenu(Palette):
# FIXME check that the buddy is not in the activity already # FIXME check that the buddy is not in the activity already
menu_item = gtk.MenuItem(_('Invite')) #, 'theme:stock-invite') menu_item = MenuItem(_('Invite'), 'stock-invite')
menu_item.connect('activate', self._invite_friend_cb) menu_item.connect('activate', self._invite_friend_cb)
self.append_menu_item(menu_item) self.append_menu_item(menu_item)
menu_item.show() menu_item.show()

View File

@ -11,6 +11,7 @@ sugar_PYTHON = \
font.py \ font.py \
frame.py \ frame.py \
notebook.py \ notebook.py \
menuitem.py \
objectchooser.py \ objectchooser.py \
radiotoolbutton.py \ radiotoolbutton.py \
roundbox.py \ roundbox.py \

View File

@ -0,0 +1,28 @@
# Copyright (C) 2007, Eduardo Silva <edsiper@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
import gtk
from sugar.graphics.icon import Icon
class MenuItem(gtk.ImageMenuItem):
def __init__(self, text_label, icon_name=None):
gtk.ImageMenuItem.__init__(self, text_label)
if icon_name:
icon = Icon(icon_name, gtk.ICON_SIZE_MENU)
self.set_image(icon)
icon.show()

View File

@ -55,6 +55,7 @@ class Palette(gobject.GObject):
gobject.GObject.__init__(self) gobject.GObject.__init__(self)
self._position = self.AUTOMATIC self._position = self.AUTOMATIC
self._palette_popup_sid = None
self._popup_anim = animator.Animator(0.3, 10) self._popup_anim = animator.Animator(0.3, 10)
self._popup_anim.add(_PopupAnimation(self)) self._popup_anim.add(_PopupAnimation(self))
@ -202,9 +203,15 @@ class Palette(gobject.GObject):
if not self._in_screen(x, y): if not self._in_screen(x, y):
x, y = self._get_position(_TOP_RIGHT) x, y = self._get_position(_TOP_RIGHT)
self._palette_popup_sid = _palette_observer.connect('popup',
self._palette_observer_popup_cb)
self._menu.popup(x, y) self._menu.popup(x, y)
_palette_observer.emit('popup', self)
def _hide(self): def _hide(self):
if not self._palette_popup_sid is None:
_palette_observer.disconnect(self._palette_popup_sid)
self._palette_popup_sid = None
self._menu.popdown() self._menu.popdown()
def popup(self): def popup(self):
@ -234,6 +241,10 @@ class Palette(gobject.GObject):
def _button_press_event_cb(self, widget, event): def _button_press_event_cb(self, widget, event):
pass pass
def _palette_observer_popup_cb(self, observer, palette):
if self != palette:
self._hide()
class _PrimaryMenuItem(gtk.MenuItem): class _PrimaryMenuItem(gtk.MenuItem):
def __init__(self, label, accel_path): def __init__(self, label, accel_path):
gtk.MenuItem.__init__(self) gtk.MenuItem.__init__(self)
@ -390,3 +401,15 @@ class CanvasInvoker(Invoker):
self.notify_mouse_leave() self.notify_mouse_leave()
return False return False
class _PaletteObserver(gobject.GObject):
__gtype_name__ = 'SugarPaletteObserver'
__gsignals__ = {
'popup': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([object]))
}
def __init__(self):
gobject.GObject.__init__(self)
_palette_observer = _PaletteObserver()