H
Hidetoshi NAGAI
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 ([email protected])
============================================
#!/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.newtitle=>'timer sample')
rescue
# safeTk doesn't have permission to call 'wm' command
end
label = TkLabel.newparent=>root, :relief=>:raised, :width=>10) \
.packside=>: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.newtext=>'Start') {
command proc{ timer.continue unless timer.running? }
packside=>:left, :fill=>:both, :expand=>true)
}
TkButton.newtext=>'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
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 ([email protected])
============================================
#!/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.newtitle=>'timer sample')
rescue
# safeTk doesn't have permission to call 'wm' command
end
label = TkLabel.newparent=>root, :relief=>:raised, :width=>10) \
.packside=>: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.newtext=>'Start') {
command proc{ timer.continue unless timer.running? }
packside=>:left, :fill=>:both, :expand=>true)
}
TkButton.newtext=>'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