diff options
author | Marco 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) |
commit | 395472edea6fe56d48028a65176ea62dcb2ee83a (patch) | |
tree | a202f615a0a837d3458965643e655b2294c74641 /sugar | |
parent | c7fdae260681150265142e702f2431236c69ef5a (diff) |
Shutdown the factory when all activities has been destroyed.
Initialize the profile.
Diffstat (limited to 'sugar')
-rw-r--r-- | sugar/activity/ActivityFactory.py | 11 |
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() |