= 4.1.0) on Linux and Windows platforms. * * 2004 by Roberto Rossi - http://rsoftware.altervista.org * * Run with PHP. Start with 'PHP demo.php'. * Changed for GTK-server 1.3 at December 6, 2004 - PvE. *********************************************************************/ error_reporting(E_ALL); if (!extension_loaded("sockets")) dl('php_sockets.' . (strstr(PHP_OS, "WIN") ? "dll" : "so")); //Send/Receive Message To/From Gtk Server function Gtk_Msg($sock, $msg) { socket_write($sock, $msg, strlen($msg)); return socket_read($sock, 20); } $service_port = 50000; //comunication port $address = "127.0.0.1"; //localhost pclose(popen('start /b gtk-server.exe -tcp='.$address.':'.$service_port, 'r')); echo("Connection \n"); /* Create socket*/ $socket = socket_create(AF_INET, SOCK_STREAM, 0); if ($socket < 0) { exit('socket_create() failed: '.socket_strerror($socket)."\n"); } else { echo("Ok.\n"); } echo "Connection to '$address' on port '$service_port'..."; $result = socket_connect ($socket, $address, $service_port); if (!$result) { exit("socket_connect() failed: ($result) " . socket_strerror($result) . "\n"); socket_close ($socket); } else { echo "Ok.\n"; } $tmp = ''; Gtk_Msg($socket,"gtk_init NULL NULL"); //window creation $win = Gtk_Msg($socket,"gtk_window_new 0"); Gtk_Msg($socket,"gtk_window_set_title ".$win." PHP-Demo"); Gtk_Msg($socket,"gtk_widget_set_usize ".$win." 450 400)"); //table creation $table = Gtk_Msg($socket,"gtk_table_new 3 3 1"); Gtk_Msg($socket,"gtk_container_add ".$win.",".$table); //button creation $button=Gtk_Msg($socket,"gtk_button_new_with_label Exit"); Gtk_Msg($socket,"gtk_table_attach_defaults ".$table." ".$button." 41 49 45 49"); //entry creation $entry=Gtk_Msg($socket,"gtk_entry_new"); Gtk_Msg($socket,"gtk_table_attach_defaults ".$table." ".$entry." 1 40 45 49"); //text creation $text=Gtk_Msg($socket,"gtk_text_new NULL NULL"); Gtk_Msg($socket,"gtk_table_attach_defaults ".$table." ".$text." 1 49 8 44"); //radio creation $radio1=Gtk_Msg($socket,"gtk_radio_button_new_with_label_from_widget NULL Yes"); Gtk_Msg($socket,"gtk_table_attach_defaults ".$table." ".$radio1." 1 10 1 3"); $radio2=Gtk_Msg($socket,"gtk_radio_button_new_with_label_from_widget ".$radio1." No"); Gtk_Msg($socket,"gtk_table_attach_defaults ".$table." ".$radio2." 1 10 4 7"); //Show All Object Gtk_Msg($socket,"gtk_widget_show_all ".$win); do { $event=Gtk_Msg($socket,"gtk_main_iteration WAIT"); if ($event==$entry) { $tmp=Gtk_Msg($socket,"gtk_entry_get_text ".$entry); Gtk_Msg($socket,"gtk_text_insert ".$text." NULL NULL NULL ".$tmp." -1"); Gtk_Msg($socket,"gtk_editable_delete_text ".$entry." 0 -1"); } } while (($event!=$win) && ($event!=$button)); echo "Closing socket..."; socket_close ($socket); echo "End.\n\n"; ?>