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/tkrttimer.rb | 77 +++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 jni/ruby/ext/tk/sample/tkrttimer.rb (limited to 'jni/ruby/ext/tk/sample/tkrttimer.rb') diff --git a/jni/ruby/ext/tk/sample/tkrttimer.rb b/jni/ruby/ext/tk/sample/tkrttimer.rb new file mode 100644 index 0000000..1f9cbd9 --- /dev/null +++ b/jni/ruby/ext/tk/sample/tkrttimer.rb @@ -0,0 +1,77 @@ +#!/usr/bin/env ruby +# This script is a re-implementation of tktimer.rb with TkTimer(TkAfter) class. + +require "tk" + +root = TkRoot.new(:title=>'realtime timer sample') + +f1 = TkFrame.new(:borderwidth=>2, :relief=>:ridge) +f1.pack(:side=>:bottom, :fill=>:both) +TkLabel.new(f1, :text=>'use TkTimer (TkAfter) class').pack(:anchor=>:center) +label1 = TkLabel.new(:parent=>f1, :relief=>:raised, + :width=>10).pack(:fill=>:both) + +f2 = TkFrame.new(:borderwidth=>2, :relief=>:ridge) +f2.pack(:side=>:bottom, :fill=>:both) +TkLabel.new(f2, :text=>'use TkRTTimer class').pack +label2 = TkLabel.new(:parent=>f2, :relief=>:raised, + :width=>10).pack(:fill=>:both) + +TkLabel.new(:padx=>10, :pady=>5, :justify=>'left', :text=>< return value is kept by TkTimer object + # (so, can be send to the next repeat-proc) +} + +timer1 = TkTimer.new(10, -1, [tick, label1]) # 10 ms interval +timer2 = TkRTTimer.new(10, -1, [tick, label2]) # 10 ms interval + +timer1.start(0, proc{ label1.text('0.00'); 0 }) +timer2.start(0, proc{ label2.text('0.00'); 0 }) + +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 { + timer1.continue + timer2.continue + b_stop.state(:normal) + b_start.state(:disabled) +} + +b_stop.command { + timer1.stop + timer2.stop + b_start.state(:normal) + b_stop.state(:disabled) +} + +TkButton.new(:text=>'Reset', :state=>:normal) { + command { timer1.reset; timer2.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 + +Tk.mainloop -- cgit v1.2.3