Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/Session.py
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-09-10 00:35:53 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-09-10 00:35:53 (GMT)
commit47cc58b1e648a586252046eb79339357cd38f939 (patch)
tree90ab614b2dc05472686b4dbe593d580735a4e16f /shell/Session.py
parentf4f70d22f1d29d24b7234e9a6fb3203deec5adfa (diff)
Make part of the session public so that it can used by tests
Diffstat (limited to 'shell/Session.py')
-rw-r--r--shell/Session.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/shell/Session.py b/shell/Session.py
new file mode 100644
index 0000000..07337d6
--- /dev/null
+++ b/shell/Session.py
@@ -0,0 +1,62 @@
+import os
+import gtk
+
+from Shell import Shell
+from ConsoleWindow import ConsoleWindow
+from sugar import env
+from sugar import logger
+
+from sugar.session.Process import Process
+from sugar.session.DbusProcess import DbusProcess
+from sugar.session.MatchboxProcess import MatchboxProcess
+
+from FirstTimeDialog import FirstTimeDialog
+import conf
+
+class DBusMonitorProcess(Process):
+ def __init__(self):
+ Process.__init__(self, "dbus-monitor --session")
+
+ def get_name(self):
+ return 'dbus-monitor'
+
+class Session:
+ """Takes care of running the shell and all the sugar processes"""
+
+ def _check_profile(self):
+ profile = conf.get_profile()
+
+ if profile.get_nick_name() == None:
+ dialog = FirstTimeDialog()
+ dialog.run()
+ profile.save()
+
+ env.setup_user(profile)
+
+ def start(self):
+ """Start the session"""
+ process = MatchboxProcess()
+ process.start()
+
+ self._check_profile()
+
+ process = DbusProcess()
+ process.start()
+
+ if os.environ.has_key('SUGAR_DBUS_MONITOR'):
+ dbm = DBusMonitorProcess()
+ dbm.start()
+
+ console = ConsoleWindow()
+ logger.start('Shell', console)
+
+ shell = Shell()
+ shell.set_console(console)
+
+ from sugar import TracebackUtils
+ tbh = TracebackUtils.TracebackHelper()
+ try:
+ gtk.main()
+ except KeyboardInterrupt:
+ print 'Ctrl+C pressed, exiting...'
+ del tbh