Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/session/session.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/session/session.py')
-rw-r--r--shell/session/session.py70
1 files changed, 0 insertions, 70 deletions
diff --git a/shell/session/session.py b/shell/session/session.py
deleted file mode 100644
index d996aa7..0000000
--- a/shell/session/session.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import os
-import signal
-from ConfigParser import ConfigParser
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-from sugar.activity import Activity
-from sugar import env
-
-from Shell import Shell
-
-class Session:
- def __init__(self):
- self._activity_processes = {}
-
- def start(self):
- shell = Shell()
- shell.connect('close', self._shell_close_cb)
- shell.start()
-
- self._run_activities()
-
- try:
- gtk.main()
- except KeyboardInterrupt:
- print 'Ctrl+C pressed, exiting...'
- self.shutdown()
-
- def _run_activities(self):
- base_dirs = []
-
- base_dirs.append(env.get_activities_dir())
- base_dirs.append(os.path.join(env.get_user_dir(), 'activities'))
-
- for base_dir in base_dirs:
- if os.path.isdir(base_dir):
- for filename in os.listdir(base_dir):
- activity_dir = os.path.join(base_dir, filename)
- if os.path.isdir(activity_dir):
- self._run_activity(os.path.abspath(activity_dir))
-
- def _run_activity(self, activity_dir):
- env.add_to_python_path(activity_dir)
-
- for filename in os.listdir(activity_dir):
- if filename.endswith(".activity"):
- path = os.path.join(activity_dir, filename)
- cp = ConfigParser()
- cp.read([path])
-
- activity_name = cp.get('Activity', "name")
- activity_class = cp.get('Activity', "class")
-
- args = [ 'python', '-m', 'sugar/activity/Activity' ]
- args.append(activity_name)
- args.append(activity_class)
- pid = os.spawnvp(os.P_NOWAIT, 'python', args)
- self._activity_processes[activity_name] = pid
-
- def _shell_close_cb(self, shell):
- self.shutdown()
-
- def shutdown(self):
- # FIXME Obviously we want to notify the activities to
- # shutt down rather then killing them down forcefully.
- for name in self._activity_processes.keys():
- print 'Shutting down %s' % (name)
- os.kill(self._activity_processes[name], signal.SIGTERM)