Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
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 /sugar
parentc7fdae260681150265142e702f2431236c69ef5a (diff)
Shutdown the factory when all activities has been destroyed.
Initialize the profile.
Diffstat (limited to 'sugar')
-rw-r--r--sugar/activity/ActivityFactory.py11
1 files changed, 11 insertions, 0 deletions
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()