#!/usr/bin/python import sys import signal import optparse import gtk import dbus import dbus.mainloop.glib import zavai VERSION="0.1" def warning(*args): sys.stderr.write(" ".join(map(str, args)) + "\n") def info(*args): sys.stderr.write(" ".join(map(str, args)) + "\n") class Parser(optparse.OptionParser): def __init__(self, *args, **kwargs): # Yes, in 2009 optparse from the *standard library* still uses old # style classes optparse.OptionParser.__init__(self, *args, **kwargs) def error(self, msg): sys.stderr.write("%s: error: %s\n\n" % (self.get_prog_name(), msg)) self.print_help(sys.stderr) sys.exit(2) parser = Parser(usage="usage: %prog [options]", version="%prog "+ VERSION, description="Simple interactive interface for the OpenMoko") parser.add_option("-v", "--verbose", action="store_true", help="verbose mode") (opts, args) = parser.parse_args() if not opts.verbose: def info(*args): pass # Read configuration info("Loading configuration") conf = zavai.read_config(nick="zavai") # Set up dbus dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) # Set up zavai registry = zavai.Registry() # Register main factories registry.register("conf", lambda *args, **kw: conf) registry.register("app", zavai.Zavai) registry.register("menu", zavai.Menu) # Load plugins info("Loading plugins") for p in zavai.load_plugins(nick="zavai"): try: p.init(conf = conf, registry = registry) except Exception, e: print >>sys.stderr, "Exception caught loading plugin %s: skipping plugin" % p print >>sys.stderr, "Exception details:" import traceback details = traceback.format_exc() print >>sys.stderr, "\t"+details.rstrip().replace("\n", "\n\t") # Shutdown the main loop on SIGINT def on_kill(signum, frame): gtk.main_quit() signal.signal(signal.SIGINT, on_kill) signal.signal(signal.SIGTERM, on_kill) info("Starting") app = registry.resource("app") app.connect("destroy", gtk.main_quit) app.run() info("Shutting down") registry.shutdown() sys.exit(0)