From 49ff2f86ded94749a8cf55daa6def614258044d5 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 06 Apr 2007 13:22:22 +0000 Subject: Move not shell specific scripts in bin --- (limited to 'bin') diff --git a/bin/Makefile.am b/bin/Makefile.am index f2f68d3..db5e219 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -1,5 +1,7 @@ bin_SCRIPTS = \ sugar \ + sugar-activity \ + sugar-activity-factory \ sugar-install-bundle EXTRA_DIST = \ diff --git a/bin/sugar-activity b/bin/sugar-activity new file mode 100755 index 0000000..1b85980 --- /dev/null +++ b/bin/sugar-activity @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +# Copyright (C) 2006, 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 sys +import os +from ConfigParser import ConfigParser + +from sugar import env + +# Setup the environment so that we run inside the Sugar shell +cp = ConfigParser() +cp.read([env.get_profile_path("session.info")]) +os.environ['DBUS_SESSION_BUS_ADDRESS'] = cp.get('Session', 'dbus_address') +os.environ['DISPLAY'] = cp.get('Session', 'display') +del cp + +import gtk +import dbus +import dbus.glib + +from sugar.activity import bundleregistry +from sugar.activity import activityfactory +from sugar.activity import activityfactoryservice + +def _success_cb(handler, exit): + if exit: + gtk.main_quit() + +def _error_cb(handler, err): + print err + gtk.main_quit() + +def print_help(self): + sys.exit(0) + +bundle = None + +if len(sys.argv) > 1: + registry = bundleregistry.get_registry() + bundle = registry.find_bundle(sys.argv[1]) + +if bundle == None: + print 'Usage:\n\n' \ + 'sugar-activity [bundle]\n\n' \ + 'Bundle can be a part of the service name or of bundle name.' + sys.exit(0) + +bus = dbus.SessionBus() +bus_object = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') +try: + name = bus_object.GetNameOwner( + bundle.get_service_name(), dbus_interface='org.freedesktop.DBus') +except dbus.DBusException: + name = None + +if name: + print '%s is already running, creating a new instance.' % bundle.get_service_name() +else: + activityfactoryservice.run(bundle.get_path()) + +handler = activityfactory.create(bundle.get_service_name()) +handler.connect('success', _success_cb, name != None) +handler.connect('error', _error_cb) + +gtk.main() diff --git a/bin/sugar-activity-factory b/bin/sugar-activity-factory new file mode 100755 index 0000000..a144f34 --- /dev/null +++ b/bin/sugar-activity-factory @@ -0,0 +1,29 @@ +#!/usr/bin/env python + +# Copyright (C) 2006, 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 sys + +import pygtk +pygtk.require('2.0') +import gtk + +from sugar.activity import activityfactoryservice + +activityfactoryservice.run_with_args(sys.argv) + +gtk.main() -- cgit v0.9.1