#!./basic REM REM GTK-server demo with Chipmunk BASIC 3.6.4 for Linux REM REM PvE Juy 26, 2008. Tested with GTK-server 2.2.5. REM REM Communication function sub gtk$ (args$) open "/tmp/chip" for output as #1 print #1, args$ close #1 open "/tmp/chip" for input as #1 input #1, response$ close #1 gtk$ = response$ end sub REM Start GTK-server in FIFO mode sys("gtk-server -fifo=/tmp/chip -detach") REM *** Main program gtk$ ("gtk_init NULL NULL") win$ = gtk$ ("gtk_window_new 0") gtk$ ("gtk_window_set_title " + win$ + " 'DEMO program Chipmunk Basic'") gtk$ ("gtk_widget_set_size_request " + 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 while 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 '" + tmp$ + "\n' -1") gtk$ ("gtk_editable_delete_text " + entry$ + " 0 -1") ENDIF wend event$ = button$ OR event$ = win$ REM Exit GTK gtk$ ("gtk_server_exit") REM Exit interpreter exit