Fix a bunch of bugs, more cleanups

master
Marco Pesenti Gritti 18 years ago
parent d12b780074
commit 2bbedf988b

@ -69,8 +69,8 @@ class ActivityRegistry:
activity_exec = cp.get('Activity', 'exec')
elif cp.has_option('Activity', 'python_module'):
python_module = cp.get('Activity', 'python_module')
activity_exec = 'python -m sugar/activity/Activity %s %s' \
% (activity_id, python_module)
activity_exec = '%s %s %s' % (env.get_activity_runner(),
activity_id, python_module)
env.add_to_python_path(directory)
else:
logging.error('%s must specifiy exec or python_module' % (path))

@ -1,4 +1,4 @@
bin_SCRIPTS = sugar
bin_SCRIPTS = sugar sugar-activity
sugardir = $(pkgdatadir)/shell
sugar_PYTHON = \

@ -6,18 +6,12 @@ class Process:
"""Object representing one of the session processes"""
def __init__(self, command):
self._pid = None
self._command = command
def get_name(self):
return self._command
def start(self):
print self._command
logging.debug('Start %s' % (self._command))
args = self._command.split()
flags = gobject.SPAWN_SEARCH_PATH or gobject.SPAWN_STDERR_TO_DEV_NULL
result = gobject.spawn_async(args, flags=flags, standard_output=True)
self._pid = result[0]
self._stdout = result[2]
flags = gobject.SPAWN_SEARCH_PATH
result = gobject.spawn_async(args, flags=flags)

@ -1,9 +1,10 @@
import os
import gtk
import sugar.theme
import gobject
from Shell import Shell
from Process import Process
import sugar.theme
class ActivityProcess(Process):
def __init__(self, module):
@ -21,8 +22,12 @@ class DbusProcess(Process):
return 'Dbus'
def start(self):
Process.start(self)
args = self._command.split()
flags = gobject.SPAWN_SEARCH_PATH
result = gobject.spawn_async(args, flags=flags, standard_output=True,
standard_error=True)
self._stdout = result[2]
dbus_file = os.fdopen(self._stdout)
addr = dbus_file.readline()
addr = addr.strip()
@ -42,9 +47,6 @@ class Session:
def __init__(self):
sugar.theme.setup()
self._shell = Shell()
self._shell.start()
def start(self):
"""Start the session"""
process = DbusProcess()
@ -52,8 +54,11 @@ class Session:
process = MatchboxProcess()
process.start()
shell = Shell()
shell.start()
registry = self._shell.get_registry()
registry = shell.get_registry()
for activity_module in registry.list_activities():
process = ActivityProcess(activity_module)
process.start()

@ -3,6 +3,7 @@ import os
import dbus
import gtk
import wnck
import gobject
from sugar.LogWriter import LogWriter
from ConsoleLogger import ConsoleLogger

@ -5,8 +5,6 @@ import os
import pwd
import random
from Emulator import Emulator
def add_to_python_path(path):
sys.path.insert(0, path)
if os.environ.has_key('PYTHONPATH'):
@ -15,10 +13,6 @@ def add_to_python_path(path):
else:
os.environ['PYTHONPATH'] = path
# FIXE Don't run the emulator on the OLPC
emulator = Emulator()
emulator.start()
i = 0
for arg in sys.argv:
if arg == '--test-user':
@ -46,8 +40,14 @@ else:
import sugar.env
add_to_python_path(os.path.join(sugar.env.get_data_dir(), 'shell'))
print 'Running the installed sugar...'
from Emulator import Emulator
# FIXE Don't run the emulator on the OLPC
emulator = Emulator()
emulator.start()
print 'Redirecting output to the console, press Ctrl+Down to open it.'
print 'Redirecting output to the console, press F3 to open it.'
from Session import Session

@ -0,0 +1,16 @@
#!/usr/bin/python
import sys
import gobject
from sugar.activity import Activity
from sugar.LogWriter import LogWriter
from sugar import theme
theme.setup()
lw = LogWriter(sys.argv[1])
lw.start()
Activity.register_factory(sys.argv[1], sys.argv[2])

@ -1,2 +1,3 @@
sugar_data_dir = '@prefix@/share/sugar'
sugar_activity_runner = '@prefix@/bin/sugar-activity'
sugar_activities_dir = '@prefix@/share/sugar/activities'

@ -1,4 +1,5 @@
import os
sugar_data_dir = os.path.dirname(os.path.dirname(__file__))
sugar_activity_runner = os.path.join(sugar_data_dir, 'shell/sugar-activity')
sugar_activities_dir = os.path.join(sugar_data_dir, 'activities')

@ -11,7 +11,6 @@ import gtk, gobject
from sugar.LogWriter import LogWriter
from sugar import keybindings
import sugar.util
import sugar.theme
SHELL_SERVICE_NAME = "caom.redhat.Sugar.Shell"
SHELL_SERVICE_PATH = "/com/redhat/Sugar/Shell"
@ -83,13 +82,8 @@ def create(activity_name, service = None, args = None):
else:
factory.create()
def main(activity_name, activity_class):
"""Starts the activity main loop."""
sugar.theme.setup()
log_writer = LogWriter(activity_name)
log_writer.start()
def register_factory(activity_name, activity_class):
"""Register the activity factory."""
factory = ActivityFactory(activity_name, activity_class)
gtk.main()
@ -98,8 +92,7 @@ class ActivityDbusService(dbus.service.Object):
"""Base dbus service object that each Activity uses to export dbus methods.
The dbus service is separate from the actual Activity object so that we can
tightly control what stuff passes through print aaaa
the dbus python bindings."""
tightly control what stuff passes through the dbus python bindings."""
_ALLOWED_CALLBACKS = [ON_PUBLISH_CB]
@ -223,6 +216,3 @@ class Activity(gtk.Window):
def publish(self):
"""Called to request the activity to publish itself on the network."""
pass
if __name__ == "__main__":
main(sys.argv[1], sys.argv[2])

@ -36,3 +36,6 @@ def get_data_dir():
def get_activities_dir():
return sugar_activities_dir
def get_activity_runner():
return sugar_activity_runner

Loading…
Cancel
Save