;------------------------------------------------ ; ; Demonstration on how to use the GTK-server with NEWLISP by FIFO. ; Tested with newLISP 8.0.9 compiled with MinGW on WindowsXP. ; ; July 17, 2004 by Peter van Eerten. ; Revised for GTK-server 1.2 at October 10, 2004 ; Revised for GTK-server 1.3 at December 5, 2004 ; Revised for GTK-server 2.3.1 and newLisp10 at January 4, 2009 ;------------------------------------------------ ; Define communication function (define (gtk str) (write-buffer pipeout str) (read-buffer pipein 'tmp 128) tmp) ; Start the gtk-server (process "gtk-server fifo") (sleep 1500) ; Connect to the GTK-server (set 'pipeout (open {\\.\pipe\out} "w")) (sleep 100) (set 'pipein (open {\\.\pipe\in} "r")) (sleep 100) ; Setup GUI (gtk "gtk_init NULL NULL") (set 'win (gtk "gtk_window_new 0")) (gtk (append "gtk_window_set_title " win " \"This is a title\"")) (gtk (append "gtk_window_set_default_size " win " 100 100")) (gtk (append "gtk_window_set_position " win " 1")) (set 'table (gtk "gtk_table_new 30 30 1")) (gtk (append "gtk_container_add " win " " table)) (set 'button1 (gtk "gtk_button_new_with_label Exit")) (gtk (append "gtk_table_attach_defaults " table " " button1 " 17 28 20 25")) (set 'button2 (gtk "gtk_button_new_with_label \"Print text\"")) (gtk (append "gtk_table_attach_defaults " table " " button2 " 2 13 20 25")) (set 'entry (gtk "gtk_entry_new")) (gtk (append "gtk_table_attach_defaults " table " " entry " 2 28 5 15")) (gtk (append "gtk_widget_show_all " win)) (gtk (append "gtk_widget_grab_focus " entry)) ; Initialize (set 'event 0) ; This is the mainloop (while (!= event button1) (set 'event (gtk "gtk_server_callback wait")) (when (or (= event button2) (= event entry)) (set 'tmp (gtk (append "gtk_entry_get_text " entry))) (println tmp) (gtk (append "gtk_editable_delete_text " entry " 0 -1")) (gtk (append "gtk_widget_grab_focus " entry)) ) ) (write-buffer pipeout "gtk_server_exit") (exit)