Refactor sugar.env and paths
This commit is contained in:
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())
|
||||||
|
43
sugar/env.py
43
sugar/env.py
@ -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…
Reference in New Issue
Block a user