From 3e51b086df1221a469bc98842fe779c47f4f2514 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 22 Aug 2006 12:01:53 +0000 Subject: Create a conf module. Move activity registry out of the shell (should only be graphical) into it. --- diff --git a/.gitignore b/.gitignore index d5cddf0..2284514 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ depcomp libtool ltmain.sh po/ChangeLog +m4/intltool.m4 diff --git a/configure.ac b/configure.ac index 9e7ffb7..a6786f3 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,7 @@ sugar/activity/Makefile sugar/canvas/Makefile sugar/chat/Makefile sugar/chat/sketchpad/Makefile +sugar/conf/Makefile sugar/p2p/Makefile sugar/p2p/model/Makefile sugar/presence/Makefile diff --git a/shell/ActivityHost.py b/shell/ActivityHost.py index 84577c1..d8b6569 100644 --- a/shell/ActivityHost.py +++ b/shell/ActivityHost.py @@ -1,6 +1,7 @@ import gtk import dbus +from sugar import conf from sugar.activity import Activity from PeopleWindow import PeopleWindow @@ -20,7 +21,8 @@ class ActivityHost: self._gdk_window = gtk.gdk.window_foreign_new(self._xid) self._people_window = PeopleWindow(shell, self) - info = self._shell.get_registry().get_activity(self._default_type) + registry = conf.get_activity_registry() + info = registry.get_activity(self._default_type) self._icon_name = info.get_icon() def get_id(self): diff --git a/shell/Makefile.am b/shell/Makefile.am index dbaefdd..7c788b9 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -13,7 +13,6 @@ sugardir = $(pkgdatadir)/shell sugar_PYTHON = \ __init__.py \ ActivityHost.py \ - ActivityRegistry.py \ ChatController.py \ ConsoleWindow.py \ Owner.py \ diff --git a/shell/Shell.py b/shell/Shell.py index 2f47c22..171ae13 100755 --- a/shell/Shell.py +++ b/shell/Shell.py @@ -7,7 +7,6 @@ import gtk import gobject import wnck -from ActivityRegistry import ActivityRegistry from home.HomeWindow import HomeWindow from home.HomeModel import HomeModel from sugar import env @@ -17,6 +16,7 @@ from ActivityHost import ActivityHost from ChatController import ChatController from sugar.activity import ActivityFactory from sugar.activity import Activity +from sugar import conf import sugar.logger class ShellDbusService(dbus.service.Object): @@ -59,11 +59,10 @@ class Shell(gobject.GObject): gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])) } - def __init__(self, registry): + def __init__(self): gobject.GObject.__init__(self) self._screen = wnck.screen_get_default() - self._registry = registry self._hosts = {} self._zoom_level = Shell.ZOOM_HOME @@ -78,7 +77,7 @@ class Shell(gobject.GObject): self._chat_controller = ChatController(self) self._chat_controller.listen() - home_model = HomeModel(self._registry) + home_model = HomeModel() self._home_window = HomeWindow(self, home_model) self._home_window.show() @@ -141,11 +140,13 @@ class Shell(gobject.GObject): activity = self.get_current_activity() if activity: - module = self._registry.get_activity(activity.get_default_type()) + registry = conf.get_activity_registry() + module = registry.get_activity(activity.get_default_type()) self._console.set_page(module.get_id()) def join_activity(self, service): - info = self._registry.get_activity(service.get_type()) + registry = conf.get_activity_registry() + info = registry.get_activity(service.get_type()) activity_id = service.get_activity_id() @@ -165,7 +166,8 @@ class Shell(gobject.GObject): def start_activity(self, activity_name): activity = ActivityFactory.create(activity_name) - info = self._registry.get_activity_from_id(activity_name) + registry = conf.get_activity_registry() + info = registry.get_activity_from_id(activity_name) if info: default_type = info.get_default_type() if default_type != None: @@ -176,9 +178,6 @@ class Shell(gobject.GObject): logging.error('No such activity in the directory') return None - def get_registry(self): - return self._registry - def get_chat_controller(self): return self._chat_controller diff --git a/shell/home/HomeModel.py b/shell/home/HomeModel.py index 5f4965d..1e1e316 100644 --- a/shell/home/HomeModel.py +++ b/shell/home/HomeModel.py @@ -2,9 +2,9 @@ from home.FriendsModel import FriendsModel from home.MeshModel import MeshModel class HomeModel: - def __init__(self, registry): + def __init__(self): self._friends = FriendsModel() - self._mesh = MeshModel(registry) + self._mesh = MeshModel() def get_friends(self): return self._friends diff --git a/shell/home/HomeView.py b/shell/home/HomeView.py index acc451c..48a3044 100644 --- a/shell/home/HomeView.py +++ b/shell/home/HomeView.py @@ -7,6 +7,7 @@ from sugar.canvas.IconItem import IconColor from sugar.canvas.DonutItem import DonutItem from sugar.canvas.DonutItem import PieceItem from sugar.canvas.DonutItem import PieceIcon +from sugar import conf class TasksItem(DonutItem): def __init__(self, shell): @@ -56,7 +57,7 @@ class ActivityBar(goocanvas.Group): self._shell = shell - registry = shell.get_registry() + registry = conf.get_activity_registry() for activity in registry.list_activities(): if activity.get_show_launcher(): self.add_activity(activity) diff --git a/shell/home/MeshModel.py b/shell/home/MeshModel.py index b2163ac..2225cc6 100644 --- a/shell/home/MeshModel.py +++ b/shell/home/MeshModel.py @@ -1,7 +1,7 @@ import gobject from sugar.presence.PresenceService import PresenceService -from ActivityRegistry import ActivityRegistry +from sugar import conf class ActivityInfo: def __init__(self, service): @@ -27,11 +27,10 @@ class MeshModel(gobject.GObject): ([gobject.TYPE_PYOBJECT])) } - def __init__(self, registry): + def __init__(self): gobject.GObject.__init__(self) self._activities = {} - self._registry = registry self._pservice = PresenceService() self._pservice.connect("service-appeared", self.__service_appeared_cb) @@ -55,6 +54,7 @@ class MeshModel(gobject.GObject): self.__check_service(service) def __check_service(self, service): - if self._registry.get_activity(service.get_type()) != None: + registry = conf.get_activity_registry() + if registry.get_activity(service.get_type()) != None: if not self.has_activity(service.get_activity_id()): self.add_activity(service) diff --git a/shell/home/MeshView.py b/shell/home/MeshView.py index 8bbea05..a2694be 100644 --- a/shell/home/MeshView.py +++ b/shell/home/MeshView.py @@ -4,9 +4,11 @@ import goocanvas from sugar.canvas.IconItem import IconItem from sugar.canvas.IconItem import IconColor +from sugar import conf class ActivityItem(IconItem): - def __init__(self, activity, registry): + def __init__(self, activity): + registry = conf.get_activity_registry() info = registry.get_activity(activity.get_type()) icon_name = info.get_icon() @@ -18,9 +20,8 @@ class ActivityItem(IconItem): return self._activity.get_service() class Model(goocanvas.CanvasModelSimple): - def __init__(self, data_model, registry): + def __init__(self, data_model): goocanvas.CanvasModelSimple.__init__(self) - self._registry = registry root = self.get_root_item() @@ -51,7 +52,7 @@ class MeshView(goocanvas.CanvasView): self.connect("item_view_created", self.__item_view_created_cb) - canvas_model = Model(data_model, shell.get_registry()) + canvas_model = Model(data_model) self.set_model(canvas_model) def __activity_button_press_cb(self, view, target, event, service): diff --git a/shell/session/Session.py b/shell/session/Session.py index 8af2c65..28da29a 100644 --- a/shell/session/Session.py +++ b/shell/session/Session.py @@ -25,11 +25,9 @@ class MatchboxProcess(Process): class Session: """Takes care of running the shell and all the sugar processes""" - def __init__(self, registry): - self._registry = registry - def start(self): """Start the session""" + PresenceService.start() process = MatchboxProcess() @@ -38,7 +36,7 @@ class Session: console = ConsoleWindow() sugar.logger.start('Shell', console) - shell = Shell(self._registry) + shell = Shell() shell.set_console(console) shell.start() diff --git a/shell/sugar b/shell/sugar index 8108b26..da0b7b3 100755 --- a/shell/sugar +++ b/shell/sugar @@ -19,11 +19,6 @@ from sugar import env env.setup() -from ActivityRegistry import ActivityRegistry - -registry = ActivityRegistry() -registry.scan_directory(env.get_activities_dir()) - from session.Emulator import Emulator if os.environ.has_key('SUGAR_EMULATOR') and \ @@ -33,5 +28,5 @@ if os.environ.has_key('SUGAR_EMULATOR') and \ from session.Session import Session -session = Session(registry) +session = Session() session.start() diff --git a/sugar/Makefile.am b/sugar/Makefile.am index d339fba..b13bb24 100644 --- a/sugar/Makefile.am +++ b/sugar/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = activity canvas chat p2p presence +SUBDIRS = activity canvas chat conf p2p presence sugardir = $(pythondir)/sugar sugar_PYTHON = \ diff --git a/shell/ActivityRegistry.py b/sugar/conf/ActivityRegistry.py index 5ff0059..5ff0059 100644 --- a/shell/ActivityRegistry.py +++ b/sugar/conf/ActivityRegistry.py diff --git a/sugar/conf/Makefile.am b/sugar/conf/Makefile.am new file mode 100644 index 0000000..59d6562 --- /dev/null +++ b/sugar/conf/Makefile.am @@ -0,0 +1,4 @@ +sugardir = $(pythondir)/sugar/conf +sugar_PYTHON = \ + __init__.py \ + ActivityRegistry.py diff --git a/sugar/conf/__init__.py b/sugar/conf/__init__.py new file mode 100644 index 0000000..6032837 --- /dev/null +++ b/sugar/conf/__init__.py @@ -0,0 +1,6 @@ +from sugar.conf.ActivityRegistry import ActivityRegistry + +__registry = ActivityRegistry() + +def get_activity_registry(): + return __registry diff --git a/sugar/env.py b/sugar/env.py index 66299bf..0caf198 100644 --- a/sugar/env.py +++ b/sugar/env.py @@ -8,6 +8,7 @@ except ImportError: from sugar.__installed__ import * import sugar.setup +import sugar.conf def add_to_python_path(path): sys.path.insert(0, path) @@ -40,6 +41,9 @@ def setup(): sugar.setup.write_service('org.laptop.Presence', bin, get_services_dir()) + registry = sugar.conf.get_activity_registry() + registry.scan_directory(get_activities_dir()) + def get_user_dir(): if os.environ.has_key('SUGAR_NICK_NAME'): nick = get_nick_name() -- cgit v0.9.1