#!/usr/local/bin/ruby # # Ruby demo by Mark Janssen # # Adapted for GTK-server 1.3 at Feb 28, 2005 - PvE. # #----------------------------------------------------- require 'socket' module GTK $server_socket = nil $widget_list = [] def init IO.popen("gtk-server -tcp=localhost:50000 -detach") sleep(1) $server_socket = TCPSocket.open("localhost",50000) GTK.cmd("gtk_init NULL NULL") end def shutdown puts "Closing connection to gtk-server" $server_socket.close end def cmd(str) $server_socket.write(str + "\n") $server_socket.readline end def run event = 0 while (event != $widget_list[0]) event = cmd("gtk_server_callback wait") end end class Window @title = nil @handle = nil def initialize a = cmd("gtk_window_new 0") $widget_list << a @handle = a.to_i @title = "Window" title = "Window #{@handle}" puts "New window with handle #{@handle}" if $DEBUG @title = @title + " (handle: #{@handle})" end cmd("gtk_window_set_title #{@handle} #{@title}") super end def show cmd("gtk_widget_show #{@handle}") end end end if __FILE__ == $0 include GTK init w1 = Window.new w1.show run shutdown end