From 6175ca03be6d0d51359f9017123708987d0f5eb7 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 15 Aug 2007 23:23:39 +0000 Subject: add tag v1_8_5_91 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_91@13046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby_1_8_5/ext/tk/sample/tkrttimer.rb | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 ruby_1_8_5/ext/tk/sample/tkrttimer.rb (limited to 'ruby_1_8_5/ext/tk/sample/tkrttimer.rb') diff --git a/ruby_1_8_5/ext/tk/sample/tkrttimer.rb b/ruby_1_8_5/ext/tk/sample/tkrttimer.rb new file mode 100644 index 0000000000..531f4a8d5a --- /dev/null +++ b/ruby_1_8_5/ext/tk/sample/tkrttimer.rb @@ -0,0 +1,68 @@ +#!/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(:text=>'Interval setting of each timer is 10 ms.', + :padx=>10, :pady=>5).pack + +# define the procedure repeated by the TkTimer object +tick = proc{|aobj| #<== TkTimer object + cnt = aobj.return_value + 1 # return_value keeps a result of the last proc + label = aobj.current_args[0] + label.text format("%d.%02d", *(cnt.divmod(100))) + cnt #==> 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