Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-13 09:24:07 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-13 09:24:07 (GMT)
commit395472edea6fe56d48028a65176ea62dcb2ee83a (patch)
treea202f615a0a837d3458965643e655b2294c74641
parentc7fdae260681150265142e702f2431236c69ef5a (diff)
Shutdown the factory when all activities has been destroyed.
Initialize the profile.
-rw-r--r--activities/web/webactivity.py7
-rw-r--r--sugar/activity/ActivityFactory.py11
2 files changed, 17 insertions, 1 deletions
diff --git a/activities/web/webactivity.py b/activities/web/webactivity.py
index f8e5e4d..8880157 100644
--- a/activities/web/webactivity.py
+++ b/activities/web/webactivity.py
@@ -1,7 +1,9 @@
-import gtk
from gettext import gettext as _
+import gtk
+import gtkmozembed
from sugar.activity.Activity import Activity
+from sugar import env
from webbrowser import WebBrowser
from toolbar import Toolbar
@@ -32,3 +34,6 @@ class WebActivity(Activity):
def _title_changed_cb(self, embed, pspec):
self.set_title(embed.props.title)
+
+def start():
+ gtkmozembed.set_profile_path(env.get_profile_path(), 'gecko')
diff --git a/sugar/activity/ActivityFactory.py b/sugar/activity/ActivityFactory.py
index bd2364e..4f0a4d5 100644
--- a/sugar/activity/ActivityFactory.py
+++ b/sugar/activity/ActivityFactory.py
@@ -4,6 +4,7 @@ import logging
import dbus
import dbus.service
import gobject
+import gtk
from sugar.presence.PresenceService import PresenceService
from sugar.activity import Activity
@@ -21,6 +22,7 @@ class ActivityFactory(dbus.service.Object):
def __init__(self, activity_type, activity_class):
self._activity_type = activity_type
+ self._activities = []
splitted_module = activity_class.rsplit('.', 1)
module_name = splitted_module[0]
@@ -43,8 +45,17 @@ class ActivityFactory(dbus.service.Object):
def create(self):
activity = self._class()
activity.set_type(self._activity_type)
+
+ self._activities.append(activity)
+ activity.connect('destroy', self._activity_destroy_cb)
+
return activity.window.xid
+ def _activity_destroy_cb(self, activity):
+ self._activities.remove(activity)
+ if len(self._activities) == 0:
+ gtk.main_quit()
+
def create(activity_name):
"""Create a new activity from his name."""
bus = dbus.SessionBus()