upgraded paroli, added messages- and contacts-part
authorMirko Vogt <mirko@openwrt.org>
Sun, 1 Mar 2009 20:03:39 +0000 (20:03 +0000)
committerMirko Vogt <mirko@openwrt.org>
Sun, 1 Mar 2009 20:03:39 +0000 (20:03 +0000)
SVN-Revision: 14718

phone/paroli/Makefile
phone/paroli/patches/050-adjust-desktop-files-and-naming.patch

index b5d7aade2624c9774727588663b79efb154299d1..fc7567b2e3dc395246314123df294e334f28b1c6 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=paroli
-PKG_VERSION:=20090211
-PKG_REV:=1ea74180e5ddd39b30745f4ca98b0cbec140018f
+PKG_VERSION:=20090227
+PKG_REV:=08c924538448e7de202432f470564764852df8a6
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
@@ -33,9 +33,8 @@ endef
 
 COMPONENTS:= \
        tele \
-       #paroli-i-o \
-       #paroli-contacts \
-       #paroli-msgs \
+       msgs \
+       people \
 
 define Package/paroli/description
   Paroli is an integrated phone application written in Python which uses the FSO (freesmartphone.org) DBus API
index 61e7cc3c1c26bfa38f0f43619e5387d0a20a7cb2..88d0f4fdf97b209c28aee99d5680a33958132aa9 100644 (file)
@@ -1,33 +1,23 @@
-diff -ruN paroli.orig/data/paroli-contacts.desktop paroli/data/paroli-contacts.desktop
---- paroli.orig/data/paroli-contacts.desktop   2009-02-11 02:30:43.000000000 +0100
-+++ paroli/data/paroli-contacts.desktop        2009-02-11 02:32:19.000000000 +0100
-@@ -1,16 +1,13 @@
- [Desktop Entry]
--Name=People
--Name[fr]=Calculatrice
--Name[it]=Calcolatrice
--Name[ru]=Калькулятор
--Name[sv]=Miniräknare
-+GenericName=Contacts
-+Name=Contacts
- Encoding=UTF-8
- Version=1.0
--Comment=Paroli Dialer
-+Comment=Paroli Contacts
- StartupNotify=false
- Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Paroli-Contacts
--Icon=openmoko-calculator
--Terminal=true
-+Icon=/usr/share/icons/paroli/paroli-contacts.png
+diff -ruN paroli.orig/data/msgs.desktop paroli/data/msgs.desktop
+--- paroli.orig/data/msgs.desktop      1970-01-01 01:00:00.000000000 +0100
++++ paroli/data/msgs.desktop   2009-02-23 22:38:37.000000000 +0100
+@@ -0,0 +1,13 @@
++[Desktop Entry]
++GenericName=Messages
++Name=Messages
++Encoding=UTF-8
++Version=1.0
++Comment=Paroli Messages
++StartupNotify=false
++Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Msgs
++Icon=/usr/share/icons/paroli/msgs.png
 +Terminal=false
- Type=Application
- SingleInstance=true
--Categories=GTK;Application;Office;
-\ No newline at end of file
++Type=Application
++SingleInstance=true
 +Categories=Telephony;TelephonyTools
 diff -ruN paroli.orig/data/parolid.desktop paroli/data/parolid.desktop
 --- paroli.orig/data/parolid.desktop   1970-01-01 01:00:00.000000000 +0100
-+++ paroli/data/parolid.desktop        2009-02-11 02:32:19.000000000 +0100
++++ paroli/data/parolid.desktop        2009-02-23 22:38:37.000000000 +0100
 @@ -0,0 +1,13 @@
 +[Desktop Entry]
 +GenericName=Paroli
@@ -36,126 +26,32 @@ diff -ruN paroli.orig/data/parolid.desktop paroli/data/parolid.desktop
 +Version=1.0
 +Comment=Paroli Daemon
 +StartupNotify=false
-+Exec=parolid
++Exec=paroli-launcher
 +Icon=/usr/share/icons/paroli/parolid.png
 +Terminal=false
 +Type=Application
 +SingleInstance=true
 +Categories=Telephony;TelephonyTools
-diff -ruN paroli.orig/data/paroli-dialer.desktop paroli/data/paroli-dialer.desktop
---- paroli.orig/data/paroli-dialer.desktop     2009-02-11 02:30:43.000000000 +0100
-+++ paroli/data/paroli-dialer.desktop  2009-02-11 02:32:19.000000000 +0100
-@@ -1,16 +1,13 @@
- [Desktop Entry]
--Name=Tele
--Name[fr]=Calculatrice
--Name[it]=Calcolatrice
--Name[ru]=Калькулятор
--Name[sv]=Miniräknare
-+GenericName=Dialer
-+Name=Dialer
- Encoding=UTF-8
- Version=1.0
- Comment=Paroli Dialer
- StartupNotify=false
- Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Paroli-Dialer
--Icon=openmoko-calculator
--Terminal=true
-+Icon=/usr/share/icons/paroli/paroli-dialer.png
-+Terminal=false
- Type=Application
- SingleInstance=true
--Categories=GTK;Application;Office;
-\ No newline at end of file
-+Categories=Telephony;TelephonyTools
-diff -ruN paroli.orig/data/paroli-i-o.desktop paroli/data/paroli-i-o.desktop
---- paroli.orig/data/paroli-i-o.desktop        1970-01-01 01:00:00.000000000 +0100
-+++ paroli/data/paroli-i-o.desktop     2009-02-11 02:32:19.000000000 +0100
+diff -ruN paroli.orig/data/people.desktop paroli/data/people.desktop
+--- paroli.orig/data/people.desktop    1970-01-01 01:00:00.000000000 +0100
++++ paroli/data/people.desktop 2009-02-23 22:38:37.000000000 +0100
 @@ -0,0 +1,13 @@
 +[Desktop Entry]
-+GenericName=I/O
-+Name=I/O
++GenericName=People
++Name=People
 +Encoding=UTF-8
 +Version=1.0
-+Comment=Paroli I/O
++Comment=Paroli People
 +StartupNotify=false
-+Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Paroli-I/O
-+Icon=openmoko-calculator
-+Terminal=true
++Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:People
++Icon=/usr/share/icons/paroli/people.png
++Terminal=false
 +Type=Application
 +SingleInstance=true
-+Categories=GTK;Application;Office;
-diff -ruN paroli.orig/data/paroli-io.desktop paroli/data/paroli-io.desktop
---- paroli.orig/data/paroli-io.desktop 2009-02-11 02:30:43.000000000 +0100
-+++ paroli/data/paroli-io.desktop      1970-01-01 01:00:00.000000000 +0100
-@@ -1,16 +0,0 @@
--[Desktop Entry]
--Name=I/O
--Name[fr]=Calculatrice
--Name[it]=Calcolatrice
--Name[ru]=Калькулятор
--Name[sv]=Miniräknare
--Encoding=UTF-8
--Version=1.0
--Comment=Paroli I/O
--StartupNotify=false
--Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Paroli-I/O
--Icon=openmoko-calculator
--Terminal=true
--Type=Application
--SingleInstance=true
--Categories=GTK;Application;Office;
-\ No newline at end of file
-diff -ruN paroli.orig/data/paroli-launcher.desktop paroli/data/paroli-launcher.desktop
---- paroli.orig/data/paroli-launcher.desktop   2009-02-11 02:30:43.000000000 +0100
-+++ paroli/data/paroli-launcher.desktop        2009-02-11 02:32:19.000000000 +0100
-@@ -1,11 +1,13 @@
- [Desktop Entry]
--Name=PLauncher
--TryExec=paroli-launcher
--Icon=tichy
- GenericName=paroli-launcher
-+Name=PLauncher
-+Encoding=UTF-8
-+Version=1.0
- Comment=Paroli Launcher
- StartupNotify=false
- Exec=paroli-launcher
-+Icon=/usr/share/icons/paroli/paroli-launcher.png
- Terminal=false
- Type=Application
--Categories=Office;
-+SingleInstance=true
-+Categories=Telephony;TelephonyTools
-diff -ruN paroli.orig/data/paroli-msgs.desktop paroli/data/paroli-msgs.desktop
---- paroli.orig/data/paroli-msgs.desktop       2009-02-11 02:30:43.000000000 +0100
-+++ paroli/data/paroli-msgs.desktop    2009-02-11 02:32:19.000000000 +0100
-@@ -1,16 +1,13 @@
- [Desktop Entry]
--Name=Msgs
--Name[fr]=Calculatrice
--Name[it]=Calcolatrice
--Name[ru]=Калькулятор
--Name[sv]=Miniräknare
-+GenericName=Messages
-+Name=Messages
- Encoding=UTF-8
- Version=1.0
- Comment=Paroli Messages
- StartupNotify=false
- Exec=dbus-send --system --print-reply --dest=org.tichy.launcher /Launcher org.tichy.Launcher.Launch string:Paroli-Msgs
--Icon=openmoko-calculator
--Terminal=true
-+Icon=/usr/share/icons/paroli/paroli-msgs.png
-+Terminal=false
- Type=Application
- SingleInstance=true
--Categories=GTK;Application;Office;
-\ No newline at end of file
 +Categories=Telephony;TelephonyTools
 diff -ruN paroli.orig/data/tele.desktop paroli/data/tele.desktop
 --- paroli.orig/data/tele.desktop      1970-01-01 01:00:00.000000000 +0100
-+++ paroli/data/tele.desktop   2009-02-11 02:32:19.000000000 +0100
++++ paroli/data/tele.desktop   2009-02-23 22:38:37.000000000 +0100
 @@ -0,0 +1,13 @@
 +[Desktop Entry]
 +GenericName=Tele
@@ -170,617 +66,28 @@ diff -ruN paroli.orig/data/tele.desktop paroli/data/tele.desktop
 +Type=Application
 +SingleInstance=true
 +Categories=Telephony;TelephonyTools
-diff -ruN paroli.orig/paroli-scripts/parolid paroli/paroli-scripts/parolid
---- paroli.orig/paroli-scripts/parolid 1970-01-01 01:00:00.000000000 +0100
-+++ paroli/paroli-scripts/parolid      2009-02-11 02:32:19.000000000 +0100
-@@ -0,0 +1,286 @@
-+#!/usr/bin/python
-+#
-+#    Paroli
-+#
-+#    copyright 2008  Openmoko
-+#    Guillaume Chereau (charlie@openmoko.org)
-+#
-+#    This file is part of Paroli.
-+#
-+#    Paroli 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 3 of the License, or
-+#    (at your option) any later version.
-+#
-+#    Paroli 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 Paroli.  If not, see <http://www.gnu.org/licenses/>.
-+
-+"""DBus launcher paroli main script
-+
-+This script will load all the plugins, then start a DBus server
-+listening that we can use to start any application.
-+
-+It is still experimental.
-+
-+To use it, start it (./launcher.py), then use for example dbus-send to
-+start an application, e.g. : dbus-send --session   \
-+--dest='org.tichy.launcher' /Launcher --print-reply \
-+org.tichy.Launcher.Launch string:Contacts
-+
-+Note for neo : We need to remember to set DISPLAY=:0 even when we call
-+the dbus method !
-+"""
-+
-+#import time
-+
-+#print time.ctime()
-+
-+import os
-+import sys
-+import dbus
-+import dbus.service
-+from optparse import OptionParser
-+import logging
-+#import profile
-+#print time.ctime()
-+
-+# This is to make sure that we use the local tichy lib if run from the
-+# test directory
-+sys.path.insert(0, '../paroli-core/')
-+sys.path.insert(0, '../paroli-graphics-backend/')
-+
-+#def profiling():
-+import tichy
-+
-+#profile.run('profiling()','mirko.txt')
-+
-+#print time.ctime()
-+
-+logger = logging.getLogger('')
-+
-+
-+def parse_options():
-+    """Parse the command line options
-+
-+    :Returns: the OptionParser result object
-+    """
-+    parser = OptionParser()
-+    parser.add_option("", "--experimental",
-+                      action='store_true', dest="experimental",
-+                      help="Use experimental features",
-+                      default=False)
-+    parser.add_option("", "--session",
-+                      action='store_const', dest='bus',
-+                      help="Connect to the session bus",
-+                      const='session', default='system')
-+    parser.add_option("", "--launch", dest='launch',
-+                      help="launch an applet using DBus",
-+                      metavar="APPLICATION",
-+                      default=None)
-+    parser.add_option("", "--cfgfile", dest="cfg_file",
-+                      help="specigy the configuration file to use",
-+                      metavar="FILE", default=None)
-+    parser.add_option("", "--show-services", dest='show_services',
-+                      action='store_true', default=False,
-+                      help="print some info about the services and exit")
-+
-+    (options, args) = parser.parse_args()
-+    return options
-+
-+
-+def setup_logging():
-+    """Set up two logging handlers, one in the log file, one in the
-+    stdoutput"""
-+    logging.basicConfig(
-+        level=logging.DEBUG,
-+        format='%(asctime)s %(name)-8s %(levelname)-8s %(message)s',
-+        filename='/tmp/paroli.log', filemode='w')
-+
-+    formatter = logging.Formatter(
-+        '%(filename)s %(lineno)d %(name)-8s %(levelname)-8s %(message)s')
-+    stream_log = logging.StreamHandler()
-+    stream_log.setFormatter(formatter)
-+    stream_log.setLevel(logging.INFO)
-+    logger.addHandler(stream_log)
-+
-+
-+class InitAll(tichy.Tasklet):
-+    """Perform all basic initialization of services"""
-+
-+    def run(self):
-+
-+        storage_service = tichy.Service('TeleCom')
-+        #print "storage in p-launcher"
-+        yield storage_service.init()
-+
-+        # Register on the GSM Network
-+        gsm_service = tichy.Service('GSM')
-+        yield gsm_service.init()
-+        # Set SIM info
-+        gsm_sim = tichy.Service('SIM')
-+        yield gsm_sim.set_info()
-+        # Get all the contacts
-+        contacts = tichy.Service('Contacts')
-+        yield contacts.init()
-+        messages_service = tichy.Service('Messages')
-+        yield messages_service.init()
-+
-+        caller_service = tichy.Service('TeleCaller')
-+        yield caller_service.init()
-+
-+        audio_service = tichy.Service('Audio')
-+        yield audio_service.init()
-+
-+        # Finally we can start to listen for incoming calls
-+        logger.info("start AutoAnswerCall")
-+        yield AutoAnswerCall()
-+
-+
-+class AutoAnswerCall(tichy.Tasklet):
-+
-+    def run(self):
-+        # We don't create any window, just run in the background...
-+        # warning; that would only work with gtk or etk backend...
-+        gsm_service = tichy.Service('GSM')
-+        while True:
-+            call = yield tichy.Wait(gsm_service, 'incoming-call')
-+            logger.info("got incoming call")
-+            caller_service = tichy.Service('TeleCaller')
-+            yield caller_service.call("None", call)
-+
-+
-+class Launcher(dbus.service.Object):
-+    """Launch applets via DBus call
-+
-+    example, to launch the Contacts application, using dbus-send :
-+      dbus-send --system --dest='org.tichy' /Launcher --print-reply \
-+      org.tichy.Launcher.Launch string:Contacts
-+    """
-+
-+    def __init__(self, *args, **kargs):
-+        super(Launcher, self).__init__(*args, **kargs)
-+        self.screen = None
-+        logger.info("registered applications :")
-+        for app in tichy.Application.subclasses:
-+            if app.name:
-+                logger.info("- %s", app.name)
-+
-+    @dbus.service.method("org.tichy.Launcher", "s")
-+    def Launch(self, name):
-+        """Launch a registered tichy application by name"""
-+        logger.info("launch %s", name)
-+        for app in tichy.Application.subclasses:
-+            if app.name == name:
-+                self.launch(app).start()
-+                break
-+        else:
-+            logger.error("no application named  %s", name)
-+
-+    @tichy.tasklet.tasklet
-+    def launch(self, app):
-+        """Actually launch the application"""
-+        kill_on_close = False
-+        if not self.screen:
-+            self.screen = self.create_screen()
-+            kill_on_close = False
-+        try:
-+            yield app(None)
-+        except Exception, ex:
-+            logger.error("application %s failed : %s", app.name, ex)
-+            import traceback
-+            logger.error(traceback.format_exc())
-+        if kill_on_close:
-+            self.screen.destroy()
-+            self.screen = None
-+
-+    def create_screen(self):
-+        #window = tichy.gui.Window(480,580)
-+        #window.show()
-+        window = None
-+        return window
-+
-+    @dbus.service.method("org.tichy.Launcher")
-+    def Quit(self):
-+        """Quit tichy"""
-+        logger.info("quit mainloop")
-+        tichy.mainloop.quit()
-+
-+
-+def launch(name, options):
-+    """Use dbus to call the launcher"""
-+    if options.bus == 'system':
-+        bus = dbus.SystemBus()
-+    else:
-+        bus = dbus.SessionBus()
-+    launcher = bus.get_object('org.tichy.launcher', '/Launcher')
-+    launcher = dbus.Interface(launcher, 'org.tichy.Launcher')
-+    launcher.Launch(options.launch)
-+
-+
-+if __name__ == '__main__':
-+    options = parse_options()
-+
-+    if options.launch:
-+        launch(options.launch, options)
-+        sys.exit(0)
-+
-+    setup_logging()
-+    tichy.config.parse(cfg_file=options.cfg_file)
-+
-+    # We import all the modules into the plugin directory
-+    default_plugins_path = '/usr/share/tichy/plugins'
-+    plugins_dir = tichy.config.get('plugins', 'path', default_plugins_path)
-+    plugins_dirs = plugins_dir.split(':')
-+    for plugins_dir in plugins_dirs:
-+        print plugins_dir
-+        try:
-+            logger.info("try to load plugins in %s", plugins_dir)
-+            tichy.plugins.import_all(plugins_dir)
-+        except IOError:
-+            logger.info("failed to load plugins in %s", plugins_dir)
-+
-+    # Set all the default services
-+    defaults = tichy.config.get('services', 'defaults', None)
-+    if defaults:
-+        defaults = defaults.split(',')
-+        for default in defaults:
-+            if not default:
-+                continue
-+            service, name = default.strip().split(':')
-+            logger.info("set service %s to %s", service, name)
-+            tichy.Service.set_default(service, name)
-+
-+    if options.show_services:
-+        from tichy.service import print_infos
-+        print_infos()
-+        sys.exit(0)
-+    if tichy.config.getboolean('dbus','activated', False):
-+        logger.info("connect to dbus")
-+        if options.bus == 'system':
-+            bus = dbus.SystemBus(mainloop=tichy.mainloop.dbus_loop)
-+        else:
-+            bus = dbus.SessionBus(mainloop=tichy.mainloop.dbus_loop)
-+        bus_name = dbus.service.BusName('org.tichy.launcher', bus)
-+
-+        logger.info("start launcher service")
-+        launcher = Launcher(bus, '/Launcher')
-+
-+    logger.info("start InitAll")
-+    InitAll().start()
-+
-+    app_name = tichy.config.get('autolaunch', 'application', None)
-+    if app_name:
-+        standalone = tichy.config.getboolean('standalone', 'activated', False)
-+        for app in tichy.Application.subclasses:
-+            if app.name == app_name:
-+                app("None", standalone=standalone).start()
-+
-+
-+    logger.info("starting mainloop")
-+    tichy.mainloop.run()
-+    logger.info("quit")
-diff -ruN paroli.orig/paroli-scripts/paroli-launcher paroli/paroli-scripts/paroli-launcher
---- paroli.orig/paroli-scripts/paroli-launcher 2009-02-11 02:30:43.000000000 +0100
-+++ paroli/paroli-scripts/paroli-launcher      1970-01-01 01:00:00.000000000 +0100
-@@ -1,286 +0,0 @@
--#!/usr/bin/python
--#
--#    Paroli
--#
--#    copyright 2008  Openmoko
--#    Guillaume Chereau (charlie@openmoko.org)
--#
--#    This file is part of Paroli.
--#
--#    Paroli 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 3 of the License, or
--#    (at your option) any later version.
--#
--#    Paroli 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 Paroli.  If not, see <http://www.gnu.org/licenses/>.
--
--"""DBus launcher paroli main script
--
--This script will load all the plugins, then start a DBus server
--listening that we can use to start any application.
--
--It is still experimental.
--
--To use it, start it (./launcher.py), then use for example dbus-send to
--start an application, e.g. : dbus-send --session   \
----dest='org.tichy.launcher' /Launcher --print-reply \
--org.tichy.Launcher.Launch string:Contacts
--
--Note for neo : We need to remember to set DISPLAY=:0 even when we call
--the dbus method !
--"""
--
--#import time
--
--#print time.ctime()
--
--import os
--import sys
--import dbus
--import dbus.service
--from optparse import OptionParser
--import logging
--#import profile
--#print time.ctime()
--
--# This is to make sure that we use the local tichy lib if run from the
--# test directory
--sys.path.insert(0, '../paroli-core/')
--sys.path.insert(0, '../paroli-graphics-backend/')
--
--#def profiling():
--import tichy
--
--#profile.run('profiling()','mirko.txt')
--
--#print time.ctime()
--
--logger = logging.getLogger('')
--
--
--def parse_options():
--    """Parse the command line options
--
--    :Returns: the OptionParser result object
--    """
--    parser = OptionParser()
--    parser.add_option("", "--experimental",
--                      action='store_true', dest="experimental",
--                      help="Use experimental features",
--                      default=False)
--    parser.add_option("", "--session",
--                      action='store_const', dest='bus',
--                      help="Connect to the session bus",
--                      const='session', default='system')
--    parser.add_option("", "--launch", dest='launch',
--                      help="launch an applet using DBus",
--                      metavar="APPLICATION",
--                      default=None)
--    parser.add_option("", "--cfgfile", dest="cfg_file",
--                      help="specigy the configuration file to use",
--                      metavar="FILE", default=None)
--    parser.add_option("", "--show-services", dest='show_services',
--                      action='store_true', default=False,
--                      help="print some info about the services and exit")
--
--    (options, args) = parser.parse_args()
--    return options
--
--
--def setup_logging():
--    """Set up two logging handlers, one in the log file, one in the
--    stdoutput"""
--    logging.basicConfig(
--        level=logging.DEBUG,
--        format='%(asctime)s %(name)-8s %(levelname)-8s %(message)s',
--        filename='/tmp/paroli.log', filemode='w')
--
--    formatter = logging.Formatter(
--        '%(filename)s %(lineno)d %(name)-8s %(levelname)-8s %(message)s')
--    stream_log = logging.StreamHandler()
--    stream_log.setFormatter(formatter)
--    stream_log.setLevel(logging.INFO)
--    logger.addHandler(stream_log)
--
--
--class InitAll(tichy.Tasklet):
--    """Perform all basic initialization of services"""
--
--    def run(self):
--
--        storage_service = tichy.Service('TeleCom')
--        #print "storage in p-launcher"
--        yield storage_service.init()
--
--        # Register on the GSM Network
--        gsm_service = tichy.Service('GSM')
--        yield gsm_service.init()
--        # Set SIM info
--        gsm_sim = tichy.Service('SIM')
--        yield gsm_sim.set_info()
--        # Get all the contacts
--        contacts = tichy.Service('Contacts')
--        yield contacts.init()
--        messages_service = tichy.Service('Messages')
--        yield messages_service.init()
--
--        caller_service = tichy.Service('TeleCaller')
--        yield caller_service.init()
--
--        audio_service = tichy.Service('Audio')
--        yield audio_service.init()
--
--        # Finally we can start to listen for incoming calls
--        logger.info("start AutoAnswerCall")
--        yield AutoAnswerCall()
--
--
--class AutoAnswerCall(tichy.Tasklet):
--
--    def run(self):
--        # We don't create any window, just run in the background...
--        # warning; that would only work with gtk or etk backend...
--        gsm_service = tichy.Service('GSM')
--        while True:
--            call = yield tichy.Wait(gsm_service, 'incoming-call')
--            logger.info("got incoming call")
--            caller_service = tichy.Service('TeleCaller')
--            yield caller_service.call("None", call)
--
--
--class Launcher(dbus.service.Object):
--    """Launch applets via DBus call
--
--    example, to launch the Contacts application, using dbus-send :
--      dbus-send --system --dest='org.tichy' /Launcher --print-reply \
--      org.tichy.Launcher.Launch string:Contacts
--    """
--
--    def __init__(self, *args, **kargs):
--        super(Launcher, self).__init__(*args, **kargs)
--        self.screen = None
--        logger.info("registered applications :")
--        for app in tichy.Application.subclasses:
--            if app.name:
--                logger.info("- %s", app.name)
--
--    @dbus.service.method("org.tichy.Launcher", "s")
--    def Launch(self, name):
--        """Launch a registered tichy application by name"""
--        logger.info("launch %s", name)
--        for app in tichy.Application.subclasses:
--            if app.name == name:
--                self.launch(app).start()
--                break
--        else:
--            logger.error("no application named  %s", name)
--
--    @tichy.tasklet.tasklet
--    def launch(self, app):
--        """Actually launch the application"""
--        kill_on_close = False
--        if not self.screen:
--            self.screen = self.create_screen()
--            kill_on_close = False
--        try:
--            yield app(None)
--        except Exception, ex:
--            logger.error("application %s failed : %s", app.name, ex)
--            import traceback
--            logger.error(traceback.format_exc())
--        if kill_on_close:
--            self.screen.destroy()
--            self.screen = None
--
--    def create_screen(self):
--        #window = tichy.gui.Window(480,580)
--        #window.show()
--        window = None
--        return window
--
--    @dbus.service.method("org.tichy.Launcher")
--    def Quit(self):
--        """Quit tichy"""
--        logger.info("quit mainloop")
--        tichy.mainloop.quit()
--
--
--def launch(name, options):
--    """Use dbus to call the launcher"""
--    if options.bus == 'system':
--        bus = dbus.SystemBus()
--    else:
--        bus = dbus.SessionBus()
--    launcher = bus.get_object('org.tichy.launcher', '/Launcher')
--    launcher = dbus.Interface(launcher, 'org.tichy.Launcher')
--    launcher.Launch(options.launch)
--
--
--if __name__ == '__main__':
--    options = parse_options()
--
--    if options.launch:
--        launch(options.launch, options)
--        sys.exit(0)
--
--    setup_logging()
--    tichy.config.parse(cfg_file=options.cfg_file)
--
--    # We import all the modules into the plugin directory
--    default_plugins_path = '/usr/share/tichy/plugins'
--    plugins_dir = tichy.config.get('plugins', 'path', default_plugins_path)
--    plugins_dirs = plugins_dir.split(':')
--    for plugins_dir in plugins_dirs:
--        print plugins_dir
--        try:
--            logger.info("try to load plugins in %s", plugins_dir)
--            tichy.plugins.import_all(plugins_dir)
--        except IOError:
--            logger.info("failed to load plugins in %s", plugins_dir)
--
--    # Set all the default services
--    defaults = tichy.config.get('services', 'defaults', None)
--    if defaults:
--        defaults = defaults.split(',')
--        for default in defaults:
--            if not default:
--                continue
--            service, name = default.strip().split(':')
--            logger.info("set service %s to %s", service, name)
--            tichy.Service.set_default(service, name)
--
--    if options.show_services:
--        from tichy.service import print_infos
--        print_infos()
--        sys.exit(0)
--    if tichy.config.getboolean('dbus','activated', False):
--        logger.info("connect to dbus")
--        if options.bus == 'system':
--            bus = dbus.SystemBus(mainloop=tichy.mainloop.dbus_loop)
--        else:
--            bus = dbus.SessionBus(mainloop=tichy.mainloop.dbus_loop)
--        bus_name = dbus.service.BusName('org.tichy.launcher', bus)
--
--        logger.info("start launcher service")
--        launcher = Launcher(bus, '/Launcher')
--
--    logger.info("start InitAll")
--    InitAll().start()
--
--    app_name = tichy.config.get('autolaunch', 'application', None)
--    if app_name:
--        standalone = tichy.config.getboolean('standalone', 'activated', False)
--        for app in tichy.Application.subclasses:
--            if app.name == app_name:
--                app("None", standalone=standalone).start()
--
--
--    logger.info("starting mainloop")
--    tichy.mainloop.run()
--    logger.info("quit")
 diff -ruN paroli.orig/setup.py paroli/setup.py
---- paroli.orig/setup.py       2009-02-11 02:30:43.000000000 +0100
-+++ paroli/setup.py    2009-02-11 02:35:22.000000000 +0100
-@@ -84,14 +84,15 @@
-       author_email='mirko@openmoko.org',
-       package_dir = {'': 'paroli-core'},
-       packages = ['tichy', 'tichy.gui_paroli'],
--      scripts= ['paroli-scripts/paroli-launcher'],
-+      scripts= ['paroli-scripts/parolid'],
+--- paroli.orig/setup.py       2009-02-23 13:38:05.000000000 +0100
++++ paroli/setup.py    2009-02-23 22:40:23.000000000 +0100
+@@ -19,9 +19,6 @@
+ #    You should have received a copy of the GNU General Public License
+ #    along with Paroli.  If not, see <http://www.gnu.org/licenses/>.
+-# XXX: This file only work when used by OpenEmbedded.  We should fix
+-#      that !
+-
+ import sys
+ import os
+@@ -87,7 +84,10 @@
+       scripts= ['paroli-scripts/paroli-launcher'],
        # XXX: Those locations may not work on the neo !
        data_files = [('applications',
 -                     ['data/paroli-launcher.desktop',
--                      #'data/paroli-io.desktop',
--                      #'data/paroli-contacts.desktop',
--                      #'data/paroli-msgs.desktop',
--                      #'data/paroli-dialer.desktop'
 +                     ['data/parolid.desktop',
-+                      'data/paroli-i-o.desktop',
-+                      'data/paroli-contacts.desktop',
-+                      'data/paroli-msgs.desktop',
-+                      'data/paroli-dialer.desktop',
-+                      'data/tele.desktop'
-                       ]),
-                     (os.path.join(sys.prefix, 'share/pixmaps/'),
-                      ['data/tichy']),
-@@ -102,7 +103,7 @@
-       cmdclass = {'build': my_build,
-                   'clean': my_clean},
--      
-+
-       )
++                      'data/tele.desktop',
++                      'data/msgs.desktop',
++                      'data/people.desktop',
+                       #'data/paroli-io.desktop',
+                       #'data/paroli-contacts.desktop',
+                       #'data/paroli-msgs.desktop',