コード例 #1
0
def main():
    # Explicitly set dbus main loop.
    DBusGMainLoop(set_as_default=True)

    # Wake up the settings manager dbus service.
    try:
        settings_bus = SessionBus().get_object('org.gnome.SettingsDaemon',
                                               '/org/gnome/SettingsDaemon')
    except DBusException as e:
        dialog = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT,
                                   gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE,
                                   GSM_NOT_FOUND_MESSAGE)
        dialog.run()
        dialog.destroy()
        return
    try:
        settings_bus.Awake(dbus_interface='org.gnome.SettingsDaemon')
    except DBusException as e:
        # May not always be wakeable. That's Ok.
        pass

    # Create server.
    factory = BroadcastServerFactory('ws://localhost:1337')
    listenWS(factory)

    # Start twisted.
    reactor.startRunning()

    # Create the tray icon. Must keep reference to prevent GC.
    icon = createTrayIcon()

    #Run GTK loop.
    gtk.main()

    # Kill twisted if it's still alive.
    if reactor.running:
        reactor.stop()