Refactor sugar.env and paths

This commit is contained in:
Marco Pesenti Gritti 2007-03-09 14:57:54 +01:00
parent a380b7f915
commit 57c928916c
18 changed files with 55 additions and 41 deletions

View File

@ -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

View File

@ -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

View File

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

View File

@ -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

View File

@ -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

View File

@ -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...')

View File

@ -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')

View File

@ -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')

View File

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

View File

@ -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

View File

@ -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)

View File

@ -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')

View File

@ -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:

View File

@ -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())

View File

@ -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)

View File

@ -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):

View File

@ -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()