Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe
diff options
context:
space:
mode:
Diffstat (limited to 'src/jarabe')
-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
9 files changed, 73 insertions, 15 deletions
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