Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/FriendIcon.py53
-rw-r--r--shell/Makefile.am1
-rw-r--r--shell/home/FriendsGroup.py53
3 files changed, 55 insertions, 52 deletions
diff --git a/shell/FriendIcon.py b/shell/FriendIcon.py
new file mode 100644
index 0000000..384e745
--- /dev/null
+++ b/shell/FriendIcon.py
@@ -0,0 +1,53 @@
+from sugar.canvas.IconItem import IconItem
+from FriendPopup import FriendPopup
+from sugar.canvas.Grid import Grid
+
+class FriendIcon(IconItem):
+ def __init__(self, shell, friend):
+ IconItem.__init__(self, icon_name='stock-buddy',
+ color=friend.get_color(), size=96)
+
+ self._shell = shell
+ self._friend = friend
+ self._popup = None
+
+ self.connect('popup', self._popup_cb)
+ self.connect('popdown', self._popdown_cb)
+
+ def get_friend(self):
+ return self._friend
+
+ def _popup_cb(self, icon, x1, y1, x2, y2):
+ grid = Grid()
+
+ if not self._popup:
+ self._popup = FriendPopup(self._shell, grid, icon.get_friend())
+
+ [grid_x1, grid_y1] = grid.convert_from_screen(x1, y1)
+ [grid_x2, grid_y2] = grid.convert_from_screen(x2, y2)
+
+ if grid_x2 + self._popup.get_width() + 1 > Grid.ROWS:
+ grid_x = grid_x1 - self._popup.get_width() + 1
+ else:
+ grid_x = grid_x2 - 1
+
+ grid_y = grid_y1
+
+ if grid_y < 0:
+ grid_y = 0
+ if grid_y + self._popup.get_width() > Grid.ROWS:
+ grid_y = Grid.ROWS - self._popup.get_width()
+
+ grid.set_constraints(self._popup, grid_x, grid_y,
+ self._popup.get_width(), self._popup.get_height())
+
+ self._popup.show()
+
+ def _popup_destroy_cb(self, popup):
+ self._popup = None
+
+ def _popdown_cb(self, friend):
+ if self._popup:
+ self._popup.connect('destroy', self._popup_destroy_cb)
+ self._popup.popdown()
+
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 4a1d49b..f48be4e 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -14,6 +14,7 @@ sugar_PYTHON = \
ChatController.py \
ConsoleWindow.py \
FirstTimeDialog.py \
+ FriendIcon.py \
FriendPopup.py \
Friends.py \
Invites.py \
diff --git a/shell/home/FriendsGroup.py b/shell/home/FriendsGroup.py
index 605070b..ed87015 100644
--- a/shell/home/FriendsGroup.py
+++ b/shell/home/FriendsGroup.py
@@ -2,60 +2,9 @@ import random
import goocanvas
-from sugar.canvas.IconItem import IconItem
from home.IconLayout import IconLayout
from home.MyIcon import MyIcon
-from FriendPopup import FriendPopup
-from sugar.canvas.Grid import Grid
-
-class FriendIcon(IconItem):
- def __init__(self, shell, friend):
- IconItem.__init__(self, icon_name='stock-buddy',
- color=friend.get_color(), size=96)
-
- self._shell = shell
- self._friend = friend
- self._popup = None
-
- self.connect('popup', self._popup_cb)
- self.connect('popdown', self._popdown_cb)
-
- def get_friend(self):
- return self._friend
-
- def _popup_cb(self, icon, x1, y1, x2, y2):
- grid = Grid()
-
- if not self._popup:
- self._popup = FriendPopup(self._shell, grid, icon.get_friend())
-
- [grid_x1, grid_y1] = grid.convert_from_screen(x1, y1)
- [grid_x2, grid_y2] = grid.convert_from_screen(x2, y2)
-
- if grid_x2 + self._popup.get_width() + 1 > Grid.ROWS:
- grid_x = grid_x1 - self._popup.get_width() + 1
- else:
- grid_x = grid_x2 - 1
-
- grid_y = grid_y1
-
- if grid_y < 0:
- grid_y = 0
- if grid_y + self._popup.get_width() > Grid.ROWS:
- grid_y = Grid.ROWS - self._popup.get_width()
-
- grid.set_constraints(self._popup, grid_x, grid_y,
- self._popup.get_width(), self._popup.get_height())
-
- self._popup.show()
-
- def _popup_destroy_cb(self, popup):
- self._popup = None
-
- def _popdown_cb(self, friend):
- if self._popup:
- self._popup.connect('destroy', self._popup_destroy_cb)
- self._popup.popdown()
+from FriendIcon import FriendIcon
class FriendsGroup(goocanvas.Group):
def __init__(self, shell, friends):