diff options
Diffstat (limited to 'shell/StartPage.py')
-rw-r--r-- | shell/StartPage.py | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/shell/StartPage.py b/shell/StartPage.py index f55f5d7..cfde804 100644 --- a/shell/StartPage.py +++ b/shell/StartPage.py @@ -7,6 +7,7 @@ import xml.sax.saxutils import gobject import socket +import dbus_bindings from google import google from sugar.presence.PresenceService import PresenceService from sugar.activity import Activity @@ -103,11 +104,12 @@ class ActivitiesModel(gtk.ListStore): self.append([ title, address, subtitle, service ]) class ActivitiesView(gtk.TreeView): - def __init__(self, model): + def __init__(self, activity_controller, model): gtk.TreeView.__init__(self, model) self._owner = None - + self._activity_controller = activity_controller + self.set_headers_visible(False) theme = gtk.icon_theme_get_default() @@ -154,10 +156,25 @@ class ActivitiesView(gtk.TreeView): address = model.get_value(model.get_iter(path), _COLUMN_ADDRESS) service = model.get_value(model.get_iter(path), _COLUMN_SERVICE) + print 'Activated row %s' % address + + if service is None: + browser_shell.open_browser(address) + return + + if not self._owner: + raise RuntimeError("We don't have an owner yet!") + + # If the activity is already started, switch to it + service_act_id = service.get_activity_id() + if service_act_id and self._activity_controller.have_activity(service_act_id): + self._activity_controller.switch_to_activity(service_act_id) + return + Activity.create('com.redhat.Sugar.BrowserActivity', service, [ address ]) class StartPage(gtk.HBox): - def __init__(self, ac_signal_object): + def __init__(self, activity_controller, ac_signal_object): gtk.HBox.__init__(self) self._ac_signal_object = ac_signal_object @@ -235,7 +252,7 @@ class StartPage(gtk.HBox): self._activities_model = ActivitiesModel() owner = self._pservice.get_owner() - self._activities = ActivitiesView(self._activities_model) + self._activities = ActivitiesView(activity_controller, self._activities_model) sw.add(self._activities) self._activities.show() |