Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/sugar-session85
-rw-r--r--configure.ac1
-rw-r--r--src/jarabe/Makefile.am18
-rw-r--r--src/jarabe/controlpanel/gui.py2
-rw-r--r--src/jarabe/desktop/favoritesview.py2
-rw-r--r--src/jarabe/service/Makefile.am7
-rw-r--r--src/jarabe/service/__init__.py48
-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