Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/view/frame/ActivitiesBox.py1
-rw-r--r--shell/view/frame/Makefile.am4
-rw-r--r--shell/view/frame/frame.py7
-rw-r--r--shell/view/frame/frameinvoker.py7
-rw-r--r--shell/view/frame/friendstray.py (renamed from shell/view/frame/FriendsBox.py)37
-rw-r--r--sugar/graphics/Makefile.am1
-rw-r--r--sugar/graphics/iconbutton.py48
-rw-r--r--sugar/graphics/tray.py28
-rw-r--r--tests/graphics/tray.py11
9 files changed, 56 insertions, 88 deletions
diff --git a/shell/view/frame/ActivitiesBox.py b/shell/view/frame/ActivitiesBox.py
index 28f3da8..ec79f86 100644
--- a/shell/view/frame/ActivitiesBox.py
+++ b/shell/view/frame/ActivitiesBox.py
@@ -24,7 +24,6 @@ from sugar.graphics import style
from sugar import profile
from sugar import activity
-from frameinvoker import FrameCanvasInvoker
from activitybutton import ActivityButton
class InviteButton(TrayButton):
diff --git a/shell/view/frame/Makefile.am b/shell/view/frame/Makefile.am
index e40219e..7be9986 100644
--- a/shell/view/frame/Makefile.am
+++ b/shell/view/frame/Makefile.am
@@ -6,9 +6,9 @@ sugar_PYTHON = \
clipboardbox.py \
clipboardpanelwindow.py \
frameinvoker.py \
- FriendsBox.py \
+ friendstray.py \
eventarea.py \
frame.py \
overlaybox.py \
framewindow.py \
- zoombox.py
+ zoomtoolbar.py
diff --git a/shell/view/frame/frame.py b/shell/view/frame/frame.py
index 1ce10ed..2784835 100644
--- a/shell/view/frame/frame.py
+++ b/shell/view/frame/frame.py
@@ -29,7 +29,7 @@ from view.frame.eventarea import EventArea
from view.frame.ActivitiesBox import ActivitiesBox
from view.frame.zoomtoolbar import ZoomToolbar
from view.frame.overlaybox import OverlayBox
-from view.frame.FriendsBox import FriendsBox
+from view.frame.friendstray import FriendsTray
from view.frame.framewindow import FrameWindow
from view.frame.clipboardpanelwindow import ClipboardPanelWindow
from model.shellmodel import ShellModel
@@ -227,8 +227,9 @@ class Frame(object):
def _create_right_panel(self):
panel = self._create_panel(gtk.POS_RIGHT)
- box = FriendsBox(self._shell)
- panel.append(box)
+ tray = FriendsTray(self._shell)
+ panel.append(hippo.CanvasWidget(widget=tray), hippo.PACK_EXPAND)
+ tray.show()
return panel
diff --git a/shell/view/frame/frameinvoker.py b/shell/view/frame/frameinvoker.py
index d06082a..2b41655 100644
--- a/shell/view/frame/frameinvoker.py
+++ b/shell/view/frame/frameinvoker.py
@@ -37,10 +37,3 @@ class FrameWidgetInvoker(WidgetInvoker):
self._position_hint = self.ANCHORED
self._screen_area = _get_screen_area()
-
-class FrameCanvasInvoker(CanvasInvoker):
- def __init__(self, item):
- CanvasInvoker.__init__(self, item)
-
- self._position_hint = self.ANCHORED
- self._screen_area = _get_screen_area()
diff --git a/shell/view/frame/FriendsBox.py b/shell/view/frame/friendstray.py
index 2806926..b5c35d6 100644
--- a/shell/view/frame/FriendsBox.py
+++ b/shell/view/frame/friendstray.py
@@ -16,32 +16,27 @@
import hippo
-from sugar.graphics.palette import Palette
-from sugar.graphics.icon import CanvasIcon
-from sugar.graphics import style
from sugar.presence import presenceservice
+from sugar.graphics.tray import VTray, TrayIcon
-from view.BuddyIcon import BuddyIcon
+from view.BuddyMenu import BuddyMenu
+from view.frame.frameinvoker import FrameWidgetInvoker
from model.BuddyModel import BuddyModel
-from view.frame.frameinvoker import FrameCanvasInvoker
-class FriendIcon(BuddyIcon):
+class FriendIcon(TrayIcon):
def __init__(self, shell, buddy):
- BuddyIcon.__init__(self, shell, buddy)
+ TrayIcon.__init__(self, icon_name='computer-xo',
+ xo_color=buddy.get_color())
- palette = self.get_palette()
+ palette = BuddyMenu(shell, buddy)
+ self.set_palette(palette)
palette.set_group_id('frame')
- palette.props.invoker = FrameCanvasInvoker(self)
+ palette.props.invoker = FrameWidgetInvoker(self)
- def prelight(self, enter):
- if enter:
- self.props.background_color = style.COLOR_BLACK.get_int()
- else:
- self.props.background_color = style.COLOR_TOOLBAR_GREY.get_int()
-
-class FriendsBox(hippo.CanvasBox):
+class FriendsTray(VTray):
def __init__(self, shell):
- hippo.CanvasBox.__init__(self)
+ VTray.__init__(self)
+
self._shell = shell
self._activity_ps = None
self._joined_hid = -1
@@ -68,8 +63,10 @@ class FriendsBox(hippo.CanvasBox):
return
model = BuddyModel(buddy=buddy)
+
icon = FriendIcon(self._shell, model)
- self.append(icon)
+ self.add_item(icon)
+ icon.show()
self._buddies[buddy.props.key] = icon
@@ -77,11 +74,11 @@ class FriendsBox(hippo.CanvasBox):
if not self._buddies.has_key(buddy.props.key):
return
- self.remove(self._buddies[buddy.props.key])
+ self.remove_item(self._buddies[buddy.props.key])
def clear(self):
for item in self.get_children():
- self.remove(item)
+ self.remove_item(item)
self._buddies = {}
def __activity_appeared_cb(self, pservice, activity_ps):
diff --git a/sugar/graphics/Makefile.am b/sugar/graphics/Makefile.am
index cf19379..53e05aa 100644
--- a/sugar/graphics/Makefile.am
+++ b/sugar/graphics/Makefile.am
@@ -6,7 +6,6 @@ sugar_PYTHON = \
combobox.py \
entry.py \
icon.py \
- iconbutton.py \
iconentry.py \
menuitem.py \
notebook.py \
diff --git a/sugar/graphics/iconbutton.py b/sugar/graphics/iconbutton.py
deleted file mode 100644
index fd977f6..0000000
--- a/sugar/graphics/iconbutton.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2007, One Laptop Per Child
-#
-# 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.
-
-#
-# DEPRECATED. Do not use in new code. We will reimplement it in gtk
-#
-
-import sys
-
-import gobject
-import hippo
-
-from sugar.graphics.icon import CanvasIcon
-from sugar.graphics import style
-
-class IconButton(CanvasIcon, hippo.CanvasItem):
- __gtype_name__ = 'SugarIconButton'
-
- def __init__(self, **kwargs):
- CanvasIcon.__init__(self, **kwargs)
-
- if not self.props.fill_color and not self.props.stroke_color:
- self.props.fill_color = style.Color("#404040").get_svg()
- self.props.stroke_color = style.Color("#FFFFFF").get_svg()
-
- self.connect('activated', self._icon_clicked_cb)
-
- self.props.box_width = style.GRID_CELL_SIZE
- self.props.box_height = style.GRID_CELL_SIZE
- self.props.size = style.STANDARD_ICON_SIZE
-
- def _icon_clicked_cb(self, button):
- if self._palette:
- self._palette.popdown(True)
diff --git a/sugar/graphics/tray.py b/sugar/graphics/tray.py
index 1845d33..e865db6 100644
--- a/sugar/graphics/tray.py
+++ b/sugar/graphics/tray.py
@@ -19,6 +19,7 @@ import gobject
import gtk
from sugar.graphics import style
+from sugar.graphics.palette import Palette, ToolInvoker
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.icon import Icon
@@ -145,6 +146,9 @@ class HTray(gtk.HBox):
scroll_left.viewport = self._viewport
scroll_right.viewport = self._viewport
+ def get_children(self):
+ return self._viewport.traybar.get_children()
+
def add_item(self, item, index=-1):
self._viewport.traybar.insert(item, index)
@@ -173,6 +177,9 @@ class VTray(gtk.VBox):
scroll_left.viewport = self._viewport
scroll_right.viewport = self._viewport
+ def get_children(self):
+ return self._viewport.traybar.get_children()
+
def add_item(self, item, index=-1):
self._viewport.traybar.insert(item, index)
@@ -185,3 +192,24 @@ class VTray(gtk.VBox):
class TrayButton(ToolButton):
def __init__(self, **kwargs):
ToolButton.__init__(self, **kwargs)
+
+class TrayIcon(gtk.ToolItem):
+ def __init__(self, icon_name=None, xo_color=None):
+ gtk.ToolItem.__init__(self)
+
+ event_box = gtk.EventBox()
+
+ icon = Icon(icon_name=icon_name, xo_color=xo_color,
+ icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR)
+ event_box.add(icon)
+ icon.show()
+
+ self.add(event_box)
+ event_box.show()
+
+ def set_palette(self, palette):
+ self._palette = palette
+ self._palette.props.invoker = ToolInvoker(self.child)
+
+ def set_tooltip(self, text):
+ self.set_palette(Palette(text))
diff --git a/tests/graphics/tray.py b/tests/graphics/tray.py
index 4de9b46..f589f4e 100644
--- a/tests/graphics/tray.py
+++ b/tests/graphics/tray.py
@@ -21,9 +21,8 @@ Test the sugar.graphics.icon.Icon widget.
import gtk
-from sugar.graphics.tray import HTray
-from sugar.graphics.tray import VTray
-from sugar.graphics.tray import TrayButton
+from sugar.graphics.tray import HTray, VTray
+from sugar.graphics.tray import TrayButton, TrayIcon
import common
@@ -47,9 +46,9 @@ vbox.pack_start(tray, False)
tray.show()
for i in range(0, 10):
- button = TrayButton(icon_name=theme_icons[i])
- tray.add_item(button)
- button.show()
+ icon = TrayIcon(icon_name=theme_icons[i])
+ tray.add_item(icon)
+ icon.show()
hbox = gtk.HBox()