8 import dbus.mainloop.glib
14 sys.stderr.write(" ".join(map(str, args)) + "\n")
16 sys.stderr.write(" ".join(map(str, args)) + "\n")
18 class Parser(optparse.OptionParser):
19 def __init__(self, *args, **kwargs):
20 # Yes, in 2009 optparse from the *standard library* still uses old
22 optparse.OptionParser.__init__(self, *args, **kwargs)
25 sys.stderr.write("%s: error: %s\n\n" % (self.get_prog_name(), msg))
26 self.print_help(sys.stderr)
29 parser = Parser(usage="usage: %prog [options]",
30 version="%prog "+ VERSION,
31 description="Simple interactive interface for the OpenMoko")
32 parser.add_option("-v", "--verbose", action="store_true", help="verbose mode")
34 (opts, args) = parser.parse_args()
42 info("Loading configuration")
43 conf = zavai.read_config(nick="zavai")
46 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
49 registry = zavai.Registry()
51 # Register main factories
52 registry.register("conf", lambda *args, **kw: conf)
53 registry.register("app", zavai.Zavai)
54 registry.register("menu", zavai.Menu)
57 info("Loading plugins")
58 for p in zavai.load_plugins(nick="zavai"):
60 p.init(conf = conf, registry = registry)
62 print >>sys.stderr, "Exception caught loading plugin %s: skipping plugin" % p
63 print >>sys.stderr, "Exception details:"
65 details = traceback.format_exc()
66 print >>sys.stderr, "\t"+details.rstrip().replace("\n", "\n\t")
68 # Shutdown the main loop on SIGINT
69 def on_kill(signum, frame):
71 signal.signal(signal.SIGINT, on_kill)
72 signal.signal(signal.SIGTERM, on_kill)
75 app = registry.resource("app")
76 app.connect("destroy", gtk.main_quit)