diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 19:08:43 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 19:08:43 +0000 |
commit | d464704f111d211c1f1ff9ef23ef1d755054be00 (patch) | |
tree | b58b17b645dc463322e5fca57fe282360db659c9 /ruby_1_8_5/ext/tk/sample/tkoptdb.rb | |
parent | e4f06b3f2dec4b5d6334c5e9907e1cecbf649fc4 (diff) |
add tag v1_8_5_54
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_54@12952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_5/ext/tk/sample/tkoptdb.rb')
-rw-r--r-- | ruby_1_8_5/ext/tk/sample/tkoptdb.rb | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/ruby_1_8_5/ext/tk/sample/tkoptdb.rb b/ruby_1_8_5/ext/tk/sample/tkoptdb.rb new file mode 100644 index 0000000000..47784ea238 --- /dev/null +++ b/ruby_1_8_5/ext/tk/sample/tkoptdb.rb @@ -0,0 +1,106 @@ +#!/usr/bin/env ruby +# +# sample script of TkOptionDB +# +# If 'LANG' environment variable's value is started by 'ja', +# then read Japanese resource data and display Japanese button text. +# In other case, read English resource data and display English text. +# +require "tk" + +if __FILE__ == $0 || !TkCore::INTERP.safe? + if ENV['LANG'] =~ /^ja/ + # read Japanese resource + TkOptionDB.read_with_encoding(File.expand_path('resource.ja', + File.dirname(__FILE__)), + 'euc-jp') + else + # read English resource + TkOptionDB.readfile(File.expand_path('resource.en', + File.dirname(__FILE__))) + end +end + +# 'show_msg' and 'bye_msg' procedures can be defined on BTN_CMD resource. +# Those procedures are called under $SAFE==2 +cmd = TkOptionDB.new_proc_class(:BTN_CMD, [:show_msg, :bye_msg], 3) { + # If you want to check resource string (str), + # please define __check_proc_string__(str) like this. + class << self + def __check_proc_string__(str) + print "($SAFE=#{$SAFE} >>>) check!! str.tainted?::#{str.tainted?}" + str.untaint + print "==>#{str.tainted?} (<<< $SAFE=#{$SAFE}): " + str + end + private :__check_proc_string__ + end +} + +# following two frame widgets use same database entry +TkFrame.new(:class=>'BtnFrame'){|f| + pack(:padx=>5, :pady=>5) + TkButton.new(:parent=>f, :widgetname=>'hello'){ + command proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.show_msg(TkOptionDB.inspect) + print "(<<< $SAFE=#{$SAFE})" + } + pack(:fill=>:x, :padx=>10, :pady=>10) + } + TkButton.new(:command=>proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.bye_msg + print "(<<< $SAFE=#{$SAFE} ) : " + exit + }, + :parent=>f, :widgetname=>'quit'){ + pack(:fill=>:x, :padx=>10, :pady=>10) + } +} + +class BtnFrame < TkFrame; end +BtnFrame.new{|f| + pack(:padx=>5, :pady=>5) + TkButton.new(:parent=>f, :widgetname=>'hello'){ + command proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.show_msg(TkOptionDB.inspect) + print "(<<< $SAFE=#{$SAFE})" + } + pack(:fill=>:x, :padx=>10, :pady=>10) + } + TkButton.new(:command=>proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.bye_msg + print "(<<< $SAFE=#{$SAFE})" + exit + }, + :parent=>f, :widgetname=>'quit'){ + pack(:fill=>:x, :padx=>10, :pady=>10) + } +} + +# if unknown class, use default option values +TkFrame.new(:class=>'BtnFrame2'){|f| + pack(:padx=>5, :pady=>5) + TkButton.new(:parent=>f, :widgetname=>'hello'){ + command proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.show_msg(TkOptionDB.inspect) + print "(<<< $SAFE=#{$SAFE})" + } + pack(:fill=>:x, :padx=>10, :pady=>10) + } + TkButton.new(:command=>proc{ + print "($SAFE=#{$SAFE} >>>) : " + cmd.bye_msg + print "(<<< $SAFE=#{$SAFE})" + exit + }, + :parent=>f, :widgetname=>'quit'){ + pack(:fill=>:x, :padx=>10, :pady=>10) + } +} + +Tk.mainloop |