import sys import pygtk pygtk.require('2.0') import gtk try: from _gdk_xcursor import gdkwindow_set_xcursor as set_xcursor except ImportError: print >> sys.stderr, "libXcursor not supported. Falling back to X cursors." # Stolen from mozilla's widget/src/gtk2/nsGtkCursors.h spin_bits = '\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x0c' + \ '\x00\x00\x00\x1c\x00\x00\x00\x3c\x00\x00\x00\x7c\x00' + \ '\x00\x00\xfc\x00\x00\x00\xfc\x01\x00\x00\xfc\x3b\x00' + \ '\x00\x7c\x38\x00\x00\x6c\x54\x00\x00\xc4\xdc\x00\x00' + \ '\xc0\x44\x00\x00\x80\x39\x00\x00\x80\x39\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' mask_bits = '\x00\x00\x00\x00\x06\x00\x00\x00\x0e\x00\x00\x00\x1e' + \ '\x00\x00\x00\x3e\x00\x00\x00\x7e\x00\x00\x00\xfe\x00' + \ '\x00\x00\xfe\x01\x00\x00\xfe\x3b\x00\x00\xfe\x7f\x00' + \ '\x00\xfe\x7f\x00\x00\xfe\xfe\x00\x00\xee\xff\x01\x00' + \ '\xe4\xff\x00\x00\xc0\x7f\x00\x00\xc0\x7f\x00\x00\x80' + \ '\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + \ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' left_ptr_watch = None def set_xcursor(window, cursor): "dummy set_xcursor for systems without libXcursor support" if window: if cursor == 'left_ptr_watch': if not left_ptr_watch: spin = gtk.gdk.bitmap_create_from_data(window, spin_bits, 32, 32) mask = gtk.gdk.bitmap_create_from_data(window, mask_bits, 32, 32) fg = gtk.gdk.color_parse("black") bg = gtk.gdk.color_parse("white") left_ptr_watch = gtk.gdk.Cursor(spin, mask, fg, bg, 2, 2) cursor = left_ptr_watch else: cursor = gtk.gdk.Cursor(getattr(gtk.gdk, str(cursor).upper(), 0)) gtk.gdk.Window.set_cursor(GdkWindow, cursor) gtk.gdk.set_xcursor = set_xcursor