#!bas REM ************************************************************* REM REM Demonstration with GTK-server and BAS 1.9 from Michael Haardt REM http://www.moria.de/~michael/bas/ REM REM Created and tested on Slackware Linux 10 REM Peter van Eerten, september 7 2004 - www.gtk-server.org REM REM Adjusted for GTK-server 1.2 at October 8, 2004 by PvE. REM Adjusted for GTK-server 1.3 at December 6, 2004 by PvE. REM Revised for GTK-server 2.0.6 at december 17, 2005 REM Works with BAS 1.9 - december 26, 2005 REM REM REM The newer versions of BAS cannot read PIPE files anymore. REM Michael was unwilling to change it back to the 1.7 situation, unfortunately. REM Hence the ugly workaround below using SHELL. Sometimes it crashes. FUNCTION GTK$ (mystr$) SHELL "echo " + CHR$(34) + mystr$ + CHR$(34) + " > /tmp/demo.bas" SHELL "cat /tmp/demo.bas > /tmp/demo.txt" OPEN "/tmp/demo.txt" FOR INPUT AS #1 LINE INPUT #1, tmp$ CLOSE #1 GTK$ = tmp$ END FUNCTION REM **************************************************** Main REM Start GTK-server SHELL "gtk-server -fifo=/tmp/demo.bas -detach" REM Setup GUI GTK$("gtk_init NULL NULL") win$ = GTK$("gtk_window_new 0") GTK$("gtk_window_set_title " + win$ + " " + CHR$(92) + CHR$(34) + "DEMO program BASIC 1.9" + CHR$(92) + CHR$(34)) GTK$("gtk_widget_set_usize " + win$ + " 450 400") table$ = GTK$("gtk_table_new 50 50 1") GTK$("gtk_container_add " + win$ + " " + table$) button$ = GTK$("gtk_button_new_with_label Exit") GTK$("gtk_table_attach_defaults " + table$ + " " + button$ + " 41 49 45 49") entry$ = GTK$("gtk_entry_new") GTK$("gtk_table_attach_defaults " + table$ + " " + entry$ + " 1 40 45 49") txt$ = GTK$("gtk_text_new NULL NULL") GTK$("gtk_table_attach_defaults " + table$ + " " + txt$ + " 1 49 8 44") radio1$ = GTK$("gtk_radio_button_new_with_label_from_widget NULL Yes") GTK$("gtk_table_attach_defaults " + table$ + " " + radio1$ + " 1 10 1 4") radio2$ = GTK$("gtk_radio_button_new_with_label_from_widget " + radio1$ + " No") GTK$("gtk_table_attach_defaults " + table$ + " " + radio2$ + " 1 10 4 7") GTK$("gtk_widget_show_all " + win$) GTK$("gtk_widget_grab_focus " + entry$) REM Mainloop REPEAT event$ = GTK$("gtk_server_callback WAIT") IF (event$ = entry$) THEN tmp$ = GTK$("gtk_entry_get_text " + entry$) GTK$("gtk_text_insert " + txt$ + " NULL NULL NULL " + CHR$(92) + CHR$(34)+ tmp$ + CHR$(92) + CHR$(34) + " -1") REM Empty entry field GTK$("gtk_editable_delete_text " + entry$ + " 0 -1") END IF UNTIL (event$ = button$ OR event$ = win$) REM Exit GTK GTK$("gtk_server_exit")