From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/ext/tk/sample/multi-ip_sample.rb | 103 ++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 jni/ruby/ext/tk/sample/multi-ip_sample.rb (limited to 'jni/ruby/ext/tk/sample/multi-ip_sample.rb') diff --git a/jni/ruby/ext/tk/sample/multi-ip_sample.rb b/jni/ruby/ext/tk/sample/multi-ip_sample.rb new file mode 100644 index 0000000..eccf020 --- /dev/null +++ b/jni/ruby/ext/tk/sample/multi-ip_sample.rb @@ -0,0 +1,103 @@ +#!/usr/bin/env ruby +# This script is a sample of MultiTkIp class + +require "multi-tk" + +# create slave interpreters +trusted_slave = MultiTkIp.new_slave +safe_slave1 = MultiTkIp.new_safeTk +safe_slave2 = MultiTkIp.new_safeTk('fill'=>:none, 'expand'=>false) +#safe_slave2 = MultiTkIp.new_safeTk('fill'=>:none) +#safe_slave2 = MultiTkIp.new_safeTk('expand'=>false) + +cmd = Proc.new{|txt| + ##################### + ## from TkTimer2.rb + + if TkCore::INTERP.safe? + # safeTk doesn't have permission to call 'wm' command + else + root = TkRoot.new(:title=>'timer sample') + 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 }) + +=begin + TkButton.new(:text=>'Start') { + command proc{ timer.continue unless timer.running? } + pack(:side=>:left, :fill=>:both, :expand=>true) + } + TkButton.new(:text=>'Restart') { + command proc{ timer.restart(0, proc{ label.text('0.00'); 0 }) } + pack('side'=>'right','fill'=>'both','expand'=>'yes') + } + TkButton.new(:text=>'Stop') { + command proc{ timer.stop if timer.running? } + pack('side'=>'right','fill'=>'both','expand'=>'yes') + } +=end + b_start = TkButton.new(:text=>'Start', :state=>:disabled) { + pack(:side=>:left, :fill=>:both, :expand=>true) + } + + b_stop = TkButton.new(:text=>'Stop', :state=>:normal) { + pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes') + } + + b_start.command { + timer.continue + b_stop.state(:normal) + b_start.state(:disabled) + } + + b_stop.command { + timer.stop + b_start.state(:normal) + b_stop.state(:disabled) + } + + TkButton.new(:text=>'Reset', :state=>:normal) { + command { timer.reset } + 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') # label -> .w00012 +safe_slave1.eval_proc(cmd, 'safe1') # label -> .w00016 +safe_slave2.eval_proc(cmd, 'safe2') # label -> .w00020 +cmd.call('master') # label -> .w00024 + +#second_master = MultiTkIp.new(&cmd) +#second_master = MultiTkIp.new(:safe=>2){p [:second_master, $SAFE]} + +TkTimer.new(2000, -1, proc{p ['safe1', safe_slave1.deleted?]}).start +TkTimer.new(2000, -1, proc{p ['safe2', safe_slave2.deleted?]}).start +TkTimer.new(2000, -1, proc{p ['trusted', trusted_slave.deleted?]}).start + +TkTimer.new(5000, 1, + proc{ + safe_slave1.eval_proc{Tk.root.destroy} + safe_slave1.delete + print "*** The safe_slave1 is deleted by the timer.\n" + }).start + +TkTimer.new(10000, 1, + proc{ + trusted_slave.eval_proc{Tk.root.destroy} + trusted_slave.delete + print "*** The trusted_slave is deleted by the timer.\n" + }).start + +Tk.mainloop -- cgit v1.2.3