(typedef GtkObject* (cptr GtkObject)) (typedef GtkWidget* (cptr GtkWidget)) (typedef GtkWidget* (cptr GtkWidget)) (typedef GtkWindowType (enum GtkWindowType GTK_WINDOW_TOPLEVEL GTK_WINDOW_POPUP)) (with-dyn-lib "libgtk-x11-2.0.so.0" (deffi gtk_init "gtk_init" void ((ptr int) (ptr (ptr (zarray str))))) (deffi gtk_window_new "gtk_window_new" GtkWidget* (GtkWindowType)) (deffi gtk_signal_connect_full "gtk_signal_connect_full" ulong (GtkObject* str closure closure val closure int int)) (deffi gtk_widget_show "gtk_widget_show" void (GtkWidget*)) (deffi gtk_main "gtk_main" void ()) (deffi-sym gtk_main_quit "gtk_main_quit")) (defmacro GTK_OBJECT (cptr) ^(cptr-cast 'GtkObject ,cptr)) (defmacro gtk_signal_connect (object name func func-data) ^(gtk_signal_connect_full ,object ,name ,func cptr-null ,func-data cptr-null 0 0)) (gtk_init (length *args*) (vec-list *args*)) (let ((window (gtk_window_new 'GTK_WINDOW_TOPLEVEL))) (gtk_signal_connect (GTK_OBJECT window) "destroy" gtk_main_quit nil) (gtk_widget_show window) (gtk_main))