diff options
-rw-r--r-- | bin/sugar-session | 85 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/jarabe/Makefile.am | 18 | ||||
-rw-r--r-- | src/jarabe/controlpanel/gui.py | 2 | ||||
-rw-r--r-- | src/jarabe/desktop/favoritesview.py | 2 | ||||
-rw-r--r-- | src/jarabe/service/Makefile.am | 7 | ||||
-rw-r--r-- | src/jarabe/service/__init__.py | 48 | ||||
-rw-r--r-- | src/jarabe/service/gui.py (renamed from src/jarabe/shellservice.py) | 11 | ||||
-rw-r--r-- | src/jarabe/service/logsmanager.py (renamed from src/jarabe/logsmanager.py) | 0 | ||||
-rw-r--r-- | src/jarabe/service/network.py (renamed from src/jarabe/nmservice.py) | 0 | ||||
-rw-r--r-- | src/jarabe/service/session.py (renamed from src/jarabe/session.py) | 0 |
11 files changed, 102 insertions, 72 deletions
diff --git a/bin/sugar-session b/bin/sugar-session index 7fb6fb4..9d7af69 100644 --- a/bin/sugar-session +++ b/bin/sugar-session @@ -18,9 +18,6 @@ import sys import os import gettext -import logging -import time -import shutil import gtk import gobject @@ -31,88 +28,62 @@ dbus.glib.threads_init() from sugar import logger from sugar.profile import get_profile -from sugar.datastore import datastore -from sugar import env -from jarabe.shellservice import ShellService -from jarabe.session import get_session_manager -from jarabe.nmservice import NMService +from jarabe.desktop.homewindow import HomeWindow from jarabe.model import sound -from jarabe.model import screen -from jarabe.journal import journalactivity from jarabe.view import launcher from jarabe import intro -from jarabe import logsmanager from jarabe import config +from jarabe import service + +def uisetup_completed_cb(): + from jarabe.model import screen -def _shell_started_cb(home_window): screen.set_dcon_freeze(0) - if os.path.isfile(os.path.expanduser('~/.sugar-update')): - home_window.get_home_box().show_software_updates_alert() +def uisetup_delayed_cb(home_window): + from jarabe.journal import journalactivity + from jarabe.view.keyhandler import KeyHandler + from jarabe.frame import frame - # Mount the datastore in internal flash - ds_path = env.get_profile_path('datastore') - try: - datastore.mount(ds_path, [], timeout=120) - except Exception, e: - # Don't explode if there's corruption; move the data out of the way - # and attempt to create a store from scratch. - logging.error(e) - shutil.move(ds_path, os.path.abspath(ds_path) + str(time.time())) - datastore.mount(ds_path, [], timeout=120) + frame = frame.get_instance() + + key_handler = KeyHandler(frame) journalactivity.start() + if os.path.isfile(os.path.expanduser('~/.sugar-update')): + home_window.get_home_box().show_software_updates_alert() + def main(): - try: - logsmanager.setup() - except Exception, e: - # logs setup is not critical; it should not prevent sugar from - # starting if (for example) the disk is full or read-only. - print 'Log setup failed: %s' % e + service.start_logsmanager() logger.start('shell') - sys.path.append(config.ext_path) - - gettext.bindtextdomain('sugar', config.locale_path) - gettext.textdomain('sugar') - - icons_path = os.path.join(config.data_path, 'icons') - gtk.icon_theme_get_default().append_search_path(icons_path) - intro.check_profile() - # set timezone if get_profile().timezone is not None: os.environ['TZ'] = get_profile().timezone - from jarabe.frame import frame - frame = frame.get_instance() - - from jarabe.view.keyhandler import KeyHandler - key_handler = KeyHandler(frame) + service.start_all() - from jarabe.desktop.homewindow import HomeWindow - home_window = HomeWindow() - home_window.show() + sound.restore() - ShellService() + sys.path.append(config.ext_path) - launcher.setup() + gettext.bindtextdomain('sugar', config.locale_path) + gettext.textdomain('sugar') - session_manager = get_session_manager() - session_manager.start() + icons_path = os.path.join(config.data_path, 'icons') + gtk.icon_theme_get_default().append_search_path(icons_path) - try: - nm_service = NMService() - except dbus.DBusException: - logging.error("Network manager is already running.") + launcher.setup() - sound.restore() + home_window = HomeWindow() + home_window.show() - gobject.idle_add(_shell_started_cb, home_window) + gobject.idle_add(uisetup_delayed_cb, home_window) + gobject.idle_add(uisetup_completed_cb) try: gtk.main() diff --git a/configure.ac b/configure.ac index 64d1cb2..0bd4473 100644 --- a/configure.ac +++ b/configure.ac @@ -61,5 +61,6 @@ src/jarabe/intro/Makefile src/jarabe/journal/Makefile src/jarabe/view/Makefile src/jarabe/model/Makefile +src/jarabe/service/Makefile po/Makefile.in ]) diff --git a/src/jarabe/Makefile.am b/src/jarabe/Makefile.am index 68ac77e..04890b4 100644 --- a/src/jarabe/Makefile.am +++ b/src/jarabe/Makefile.am @@ -1,12 +1,14 @@ -SUBDIRS = controlpanel desktop frame journal model view intro +SUBDIRS = \ + controlpanel \ + desktop \ + frame \ + journal \ + model \ + view \ + intro \ + service sugardir = $(pythondir)/jarabe sugar_PYTHON = \ __init__.py \ - config.py \ - logsmanager.py \ - nmservice.py \ - session.py \ - shellservice.py - -EXTRA_DIST = $(bin_SCRIPTS) $(conf_DATA) + config.py diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py index 2f48151..f4e3081 100644 --- a/src/jarabe/controlpanel/gui.py +++ b/src/jarabe/controlpanel/gui.py @@ -24,7 +24,7 @@ from sugar.graphics.icon import Icon from sugar.graphics import style from sugar.graphics.alert import Alert -from jarabe.session import get_session_manager +from jarabe.service.session import get_session_manager from jarabe.controlpanel.toolbar import MainToolbar from jarabe.controlpanel.toolbar import SectionToolbar from jarabe import config diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 007fc38..f4a6c70 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -35,7 +35,7 @@ from jarabe.view.palettes import JournalPalette from jarabe.view.palettes import CurrentActivityPalette, ActivityPalette from jarabe.model import shell from jarabe.controlpanel.gui import ControlPanel -from jarabe.session import get_session_manager +from jarabe.service.session import get_session_manager from jarabe.desktop import schoolserver from jarabe.desktop.schoolserver import RegisterError diff --git a/src/jarabe/service/Makefile.am b/src/jarabe/service/Makefile.am new file mode 100644 index 0000000..2bffda6 --- /dev/null +++ b/src/jarabe/service/Makefile.am @@ -0,0 +1,7 @@ +sugardir = $(pythondir)/jarabe/service +sugar_PYTHON = \ + __init__.py \ + logsmanager.py \ + network.py \ + session.py \ + gui.py diff --git a/src/jarabe/service/__init__.py b/src/jarabe/service/__init__.py new file mode 100644 index 0000000..ee72282 --- /dev/null +++ b/src/jarabe/service/__init__.py @@ -0,0 +1,48 @@ +import logging +import shutil +import time + +import dbus + +from sugar.datastore import datastore +from sugar import env + +from jarabe.service.session import get_session_manager +from jarabe.service.network import NMService +from jarabe.service.gui import UIService +from jarabe.service import logsmanager + +def start_logsmanager(): + try: + logsmanager.setup() + except Exception, e: + # logs setup is not critical; it should not prevent sugar from + # starting if (for example) the disk is full or read-only. + print 'Log setup failed: %s' % e + +def start_datastore(): + # Mount the datastore in internal flash + ds_path = env.get_profile_path('datastore') + try: + datastore.mount(ds_path, [], timeout=120) + except Exception, e: + # Don't explode if there's corruption; move the data out of the way + # and attempt to create a store from scratch. + logging.error(e) + shutil.move(ds_path, os.path.abspath(ds_path) + str(time.time())) + datastore.mount(ds_path, [], timeout=120) + +def start_all(): + start_datastore() + + ui_service = UIService() + ui_service.start() + + session_manager = get_session_manager() + session_manager.start() + + try: + nm_service = NMService() + except dbus.DBusException: + logging.error("Network manager is already running.") + diff --git a/src/jarabe/shellservice.py b/src/jarabe/service/gui.py index 71e2af6..9bd4716 100644 --- a/src/jarabe/shellservice.py +++ b/src/jarabe/service/gui.py @@ -30,7 +30,7 @@ _DBUS_PATH = "/org/laptop/Shell" _DBUS_RAINBOW_IFACE = "org.laptop.security.Rainbow" -class ShellService(dbus.service.Object): +class UIService(dbus.service.Object): """Provides d-bus service to script the shell's operations Uses a shell_model object to observe events such as changes to: @@ -52,8 +52,13 @@ class ShellService(dbus.service.Object): _rainbow = None def __init__(self): + bus = dbus.SessionBus() + bus_name = dbus.service.BusName(_DBUS_SERVICE, bus=bus) + dbus.service.Object.__init__(self, bus_name, _DBUS_PATH) + self._shell_model = shell.get_model() + def start(self): owner_model = owner.get_model() owner_model.connect('nick-changed', self._owner_nick_changed_cb) owner_model.connect('icon-changed', self._owner_icon_changed_cb) @@ -62,10 +67,6 @@ class ShellService(dbus.service.Object): self._shell_model.connect('active-activity-changed', self._cur_activity_changed_cb) - bus = dbus.SessionBus() - bus_name = dbus.service.BusName(_DBUS_SERVICE, bus=bus) - dbus.service.Object.__init__(self, bus_name, _DBUS_PATH) - @dbus.service.method(_DBUS_SHELL_IFACE, in_signature="s", out_signature="b") def ActivateActivity(self, activity_id): diff --git a/src/jarabe/logsmanager.py b/src/jarabe/service/logsmanager.py index 9360211..9360211 100644 --- a/src/jarabe/logsmanager.py +++ b/src/jarabe/service/logsmanager.py diff --git a/src/jarabe/nmservice.py b/src/jarabe/service/network.py index f531a2d..f531a2d 100644 --- a/src/jarabe/nmservice.py +++ b/src/jarabe/service/network.py diff --git a/src/jarabe/session.py b/src/jarabe/service/session.py index 8927260..8927260 100644 --- a/src/jarabe/session.py +++ b/src/jarabe/service/session.py |