diff --git a/Makefile.am b/Makefile.am index 6359a2b5..86a095c4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,4 +11,4 @@ EXTRA_DIST = \ intltool-update.in \ intltool-extract.in -SUBDIRS = src po +SUBDIRS = bin src po diff --git a/bin/Makefile.am b/bin/Makefile.am new file mode 100644 index 00000000..0d782674 --- /dev/null +++ b/bin/Makefile.am @@ -0,0 +1 @@ +dist_bin_SCRIPTS = sugar-activity diff --git a/src/sugar3/activity/main.py b/bin/sugar-activity similarity index 72% rename from src/sugar3/activity/main.py rename to bin/sugar-activity index fa84f02f..2b1b9b3a 100644 --- a/src/sugar3/activity/main.py +++ b/bin/sugar-activity @@ -1,41 +1,40 @@ -# Copyright (C) 2008 Red Hat, Inc. +#!/usr/bin/env python + +# Copyright (C) 2006-2008, Red Hat, Inc. # -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser 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 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 library is distributed in the hope that it will be useful, +# 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 -# Lesser General Public License for more details. +# 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 Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# 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 sys import gettext from optparse import OptionParser -import gtk import dbus import dbus.service import dbus.glib import sugar -from sugar3.activity import activityhandle -from sugar3.activity import i18n -from sugar3.bundle.activitybundle import ActivityBundle -from sugar3.graphics import style +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() + return activity def get_single_process_name(bundle_id): @@ -61,7 +60,6 @@ class SingleProcess(dbus.service.Object): handle = activityhandle.create_from_dict(handle_dict) create_activity_instance(self.constructor, handle) - def main(): parser = OptionParser() parser.add_option('-b', '--bundle-id', dest='bundle_id', @@ -100,20 +98,6 @@ def main(): os.environ['SUGAR_BUNDLE_NAME'] = bundle.get_name() os.environ['SUGAR_BUNDLE_VERSION'] = str(bundle.get_activity_version()) - gtk.icon_theme_get_default().append_search_path(bundle.get_icons_path()) - - # This code can be removed when we grow an xsettings daemon (the GTK+ - # init routines will then automatically figure out the font settings) - settings = gtk.settings_get_default() - settings.set_property('gtk-font-name', - '%s %f' % (style.FONT_FACE, style.FONT_SIZE)) - - locale_path = i18n.get_locale_path(bundle.get_bundle_id()) - - gettext.bindtextdomain(bundle.get_bundle_id(), locale_path) - gettext.bindtextdomain('sugar-toolkit', sugar3.locale_path) - gettext.textdomain(bundle.get_bundle_id()) - splitted_module = args[0].rsplit('.', 1) module_name = splitted_module[0] class_name = splitted_module[1] @@ -155,6 +139,9 @@ def main(): if hasattr(module, 'start'): module.start() - create_activity_instance(activity_constructor, activity_handle) + instance = create_activity_instance(activity_constructor, activity_handle) + + if hasattr(instance, 'run_main_loop'): + instance.run_main_loop() - gtk.main() +main() diff --git a/configure.ac b/configure.ac index 91db19a6..fa38c66b 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,7 @@ GOBJECT_INTROSPECTION_CHECK([1.30.0]) AC_OUTPUT([ Makefile +bin/Makefile src/Makefile src/sugar3/Makefile src/sugar3/activity/Makefile diff --git a/src/sugar3/activity/Makefile.am b/src/sugar3/activity/Makefile.am index 50e12a5d..40701d10 100644 --- a/src/sugar3/activity/Makefile.am +++ b/src/sugar3/activity/Makefile.am @@ -7,6 +7,5 @@ sugar_PYTHON = \ activityservice.py \ bundlebuilder.py \ i18n.py \ - main.py \ namingalert.py \ widgets.py diff --git a/src/sugar3/activity/activity.py b/src/sugar3/activity/activity.py index f92f2615..d6b95904 100644 --- a/src/sugar3/activity/activity.py +++ b/src/sugar3/activity/activity.py @@ -71,8 +71,10 @@ from telepathy.interfaces import CHANNEL, \ from telepathy.constants import CONNECTION_HANDLE_TYPE_CONTACT from telepathy.constants import CONNECTION_HANDLE_TYPE_ROOM +import sugar3 from sugar3 import util from sugar3.presence import presenceservice +from sugar3.activity import i18n from sugar3.activity.activityservice import ActivityService from sugar3.activity.namingalert import NamingAlert from sugar3.graphics import style @@ -259,6 +261,22 @@ class Activity(Window, Gtk.Container): the base class __init()__ before doing Activity specific things. """ + # Stuff that needs to be done early + + locale_path = i18n.get_locale_path(self.get_bundle_id()) + gettext.bindtextdomain(self.get_bundle_id(), locale_path) + gettext.bindtextdomain('sugar-toolkit', sugar3.locale_path) + gettext.textdomain(self.get_bundle_id()) + + icons_path = os.path.join(get_bundle_path(), 'icons') + Gtk.IconTheme.get_default().append_search_path(icons_path) + + # This code can be removed when we grow an xsettings daemon (the GTK+ + # init routines will then automatically figure out the font settings) + settings = Gtk.Settings.get_default() + settings.set_property('gtk-font-name', + '%s %f' % (style.FONT_FACE, style.FONT_SIZE)) + Window.__init__(self) if 'SUGAR_ACTIVITY_ROOT' in os.environ: @@ -349,6 +367,9 @@ class Activity(Window, Gtk.Container): self.__jobject_updated_cb) self.set_title(self._jobject.metadata['title']) + def run_main_loop(self): + Gtk.main() + def _initialize_journal_object(self): title = _('%s Activity') % get_bundle_name() client = GConf.Client.get_default()