Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/StartPage.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/StartPage.py')
-rw-r--r--shell/StartPage.py25
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()