Refactor sugar.env and paths

master
Marco Pesenti Gritti 17 years ago
parent a380b7f915
commit 57c928916c

@ -1,4 +1,4 @@
SUBDIRS = lib po shell sugar services tools SUBDIRS = emulator lib po shell sugar services tools
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4

@ -104,6 +104,7 @@ AM_GLIB_GNU_GETTEXT
AC_OUTPUT([ AC_OUTPUT([
Makefile Makefile
emulator/Makefile
lib/Makefile lib/Makefile
lib/data/Makefile lib/data/Makefile
lib/src/Makefile lib/src/Makefile
@ -116,7 +117,6 @@ services/clipboard/Makefile
services/datastore/Makefile services/datastore/Makefile
shell/Makefile shell/Makefile
shell/intro/Makefile shell/intro/Makefile
shell/data/Makefile
shell/hardware/Makefile shell/hardware/Makefile
shell/view/Makefile shell/view/Makefile
shell/view/devices/Makefile shell/view/devices/Makefile

@ -1,4 +1,4 @@
confdir = $(pkgdatadir) confdir = $(pkgdatadir)/emulator
conf_DATA = kbdconfig conf_DATA = kbdconfig
EXTRA_DIST = $(conf_DATA) EXTRA_DIST = $(conf_DATA)

@ -32,7 +32,7 @@ import dbus.glib
from sugar import env from sugar import env
sys.path.insert(0, os.path.join(env.get_data_dir(), 'services/clipboard')) sys.path.insert(0, env.get_service_path('clipboard'))
from clipboardservice import ClipboardService from clipboardservice import ClipboardService

@ -7,6 +7,6 @@ import os
import sys import sys
from sugar import env from sugar import env
sys.path.insert(0, os.path.join(env.get_data_dir(), 'services/console')) sys.path.insert(0, env.get_service_path('console'))
import console import console

@ -24,7 +24,7 @@ import logging
from sugar import logger from sugar import logger
from sugar import env from sugar import env
sys.path.insert(0, os.path.join(env.get_data_dir(), 'services/datastore')) sys.path.insert(0, env.get_service_path('datastore'))
logger.start('data-store') logger.start('data-store')
logging.info('Starting the data store...') logging.info('Starting the data store...')

@ -24,7 +24,7 @@ import os
from sugar import logger from sugar import logger
from sugar import env from sugar import env
sys.path.insert(0, os.path.join(env.get_data_dir(), 'services/presence')) sys.path.insert(0, env.get_service_path('presence'))
logger.start('presenceservice') logger.start('presenceservice')

@ -24,7 +24,7 @@ import os
from sugar import logger from sugar import logger
from sugar import env from sugar import env
sys.path.insert(0, os.join.path(env.get_data_dir(), 'services/presence2')) sys.path.insert(0, env.get_service_path('presence2'))
logger.start('presenceservice') logger.start('presenceservice')

@ -1,4 +1,4 @@
SUBDIRS = data hardware model view intro SUBDIRS = hardware model view intro
bin_SCRIPTS = \ bin_SCRIPTS = \
sugar-activity \ sugar-activity \

@ -36,7 +36,7 @@ logger.cleanup()
logger.start('shell') logger.start('shell')
if len(sys.argv) == 1: if len(sys.argv) == 1:
sys.path.insert(0, os.path.join(env.get_data_dir(), 'shell')) sys.path.insert(0, env.get_shell_path())
from view.Shell import Shell from view.Shell import Shell
from model.ShellModel import ShellModel from model.ShellModel import ShellModel

@ -56,9 +56,9 @@ else:
dpi = min(_sugar.get_screen_dpi(), 96) dpi = min(_sugar.get_screen_dpi(), 96)
if sourcedir: if sourcedir:
kbd_config = os.path.join(sourcedir, 'shell/data/kbdconfig') kbd_config = os.path.join(sourcedir, 'emulator/kbdconfig')
else: else:
kbd_config = os.path.join(env.get_data_dir(), 'kbdconfig') kbd_config = os.path.join(env.get_emulator_path('kbdconfig'))
emulator = Emulator(width, height, dpi) emulator = Emulator(width, height, dpi)
emulator.set_keyboard_config(kbd_config) emulator.set_keyboard_config(kbd_config)

@ -44,8 +44,7 @@ class Bundle:
if cp.has_option(section, 'class'): if cp.has_option(section, 'class'):
self._class = cp.get(section, 'class') self._class = cp.get(section, 'class')
self._exec = '%s %s --bundle-path="%s"' % ( self._exec = '%s %s --bundle-path="%s"' % (
os.path.join(env.get_shell_bin_dir(), _PYTHON_FACTORY), env.get_bin_path(_PYTHON_FACTORY), self._class, self.get_path())
self._class, self.get_path())
elif cp.has_option(section, 'exec'): elif cp.has_option(section, 'exec'):
self._class = None self._class = None
self._exec = cp.get(section, 'exec') self._exec = cp.get(section, 'exec')

@ -93,7 +93,7 @@ def _get_install_dir(prefix):
return os.path.join(prefix, 'share/activities') return os.path.join(prefix, 'share/activities')
def _get_bundle_path(): def _get_bundle_path():
return os.path.join(env.get_user_activities_dir(), _get_bundle_dir()) return os.path.join(env.get_user_activities_path(), _get_bundle_dir())
def _get_package_name(): def _get_package_name():
bundle = Bundle(_get_source_path()) bundle = Bundle(_get_source_path())
@ -120,7 +120,7 @@ setup.py help - print this message \n\
' '
def cmd_dev(): def cmd_dev():
bundle_path = os.path.join(env.get_user_activities_dir(), _get_bundle_dir()) bundle_path = os.path.join(env.get_user_activities_path(), _get_bundle_dir())
try: try:
os.symlink(_get_source_path(), bundle_path) os.symlink(_get_source_path(), bundle_path)
except OSError: except OSError:

@ -1,14 +1,26 @@
import os import os
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
import gobject import gobject
from sugar.activity.bundle import Bundle from sugar.activity.bundle import Bundle
from sugar import env from sugar import env
from sugar import util from sugar import util
# http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
def _get_data_dirs():
if os.environ.has_key('XDG_DATA_DIRS'):
return os.environ['XDG_DATA_DIRS'].split(':')
else:
return [ '/usr/local/share/', '/usr/share/' ]
class _ServiceManager(object): class _ServiceManager(object):
def __init__(self): def __init__(self):
self._path = env.get_user_service_dir() service_dir = os.path.expanduser('~/.local/share/dbus-1/services')
if not os.path.isdir(service_dir):
os.makedirs(service_dir)
self._path = service_dir
def add(self, bundle): def add(self, bundle):
util.write_service(bundle.get_service_name(), util.write_service(bundle.get_service_name(),
@ -74,8 +86,8 @@ def get_registry():
_bundle_registry = BundleRegistry() _bundle_registry = BundleRegistry()
for path in env.get_data_dirs(): for path in _get_data_dirs():
bundles_path = os.path.join(path, 'activities') bundles_path = os.path.join(path, 'activities')
_bundle_registry.add_search_path(bundles_path) _bundle_registry.add_search_path(bundles_path)
_bundle_registry.add_search_path(env.get_user_activities_dir()) _bundle_registry.add_search_path(env.get_user_activities_path())

@ -24,6 +24,17 @@ try:
except ImportError: except ImportError:
from sugar.__installed__ import * from sugar.__installed__ import *
def _get_prefix_path(base, path=None):
if os.environ.has_key('SUGAR_PREFIX'):
prefix = os.environ['SUGAR_PREFIX']
else:
prefix = '/usr'
if path:
return os.path.join(prefix, base, path)
else:
return os.path.join(prefix, base)
def is_emulator(): def is_emulator():
if os.environ.has_key('SUGAR_EMULATOR'): if os.environ.has_key('SUGAR_EMULATOR'):
if os.environ['SUGAR_EMULATOR'] == 'yes': if os.environ['SUGAR_EMULATOR'] == 'yes':
@ -45,28 +56,20 @@ def get_profile_path():
return path return path
def get_data_dir(): def get_user_activities_path():
return sugar_data_dir
def get_shell_bin_dir():
return sugar_shell_bin_dir
# http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
def get_data_dirs():
if os.environ.has_key('XDG_DATA_DIRS'):
return os.environ['XDG_DATA_DIRS'].split(':')
else:
return [ '/usr/local/share/', '/usr/share/' ]
def get_user_service_dir():
service_dir = os.path.expanduser('~/.local/share/dbus-1/services')
if not os.path.isdir(service_dir):
os.makedirs(service_dir)
return service_dir
def get_user_activities_dir():
path = os.path.expanduser('~/Activities') path = os.path.expanduser('~/Activities')
if not os.path.isdir(path): if not os.path.isdir(path):
os.mkdir(path) os.mkdir(path)
return path return path
def get_bin_path(path=None):
return _get_prefix_path('bin', path)
def get_service_path(name):
return _get_prefix_path('share/sugar/services', name)
def get_shell_path(path=None):
return _get_prefix_path('share/sugar/shell', path)
def get_emulator_path(path=None):
return _get_prefix_path('share/sugar/emulator', path)

@ -326,7 +326,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
return height return height
def do_button_press_event(self, event): def do_button_press_event(self, event):
item.emit_activated() self.emit_activated()
return True return True
def get_popup(self): def get_popup(self):

@ -27,7 +27,7 @@ bus = dbus.SessionBus()
proxy_obj = bus.get_object(DBUS_SERVICE, DBUS_PATH) proxy_obj = bus.get_object(DBUS_SERVICE, DBUS_PATH)
dbus_service = dbus.Interface(proxy_obj, DBUS_SERVICE) dbus_service = dbus.Interface(proxy_obj, DBUS_SERVICE)
bundle_dir = env.get_user_activities_dir() bundle_dir = env.get_user_activities_path()
zip_file = zipfile.ZipFile(sys.argv[1]) zip_file = zipfile.ZipFile(sys.argv[1])
file_names = zip_file.namelist() file_names = zip_file.namelist()

Loading…
Cancel
Save