#!/usr/bin/env python

import gtk
gdk = gtk.gdk

class MainWindow(gtk.Window):
    def __init__(self):
        gtk.Window.__init__(self)

        self.set_title('Tablet Test')

        da = gtk.DrawingArea()
        self.w, self.h = 800, 800
        da.set_size_request(self.w, self.h)

        self.add(da)

        # Event signals
        da.connect("motion_notify_event", self.motion_notify_cb)

        da.set_events(gdk.EXPOSURE_MASK
                      | gdk.LEAVE_NOTIFY_MASK
                      | gdk.BUTTON_PRESS_MASK
                      | gdk.BUTTON_RELEASE_MASK
                      | gdk.POINTER_MOTION_MASK
                      #| gdk.POINTER_MOTION_HINT_MASK
                      | gdk.PROXIMITY_IN_MASK
                      | gdk.PROXIMITY_OUT_MASK
                      )

        da.set_extension_events(gdk.EXTENSION_EVENTS_ALL)

    def motion_notify_cb(self, widget, event):
        z = event.get_axis(gdk.AXIS_PRESSURE)
        print 'x=%f, y=%f, z=%s' % (event.x, event.y, z)



def init_input():
    "make those pressure sensitive devices working"
    pressure_devices = []
    for device in gdk.devices_list():
        if device.source in [gdk.SOURCE_PEN, gdk.SOURCE_ERASER]:
            pressure_devices.append(device)
    if pressure_devices:
        print 'Setting "screen mode" for pressure_sensitive devices:'
        for device in pressure_devices:
            print device.name
            device.set_mode(gdk.MODE_SCREEN)
    else:
        print 'No pressure sensitive devices found.'

if __name__ == "__main__":
    init_input()

    w = MainWindow()
    w.show_all()

    gtk.main()
