diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-08-17 08:32:59 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-08-17 08:32:59 (GMT) |
commit | 7990bc0d3126408e2728e3f41745e1332182de5b (patch) | |
tree | 5434fa00ac1502b55e961672f3d9a69c73e4f2d4 /shell | |
parent | dae3d2be2b99cbbb59a3aff1ab00fb0b8705a3ff (diff) |
Get activity bar and activity creation to work
Diffstat (limited to 'shell')
-rw-r--r-- | shell/HomeWindow.py | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/shell/HomeWindow.py b/shell/HomeWindow.py index d44add6..1449d0d 100644 --- a/shell/HomeWindow.py +++ b/shell/HomeWindow.py @@ -3,17 +3,27 @@ import goocanvas from sugar.canvas.IconItem import IconItem +class ActivityItem(IconItem): + def __init__(self, activity): + IconItem.__init__(self, activity.get_icon(), 'white', 30) + self._activity = activity + + def get_activity_id(self): + return self._activity.get_id() + class ActivityBar(goocanvas.Group): - def __init__(self, registry): + def __init__(self, shell): goocanvas.Group.__init__(self) + self._shell = shell + + registry = shell.get_registry() for activity in registry.list_activities(): if activity.get_show_launcher(): self.add_activity(activity) def add_activity(self, activity): - item = IconItem(icon_name=activity.get_icon(), - color='white', width=42, height=42) + item = ActivityItem(activity) self.add_child(item) class Background(goocanvas.Group): @@ -43,7 +53,8 @@ class Model(goocanvas.CanvasModelSimple): background = Background() root.add_child(background) - activity_bar = ActivityBar(shell.get_registry()) + activity_bar = ActivityBar(shell) + activity_bar.translate(50, 860) root.add_child(activity_bar) class HomeWindow(gtk.Window): @@ -55,14 +66,27 @@ class HomeWindow(gtk.Window): self.connect('realize', self.__realize_cb) canvas = goocanvas.CanvasView() + canvas_model = Model(shell) canvas.set_bounds(0, 0, 1200, 900) canvas.set_scale(float(800) / float(1200)) canvas.set_size_request(800, 600) + + canvas.connect("item_view_created", self.__item_view_created_cb) + self.add(canvas) canvas.show() canvas.set_model(canvas_model) + def __item_view_created_cb(self, view, item_view, item): + if isinstance(item, ActivityItem): + item_view.connect("button_press_event", + self.__activity_button_press_cb, + item.get_activity_id()) + + def __activity_button_press_cb(self, view, target, event, activity_id): + self._shell.start_activity(activity_id) + def __realize_cb(self, window): self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DESKTOP) |