Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-08-08 16:08:07 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-08-08 16:08:07 (GMT)
commitfa8bcd2ba58fca8605bc2fea72478a23f9bd9998 (patch)
tree5a1f5702a5847b8f7cb80684d0c2dd9f92e9f13d /shell
parentbfcab6b0b64d1b10d4010c34596e748f54335ba9 (diff)
Move the activity register to the clipboard service.
Diffstat (limited to 'shell')
-rw-r--r--shell/model/Makefile.am1
-rw-r--r--shell/model/bundleregistry.py118
-rw-r--r--shell/shellservice.py69
3 files changed, 0 insertions, 188 deletions
diff --git a/shell/model/Makefile.am b/shell/model/Makefile.am
index 486ad09..0b7d14c 100644
--- a/shell/model/Makefile.am
+++ b/shell/model/Makefile.am
@@ -4,7 +4,6 @@ sugardir = $(pkgdatadir)/shell/model
sugar_PYTHON = \
__init__.py \
accesspointmodel.py \
- bundleregistry.py \
BuddyModel.py \
Friends.py \
Invites.py \
diff --git a/shell/model/bundleregistry.py b/shell/model/bundleregistry.py
deleted file mode 100644
index bc8eec9..0000000
--- a/shell/model/bundleregistry.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-import os
-
-import gobject
-
-from sugar.activity.bundle import Bundle
-from sugar import env
-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):
- """Internal class responsible for creating dbus service files
-
- DBUS services are defined in files which bind a service name
- to the name of an executable which provides the service name.
-
- In Sugar, the service files are automatically generated from
- the activity registry (by this class). When an activity's
- dbus launch service is requested, dbus will launch the
- specified executable in order to allow it to provide the
- requested activity-launching service.
-
- In the case of activities which provide a "class", instead of
- an "exec" attribute in their activity.info, the
- sugar-activity-factory script is used with an appropriate
- argument to service that bundle.
- """
- SERVICE_DIRECTORY = '~/.local/share/dbus-1/services'
- def __init__(self):
- service_dir = os.path.expanduser(self.SERVICE_DIRECTORY)
- if not os.path.isdir(service_dir):
- os.makedirs(service_dir)
-
- self._path = service_dir
-
- def add(self, bundle):
- util.write_service(bundle.get_service_name(),
- bundle.get_exec(), self._path)
-
-class BundleRegistry(gobject.GObject):
- """Service that tracks the available activity bundles"""
-
- __gsignals__ = {
- 'bundle-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
- ([gobject.TYPE_PYOBJECT]))
- }
-
- def __init__(self):
- gobject.GObject.__init__(self)
-
- self._bundles = {}
- self._search_path = []
- self._service_manager = _ServiceManager()
-
- def get_bundle(self, service_name):
- """Returns an bundle given his service name"""
- if self._bundles.has_key(service_name):
- return self._bundles[service_name]
- else:
- return None
-
- def add_search_path(self, path):
- """Add a directory to the bundles search path"""
- self._search_path.append(path)
- self._scan_directory(path)
-
- def __iter__(self):
- return self._bundles.values().__iter__()
-
- def _scan_directory(self, path):
- if os.path.isdir(path):
- for f in os.listdir(path):
- bundle_dir = os.path.join(path, f)
- if os.path.isdir(bundle_dir) and \
- bundle_dir.endswith('.activity'):
- self.add_bundle(bundle_dir)
-
- def add_bundle(self, bundle_path):
- bundle = Bundle(bundle_path)
- if bundle.is_valid():
- self._bundles[bundle.get_service_name()] = bundle
- self._service_manager.add(bundle)
- self.emit('bundle-added', bundle)
- return True
- else:
- return False
-
-def get_registry():
- return _bundle_registry
-
-_bundle_registry = BundleRegistry()
-
-for path in _get_data_dirs():
- bundles_path = os.path.join(path, 'activities')
- _bundle_registry.add_search_path(bundles_path)
-
-_bundle_registry.add_search_path(env.get_user_activities_path())
diff --git a/shell/shellservice.py b/shell/shellservice.py
index 5728e44..d577a44 100644
--- a/shell/shellservice.py
+++ b/shell/shellservice.py
@@ -17,10 +17,7 @@
"""D-bus service providing access to the shell's functionality"""
import dbus
-from model import bundleregistry
-
_DBUS_SERVICE = "org.laptop.Shell"
-_DBUS_ACTIVITY_REGISTRY_IFACE = "org.laptop.Shell.ActivityRegistry"
_DBUS_SHELL_IFACE = "org.laptop.Shell"
_DBUS_OWNER_IFACE = "org.laptop.Shell.Owner"
_DBUS_PATH = "/org/laptop/Shell"
@@ -56,9 +53,6 @@ class ShellService(dbus.service.Object):
self._home_model.connect('active-activity-changed',
self._cur_activity_changed_cb)
- bundle_registry = bundleregistry.get_registry()
- bundle_registry.connect('bundle-added', self._bundle_added_cb)
-
bus = dbus.SessionBus()
bus_name = dbus.service.BusName(_DBUS_SERVICE, bus=bus)
dbus.service.Object.__init__(self, bus_name, _DBUS_PATH)
@@ -83,60 +77,6 @@ class ShellService(dbus.service.Object):
def NotifyLaunchFailure(self, activity_id):
self._shell.notify_launch_failure(activity_id)
- @dbus.service.method(_DBUS_ACTIVITY_REGISTRY_IFACE,
- in_signature="s", out_signature="b")
- def AddBundle(self, bundle_path):
- """Register the activity bundle with the global registry
-
- bundle_path -- path to the activity bundle's root directory,
- that is, the directory with activity/activity.info as a
- child of the directory.
-
- The bundleregistry.BundleRegistry is responsible for setting
- up a set of d-bus service mappings for each available activity.
- """
- registry = bundleregistry.get_registry()
- return registry.add_bundle(bundle_path)
-
- @dbus.service.method(_DBUS_ACTIVITY_REGISTRY_IFACE,
- in_signature="s", out_signature="a{sv}")
- def GetActivity(self, service_name):
- registry = bundleregistry.get_registry()
- bundle = registry.get_bundle(service_name)
- if not bundle:
- return {}
-
- return self._bundle_to_dict(bundle)
-
- @dbus.service.method(_DBUS_ACTIVITY_REGISTRY_IFACE,
- in_signature="s", out_signature="aa{sv}")
- def FindActivity(self, name):
- result = []
- key = name.lower()
-
- for bundle in bundleregistry.get_registry():
- name = bundle.get_name().lower()
- service_name = bundle.get_service_name().lower()
- if name.find(key) != -1 or service_name.find(key) != -1:
- result.append(self._bundle_to_dict(bundle))
-
- return result
-
- @dbus.service.method(_DBUS_ACTIVITY_REGISTRY_IFACE,
- in_signature="s", out_signature="aa{sv}")
- def GetActivitiesForType(self, mime_type):
- result = []
-
- for bundle in bundleregistry.get_registry():
- if bundle.get_mime_types() and mime_type in bundle.get_mime_types():
- result.append(self._bundle_to_dict(bundle))
-
- return result
-
- @dbus.service.signal(_DBUS_ACTIVITY_REGISTRY_IFACE, signature="a{sv}")
- def ActivityAdded(self, activity_info):
- pass
-
@dbus.service.signal(_DBUS_OWNER_IFACE, signature="s")
def ColorChanged(self, color):
pass
@@ -169,12 +109,3 @@ class ShellService(dbus.service.Object):
if new_id:
self.CurrentActivityChanged(new_id)
- def _bundle_to_dict(self, bundle):
- return {'name': bundle.get_name(),
- 'icon': bundle.get_icon(),
- 'service_name': bundle.get_service_name(),
- 'path': bundle.get_path()}
-
- def _bundle_added_cb(self, bundle_registry, bundle):
- self.ActivityAdded(self._bundle_to_dict(bundle))
-