From: Hidetoshi NAGAI Date: 2003-07-28T05:40:25+09:00 Subject: [ANN] multiple Tk interpreter support Hi, I added the features to support multiple Tk interpreters. It will be inluded in the next preview release (preview5) of Ruby 1.8.0. Probably, it is useful to treat safeTk interpreters. No need new notation to control some interpreters. The following script is a sample of multi-tk.rb. In the sample, I use only one proc object to control 3 interpreters; one default master, one normal-slave and one safeTk. No need interpreter option for each method. Could you try it? Bug reports are welcome. -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) ============================================ #!/usr/bin/env ruby # This script is a sample of MultiTkIp class require "multi-tk" # create slave interpreters trusted_slave = MultiTkIp.new_slave safe_slave = MultiTkIp.new_safeTk cmd = Proc.new{|txt| ##################### ## from TkTimer2.rb begin root = TkRoot.new(:title=>'timer sample') rescue # safeTk doesn't have permission to call 'wm' command end label = TkLabel.new(:parent=>root, :relief=>:raised, :width=>10) \ .pack(:side=>:bottom, :fill=>:both) tick = proc{|aobj| cnt = aobj.return_value + 5 label.text format("%d.%02d", *(cnt.divmod(100))) cnt } timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 }) TkButton.new(:text=>'Start') { command proc{ timer.continue unless timer.running? } pack(:side=>:left, :fill=>:both, :expand=>true) } TkButton.new(:text=>'Stop') { command proc{ timer.stop if timer.running? } pack('side'=>'right','fill'=>'both','expand'=>'yes') } ev_quit = TkVirtualEvent.new('Control-c', 'Control-q') Tk.root.bind(ev_quit, proc{Tk.exit}).focus } # call on the default master interpreter trusted_slave.eval_proc(cmd, 'trusted') safe_slave.eval_proc(cmd, 'safe') cmd.call('master') Tk.mainloop