From 6c5d28ecf516cca2ad317983fade3dbf0061d6e6 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 9 Mar 2007 17:29:03 +0100 Subject: [PATCH] Save also the sugar session display and use it in sugar-activity. --- shell/sugar-activity | 21 ++++++++++----------- shell/sugar-shell | 11 +++++++++-- sugar/env.py | 13 ++++++++----- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/shell/sugar-activity b/shell/sugar-activity index 04fed667..7757a76b 100755 --- a/shell/sugar-activity +++ b/shell/sugar-activity @@ -18,6 +18,16 @@ import sys import os +from ConfigParser import ConfigParser + +from sugar import env + +# Setup the environment so that we run inside the Sugar shell +cp = ConfigParser() +cp.read([env.get_profile_path("session.info")]) +os.environ['DBUS_SESSION_BUS_ADDRESS'] = cp.get('Session', 'dbus_address') +os.environ['DISPLAY'] = cp.get('Session', 'display') +del cp import gtk import dbus @@ -26,15 +36,6 @@ import dbus.glib from sugar.activity import bundleregistry from sugar.activity import activityfactory from sugar.activity import activityfactoryservice -from sugar import env - -def _setup_bus_address(): - '''Use the bus address of the running Sugar''' - bus_file = os.path.join(env.get_profile_path(), "session_bus_address") - f = open(bus_file, "r") - bus_name = f.read() - f.close() - os.environ['DBUS_SESSION_BUS_ADDRESS'] = bus_name def _success_cb(handler, exit): if exit: @@ -47,8 +48,6 @@ def _error_cb(handler, err): def print_help(self): sys.exit(0) -_setup_bus_address() - bundle = None if len(sys.argv) > 1: diff --git a/shell/sugar-shell b/shell/sugar-shell index 4b67e963..277030de 100755 --- a/shell/sugar-shell +++ b/shell/sugar-shell @@ -18,6 +18,7 @@ import sys import os +from ConfigParser import ConfigParser if len(sys.argv) == 2: sys.path.insert(0, sys.argv[1]) @@ -55,9 +56,15 @@ if not key or not len(key): # # 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_bus_address") +dsba_file = os.path.join(env.get_profile_path(), "session.info") f = open(dsba_file, "w") -f.write(os.environ["DBUS_SESSION_BUS_ADDRESS"]) + +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() diff --git a/sugar/env.py b/sugar/env.py index 65fd1fe5..4cdaf2cc 100644 --- a/sugar/env.py +++ b/sugar/env.py @@ -34,20 +34,23 @@ def is_emulator(): return True return False -def get_profile_path(): +def get_profile_path(path=None): if os.environ.has_key('SUGAR_PROFILE'): profile_id = os.environ['SUGAR_PROFILE'] else: profile_id = 'default' - path = os.path.join(os.path.expanduser('~/.sugar'), profile_id) - if not os.path.isdir(path): + base = os.path.join(os.path.expanduser('~/.sugar'), profile_id) + if not os.path.isdir(base): try: - os.makedirs(path) + os.makedirs(base) except OSError, exc: print "Could not create user directory." - return path + if path != None: + return os.path.join(base, path) + else: + return base def get_user_activities_path(): path = os.path.expanduser('~/Activities')