#!/usr/local/bin/csi -script ; Demo created by Felix Winkelmann - April 7, 2005 ; Tested with GTK 1.3.3 and the CHICKEN Scheme compiler (use posix) (define-values (*gtk-in* *gtk-out* _) (process "gtk-server -stdin")) (sleep 1) (define (gtk . str) (write-line (string-intersperse str " ") *gtk-out*) (read-line *gtk-in*) ) (gtk "gtk_init NULL NULL") (define win (gtk "gtk_window_new 0")) (pp win) (gtk "gtk_window_set_title" win "\"Scheme GTK-server demo via stdin\"") (gtk "gtk_window_set_default_size" win "400 200") (gtk "gtk_window_set_position" win "1") (define tbl (gtk "gtk_table_new 10 10 1")) (gtk "gtk_container_add " win tbl) (define but (gtk "gtk_button_new_with_label \"Click to Quit\"")) (gtk "gtk_table_attach_defaults" tbl but "5 9 5 9") (gtk "gtk_widget_show_all" win) (let loop () (let ([event (gtk "gtk_server_callback WAIT")]) (pp event) (unless (member event (list win but)) (loop) ) ) ) (write-line "gtk_server_exit" *gtk-out*) (close-input-port *gtk-in*) (close-output-port *gtk-out*)