sugar-toolkit-gtk3/shell/Session.py
2006-09-15 13:23:21 +02:00

60 lines
1.2 KiB
Python

import os
import gtk
from view.Shell import Shell
from model.ShellModel import ShellModel
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 view.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()
model = ShellModel()
shell = Shell(model)
from sugar import TracebackUtils
tbh = TracebackUtils.TracebackHelper()
try:
gtk.main()
except KeyboardInterrupt:
print 'Ctrl+C pressed, exiting...'
del tbh