#!/usr/bin/env python

import sys
import traceback

import gobject

import dbus
import dbus.decorators
import dbus.mainloop.glib

def handle_error(e):
    print str(e)

def signal_handler(*args, **kwargs):
    print ("Caught signal " + kwargs['dbus_interface'] + "." + kwargs['member'])
    for arg in args:
        print "        " + str(arg)

if __name__ == '__main__':

    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    try:
        object = bus.get_object("org.freedesktop.Gypsy","/org/freedesktop/Gypsy")
        object.connect_to_signal("PositionChanged", signal_handler, interface_keyword='dbus_interface', member_keyword='member')

    except dbus.DBusException:
        traceback.print_exc()
        sys.exit(1)

    loop = gobject.MainLoop()

    print("Setup complete, entering wait loop.")
    loop.run()

