From ee5470f7e046ccc94a6d78065af4565c72e707e5 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 27 Aug 2008 09:20:19 +0000 Subject: Use sugar.activity.main --- diff --git a/bin/sugar-activity b/bin/sugar-activity index 0761387..4abdd80 100644 --- a/bin/sugar-activity +++ b/bin/sugar-activity @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2006, Red Hat, Inc. +# Copyright (C) 2006-2008, 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 @@ -16,123 +16,6 @@ # 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 sys -import gettext -from optparse import OptionParser +from sugar.activity import main -import pygtk -pygtk.require('2.0') -import gtk -import dbus -import dbus.service -import dbus.glib - -from sugar.activity import activityhandle -from sugar.bundle.activitybundle import ActivityBundle -from sugar import logger - -def create_activity_instance(constructor, handle): - activity = constructor(handle) - activity.show() - -def get_single_process_name(bundle_id): - return bundle_id - -def get_single_process_path(bundle_id): - return '/' + bundle_id.replace('.', '/') - -class SingleProcess(dbus.service.Object): - def __init__(self, name_service, constructor): - self.constructor = constructor - - bus = dbus.SessionBus() - bus_name = dbus.service.BusName(name_service, bus=bus) - object_path = get_single_process_path(name_service) - dbus.service.Object.__init__(self, bus_name, object_path) - - @dbus.service.method("org.laptop.SingleProcess", in_signature="a{ss}") - def create(self, handle_dict): - handle = activityhandle.create_from_dict(handle_dict) - create_activity_instance(self.constructor, handle) - -parser = OptionParser() -parser.add_option("-b", "--bundle-id", dest="bundle_id", - help="identifier of the activity bundle") -parser.add_option("-a", "--activity-id", dest="activity_id", - help="identifier of the activity instance") -parser.add_option("-o", "--object-id", dest="object_id", - help="identifier of the associated datastore object") -parser.add_option("-u", "--uri", dest="uri", - help="URI to load") -parser.add_option('-s', '--single-process', dest='single_process', - action='store_true', - help='start all the instances in the same process') -(options, args) = parser.parse_args() - -logger.start() - -if 'SUGAR_BUNDLE_PATH' not in os.environ: - print 'SUGAR_BUNDLE_PATH is not defined in the environment.' - sys.exit(1) - -if len(args) == 0: - print 'A python class must be specified as first argument.' - sys.exit(1) - -bundle_path = os.environ['SUGAR_BUNDLE_PATH'] -sys.path.append(bundle_path) - -bundle = ActivityBundle(bundle_path) - -os.environ['SUGAR_BUNDLE_ID'] = bundle.get_bundle_id() -os.environ['SUGAR_BUNDLE_NAME'] = bundle.get_name() - -gtk.icon_theme_get_default().append_search_path(bundle.get_icons_path()) - -gettext.bindtextdomain(bundle.get_bundle_id(), - bundle.get_locale_path()) -gettext.textdomain(bundle.get_bundle_id()) - -splitted_module = args[0].rsplit('.', 1) -module_name = splitted_module[0] -class_name = splitted_module[1] - -module = __import__(module_name) -for comp in module_name.split('.')[1:]: - module = getattr(module, comp) - -activity_constructor = getattr(module, class_name) -activity_handle = activityhandle.ActivityHandle( - activity_id=options.activity_id, - object_id=options.object_id, uri=options.uri) - -if options.single_process is True: - sessionbus = dbus.SessionBus() - - service_name = get_single_process_name(options.bundle_id) - service_path = get_single_process_path(options.bundle_id) - - bus_object = sessionbus.get_object( - 'org.freedesktop.DBus', '/org/freedesktop/DBus') - try: - name = bus_object.GetNameOwner( - service_name, dbus_interface='org.freedesktop.DBus') - except dbus.DBusException: - name = None - - if not name: - service = SingleProcess(service_name, activity_constructor) - else: - single_process = sessionbus.get_object(service_name, service_path) - single_process.create(activity_handle.get_dict()) - - print 'Created %s in a single process.' % service_name - sys.exit(0) - -if hasattr(module, 'start'): - module.start() - -create_activity_instance(activity_constructor, activity_handle) - -gtk.main() +main.main() -- cgit v0.9.1