#!/usr/bin/rexx /*------------------------------------------------------------- Demoprogram for Rexx with the GTK-server using named pipes Tested with Zenwalk Linux 4.2 using Regina 3.3 Created at july 17, 2004 - PvE. Revised for GTK-server 2.0.6 at december 17, 2005 -------------------------------------------------------------*/ /* Start the GTK-server */ ADDRESS SYSTEM('gtk-server -fifo=/tmp/rexx.gtk -detach') /* Setup GUI */ CALL GTK('gtk_init NULL NULL') win = GTK('gtk_window_new 0') CALL GTK('gtk_window_set_title' win '\"Rexx Demo Program\"') CALL GTK('gtk_widget_set_usize' win '450 400') table = GTK('gtk_table_new 50 50 1') CALL GTK('gtk_container_add' win table) button = GTK('gtk_button_new_with_label Exit') CALL GTK('gtk_table_attach_defaults' table button '41 49 45 49') entry = GTK('gtk_entry_new') CALL GTK('gtk_table_attach_defaults' table entry '1 40 45 49') txt = GTK('gtk_text_new NULL NULL') CALL GTK('gtk_table_attach_defaults' table txt '1 49 8 44') radio1 = GTK('gtk_radio_button_new_with_label_from_widget NULL Yes') CALL GTK('gtk_table_attach_defaults' table radio1 '1 10 1 3') radio2 = GTK('gtk_radio_button_new_with_label_from_widget' radio1 'No') CALL GTK('gtk_table_attach_defaults' table radio2 '1 10 4 7') CALL GTK('gtk_widget_show_all' win) CALL GTK('gtk_widget_grab_focus' entry) event = '0' /* Mainloop */ DO UNTIL event = button | event = win event = GTK('gtk_server_callback wait') IF event = entry THEN DO tmp = GTK('gtk_entry_get_text' entry) CALL GTK('gtk_text_insert' txt 'NULL NULL NULL \"'tmp'\n\" -1') /* Empty entry field */ CALL GTK('gtk_editable_delete_text' entry '0 -1') END END CALL GTK('gtk_server_exit') EXIT(0) /*-------------------------------------------------------------*/ /* This is the communication function */ GTK: PROCEDURE PARSE ARG str /* Pass to pipe file */ command = 'echo "'str'" > /tmp/rexx.gtk' ADDRESS SYSTEM command /* Retrieve result */ ADDRESS SYSTEM 'cat /tmp/rexx.gtk' WITH OUTPUT FIFO '' PULL res /* Return value */ RETURN res /*-------------------------------------------------------------*/