RemoteTkIp support on Ruby/Tk

Hi,

I committed the library to remote-control Ruby/Tk interpreters
on the other proesses. The library is one of the application of
MultiTkIp class, and is constructed from Tcl/Tk’s ‘send’ command.

Please don’t ask me how to make ‘send’ command available on

your environment. :wink: Please see the FAQ of Tcl/Tk.

“New Tcl/Tk 8.5 Features” on the Tcl/Tk web site says

···
* send officially supported on Windows

So, you may be able to test the library on Windows with Tcl/Tk8.5a1
(I don’t test it on Windows).

The library ‘remote-tk.rb’ includes RemoteTkIp class.
Please see the following sample script.
It depends on its context that ‘TkButton.new()’ creates a button
widget on which Ruby/Tk interpreter.

require ‘remote-tk’

start sub-process

ip_name = ‘remote_ip’
ip_list = TkWinfo.interps
fork{
exec "/usr/bin/env ruby -r tk -e "Tk.appname(’#{ip_name}’);Tk.mainloop""
}
sleep 1 until (app = (TkWinfo.interps - ip_list)[0]) && app =~ /^#{ip_name}/
p TkWinfo.interps

create RemoteTkIp object

ip = RemoteTkIp.new(app)

setup remote-ip window

btns = []
ip.eval_proc{
btns <<
TkButton.new(:command=>proc{
puts ‘This procesure is on the controller-ip (Ruby-side)’
},
:text=>‘print on controller-ip (Ruby-side)’).pack(:fill=>:x)

btns <<
TkButton.new(:command=>
‘puts {This procesure is on the remote-ip (Tk-side)}’,
:text=>‘print on remote-ip (Tk-side)’).pack(:fill=>:x)

btns <<
TkButton.new(:command=>‘ruby {
puts "This procedure is on the remote-ip (Ruby-side)"
p Array.new(3,“ruby”)
}’,
:text=>‘ruby cmd on the remote-ip’).pack(:fill=>:x)

TkButton.new(:command=>‘exit’, :text=>‘QUIT’).pack(:fill=>:x)
}

setup controller-ip window

btns.each_with_index{|b, idx|
TkButton.new(:command=>proc{ip.eval_proc{b.flash}},
:text=>“flash button-#{idx}”,
:padx=>10).pack(:padx=>10, :pady=>2)
}

TkButton.new(:command=>proc{exit}, :text=>‘QUIT’,
:padx=>10, :pady=>7).pack(:padx=>10, :pady=>7)

start eventloop

Tk.mainloop

If you are interested in the library, please get the latest sources
from CVS (1.8.x or 1.9.x) and try it.
Comments and bug reports are welcome.

                              Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)