#!/usr/bin/env python # Copyright (C) 2006, Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys import os from ConfigParser import ConfigParser if len(sys.argv) == 2: sys.path.insert(0, sys.argv[1]) import pygtk pygtk.require('2.0') import gtk import gobject from sugar import logger from sugar import profile from sugar import env from sugar import TracebackUtils logger.cleanup() logger.start('shell') if len(sys.argv) == 1: sys.path.insert(0, env.get_shell_path()) from view.Shell import Shell from model.ShellModel import ShellModel from shellservice import ShellService from intro import intro # Do initial setup if needed key = profile.get_pubkey() if not key or not len(key): win = intro.IntroWindow() win.show_all() gtk.main() profile.update() # Save our DBus Session Bus address somewhere it can be found # # WARNING!!! this is going away at some near future point, do not rely on it # dsba_file = os.path.join(env.get_profile_path(), "session.info") f = open(dsba_file, "w") cp = ConfigParser() cp.add_section('Session') cp.set('Session', 'dbus_address', os.environ['DBUS_SESSION_BUS_ADDRESS']) cp.set('Session', 'display', gtk.gdk.display_get_default().get_name()) cp.write(f) f.close() model = ShellModel() service = ShellService(model) shell = Shell(model) tbh = TracebackUtils.TracebackHelper() try: gtk.main() except KeyboardInterrupt: print 'Ctrl+C pressed, exiting...' del tbh os.remove(dsba_file)