diff options
Diffstat (limited to 'shell/HomeWindow.py')
-rw-r--r-- | shell/HomeWindow.py | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/shell/HomeWindow.py b/shell/HomeWindow.py index 72e4bfd..f0124b1 100644 --- a/shell/HomeWindow.py +++ b/shell/HomeWindow.py @@ -1,14 +1,15 @@ from gettext import gettext as _ import gtk +import wnck from sugar.activity import Activity class NewActivityButton(gtk.MenuToolButton): - def __init__(self, shell): + def __init__(self, home): gtk.MenuToolButton.__init__(self, None, _('New Activity')) - self._shell = shell + self._home = home self.set_menu(gtk.Menu()) self.connect("show-menu", self.__show_menu_cb) @@ -16,7 +17,7 @@ class NewActivityButton(gtk.MenuToolButton): def __show_menu_cb(self, button): menu = gtk.Menu() - for activity_info in self._shell.get_registry().list_activities(): + for activity_info in self._home.list_activities(): item = gtk.MenuItem(activity_info.get_title(), False) name = activity_info.get_name() item.connect('activate', self.__menu_item_activate_cb, name) @@ -26,7 +27,7 @@ class NewActivityButton(gtk.MenuToolButton): self.set_menu(menu) def __menu_item_activate_cb(self, item, name): - Activity.create(name) + self._home.create(name) class Toolbar(gtk.Toolbar): def __init__(self, shell): @@ -36,15 +37,66 @@ class Toolbar(gtk.Toolbar): self.insert(new_activity_button, -1) new_activity_button.show() +class ActivityGrid(gtk.VBox): + def __init__(self, home): + gtk.VBox.__init__(self) + + self._home = home + self.update() + + def _add_all(self): + screen = wnck.screen_get_default() + for window in screen.get_windows(): + if not window.is_skip_tasklist(): + self.add(window) + + def _remove_all(self): + for child in self.get_children(): + self.remove(child) + + def add(self, window): + button = gtk.Button(window.get_name()) + button.connect('clicked', self.__button_clicked_cb, window) + self.pack_start(button, False) + button.show() + + def update(self): + self._remove_all() + self._add_all() + + def __button_clicked_cb(self, button, window): + self._home.activate(window) + class HomeWindow(gtk.Window): def __init__(self, shell): gtk.Window.__init__(self) + self._shell = shell + vbox = gtk.VBox() - toolbar = Toolbar(shell) + toolbar = Toolbar(self) vbox.pack_start(toolbar, False) toolbar.show() + self._grid = ActivityGrid(self) + vbox.pack_start(self._grid) + self._grid.show() + self.add(vbox) vbox.show() + + def list_activities(self): + return self._shell.get_registry().list_activities() + + def create(self, activity_name): + Activity.create(activity_name) + self.hide() + + def activate(self, activity_window): + activity_window.activate(gtk.get_current_event_time()) + self.hide() + + def show(self): + self._grid.update() + gtk.Window.show(self) |