From b72f00e30beff60e2ec551c4ed57d048061f1716 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 30 Oct 2007 23:05:16 +0000 Subject: Integrate control panel in the build so that I can actually distcheck. --- (limited to 'shell') diff --git a/shell/Makefile.am b/shell/Makefile.am index 56649be..4c9eac9 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -1,6 +1,4 @@ -SUBDIRS = hardware model view intro - -bin_SCRIPTS = sugar-shell +SUBDIRS = controlpanel hardware model view intro sugardir = $(pkgdatadir)/shell sugar_PYTHON = \ diff --git a/shell/controlpanel/Makefile.am b/shell/controlpanel/Makefile.am new file mode 100644 index 0000000..353aeec --- /dev/null +++ b/shell/controlpanel/Makefile.am @@ -0,0 +1,2 @@ +sugardir = $(pkgdatadir)/shell/controlpanel +sugar_PYTHON = control.py diff --git a/shell/controlpanel/sugar-control b/shell/controlpanel/sugar-control deleted file mode 100755 index 4bee092..0000000 --- a/shell/controlpanel/sugar-control +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2007, One Laptop Per Child -# -# 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 library 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. -# -# 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. - -import getopt, sys - -import control - -def cmd_help(): - print 'Usage: sugar-control [ option ] key [ args ... ] \n\ - Control for the sugar environment. \n\ - Options: \n\ - -h, --help show this help message and exit \n\ - -h key show information about this key \n\ - -g key get the current value of the key \n\ - -s key set the current value for the key \n\ - ' - -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], "h:s:g:", ["help"]) - except getopt.GetoptError: - cmd_help() - sys.exit(2) - - output = None - verbose = False - - for opt, key in opts: - if opt in ("-h"): - method = getattr(control, 'set_' + key, None) - if method is None: - cmd_help() - sys.exit() - else: - print method.__doc__ - if opt in ("-g"): - method = getattr(control, 'print_' + key, None) - if method is None: - cmd_help() - sys.exit() - else: - method() - if opt in ("-s"): - method = getattr(control, 'set_' + key, None) - if method is None: - cmd_help() - sys.exit() - else: - try: - method(*args) - except Exception, e: - print "sugar-control: %s"% e - -if __name__ == '__main__': - main() diff --git a/shell/sugar-shell b/shell/sugar-shell deleted file mode 100755 index 8f78289..0000000 --- a/shell/sugar-shell +++ /dev/null @@ -1,168 +0,0 @@ -#!/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 -import gettext -import signal - -import pygtk -pygtk.require('2.0') -import gtk -import gobject -import gst - -from sugar import env -from sugar import logger -from sugar.profile import get_profile - -sys.path.insert(0, env.get_shell_path()) - -from view.Shell import Shell -from model.shellmodel import ShellModel -from shellservice import ShellService -from hardware import hardwaremanager -from intro import intro -import logsmanager - -def _start_matchbox(): - cmd = ['matchbox-window-manager'] - - cmd.extend(['-use_titlebar', 'no']) - cmd.extend(['-theme', 'sugar']) - cmd.extend(['-kbdconfig', env.get_shell_path('kbdconfig')]) - - gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) - -def _save_session_info(): - # Save our DBus Session Bus address somewhere it can be found - # - # WARNING!!! this is going away at some near future point, do not rely on it - # - session_info_file = os.path.join(env.get_profile_path(), "session.info") - f = open(session_info_file, "w") - - cp = ConfigParser() - cp.add_section('Session') - cp.set('Session', 'dbus_address', os.environ['DBUS_SESSION_BUS_ADDRESS']) - cp.set('Session', 'display', gtk.gdk.display_get_default().get_name()) - cp.write(f) - - f.close() - -def _setup_translations(): - domain = 'sugar' - gettext.bindtextdomain(domain, env.get_locale_path()) - gettext.textdomain(domain) - -def check_cm(bus_name): - try: - import dbus - bus = dbus.SessionBus() - bus_object = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') - name = bus_object.GetNameOwner(bus_name, dbus_interface='org.freedesktop.DBus') - if name: - return True - except dbus.DBusException: - pass - return False - -def _shell_started_cb(): - # Unfreeze the display - hw_manager = hardwaremanager.get_manager() - hw_manager.set_dcon_freeze(0) - - startup_sound = os.path.join(env.get_data_path('startup.flac')) - if os.path.exists(startup_sound): - player = gst.element_factory_make("playbin", "player") - player.set_property("uri", "file://" + startup_sound) - player.set_state(gst.STATE_PLAYING) - -def main(): - gobject.idle_add(_shell_started_cb) - - logsmanager.setup() - logger.start('shell') - - _save_session_info() - _start_matchbox() - _setup_translations() - - icons_path = env.get_data_path('icons') - gtk.icon_theme_get_default().append_search_path(icons_path) - - # Do initial setup if needed - if not get_profile().is_valid(): - win = intro.IntroWindow() - win.show_all() - gtk.main() - - # FIXME avoid zombie activity processes - signal.signal(signal.SIGCHLD, signal.SIG_IGN) - - if os.environ.has_key("SUGAR_TP_DEBUG"): - # Allow the user time to start up telepathy connection managers - # using the Sugar DBus bus address - import time - from telepathy.client import ManagerRegistry - - registry = ManagerRegistry() - registry.LoadManagers() - - debug_flags = os.environ["SUGAR_TP_DEBUG"].split(',') - for cm_name in debug_flags: - if cm_name not in ["gabble", "salut"]: - continue - - try: - cm = registry.services[cm_name] - except KeyError: - print RuntimeError("%s connection manager not found!" % cm_name) - - while not check_cm(cm['busname']): - print "Waiting for %s on: DBUS_SESSION_BUS_ADDRESS=%s" %(cm_name, os.environ["DBUS_SESSION_BUS_ADDRESS"]) - try: - time.sleep(5) - except KeyboardInterrupt: - print "Got Ctrl+C, continuing..." - break - - model = ShellModel() - shell = Shell(model) - service = ShellService(shell) - -if __name__ == '__main__': - # running the gtk.main outside of the main() function allows us to - # profile startup times. To profile startup times replace the following - # call to main with: - # import cProfile - # cProfile.run('main()', '/home/olpc/sugar-startup.stats') - - main() - - hw_manager = hardwaremanager.get_manager() - hw_manager.startup() - - try: - gtk.main() - except KeyboardInterrupt: - print 'Ctrl+C pressed, exiting...' - - session_info_file = os.path.join(env.get_profile_path(), "session.info") - os.remove(session_info_file) - -- cgit v0.9.1