diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:54 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:54 +0000 |
commit | 4c4631c2daaf7b2418c1f0e39292c8ee27a64813 (patch) | |
tree | dfeb96c4772df8caba4e01e749c8f3e1262f8fe0 /ext/tk/sample/bindtag_sample.rb | |
parent | ce23680755e4e9ab0eed9dc6adb091ef7f1c58cb (diff) | |
download | ruby-4c4631c2daaf7b2418c1f0e39292c8ee27a64813.tar.gz |
* renewal Ruby/Tk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/sample/bindtag_sample.rb')
-rw-r--r-- | ext/tk/sample/bindtag_sample.rb | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/ext/tk/sample/bindtag_sample.rb b/ext/tk/sample/bindtag_sample.rb new file mode 100644 index 0000000000..caf7a2d750 --- /dev/null +++ b/ext/tk/sample/bindtag_sample.rb @@ -0,0 +1,127 @@ +#!/usr/bin/env ruby +require 'tk' + +TkLabel.new(:text=><<EOT, :justify=>:left).pack +This is a sample of bindtags and usage of +Tk.callback_break/Tk.callback_continue. +Please check the work of following buttons +(attend the difference between before/after + pressing the bottom button), and see the +source code. +EOT + +def set_class_bind + TkButton.bind('ButtonPress-1', + proc{puts 'bind "ButtonPress-1" of TkButton class'}) + TkButton.bind('ButtonRelease-1', + proc{puts 'bind "ButtonRelease-1" of TkButton class'}) +end + +# set root binding +r = TkRoot.new +r.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of root widget'}) +r.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of root widget'}) + +# set 'all' binding +TkBindTag::ALL.bind('ButtonPress-1', + proc{puts 'bind "ButtonPress-1" of the tag "all"'}) +TkBindTag::ALL.bind('ButtonRelease-1', + proc{puts 'bind "ButtonRelease-1" of the tag "all"'}) + +# create buttons +b1 = TkButton.new(:text=>'button-1', + :command=>proc{puts "command of button-1"}).pack +b2 = TkButton.new(:text=>'button-2', + :command=>proc{puts "command of button-2"}).pack +b3 = TkButton.new(:text=>'button-3', + :command=>proc{puts "command of button-3"}).pack +b4 = TkButton.new(:text=>'button-4', + :command=>proc{puts "command of button-4"}).pack +b5 = TkButton.new(:text=>'button-5', + :command=>proc{puts "command of button-5"}).pack + +# set button binding +b1.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of button-1'}) +b1.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-1'}) + +b2.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of button-2'}) +b2.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-2'}) + +b3.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of button-3'}) +b3.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-3'}) + +b4.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of button-4'}) +b4.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-4'}) + +b5.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of button-5'}) +b5.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-5'}) + +# create bindtag and set binding +tag1 = TkBindTag.new +tag1.bind('ButtonPress-1', proc{puts 'bind "ButtonPress-1" of tag1'}) +tag1.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of tag1'}) + +tag2 = TkBindTag.new +tag2.bind('ButtonPress-1', + proc{ + puts 'bind "ButtonPress-1" of tag2' + puts 'call Tk.callback_continue' + Tk.callback_continue + puts 'never see this message' + }) +tag2.bind('ButtonRelease-1', + proc{ + puts 'bind "ButtonRelease-1" of tag2' + puts 'call Tk.callback_continue' + Tk.callback_continue + puts 'never see this message' + }) + +tag3 = TkBindTag.new +tag3.bind('ButtonPress-1', + proc{ + puts 'bind "ButtonPress-1" of tag3' + puts 'call Tk.callback_break' + Tk.callback_break + puts 'never see this message' + }) +tag3.bind('ButtonRelease-1', + proc{ + puts 'bind "ButtonRelease-1" of tag3' + puts 'call Tk.callback_break' + Tk.callback_break + puts 'never see this message' + }) + +# set bindtags +p b1.bindtags + +tags = b2.bindtags +tags[2,0] = tag1 +tags[0,0] = tag1 +b2.bindtags(tags) +p b2.bindtags + +tags = b3.bindtags +tags[2,0] = tag2 +tags[0,0] = tag2 +b3.bindtags(tags) +p b3.bindtags + +tags = b4.bindtags +tags[2,0] = tag3 +tags[0,0] = tag3 +b4.bindtags(tags) +p b4.bindtags + +b5.bindtags([tag1, TkButton, tag2, b5]) + +# create button to set button class binding +TkButton.new(:text=>'set binding to TkButton class', + :command=>proc{ + puts 'call "set_class_bind"' + set_class_bind + }).pack(:pady=>7) + +# start event-loop +Tk.mainloop |