mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
bc8b42fc1e
* add Tk::Encoding.{encoding_convertfrom, encoding_convertto} * add TkOptionDB.read_with_encoding to read non-utf8 resource file git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
84 lines
2.4 KiB
Ruby
84 lines
2.4 KiB
Ruby
#!/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 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
|
|
|
|
# '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], 2) {
|
|
# 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?} : "
|
|
str
|
|
end
|
|
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)
|
|
}
|
|
pack(:fill=>:x, :padx=>10, :pady=>10)
|
|
}
|
|
TkButton.new(:command=>proc{print "($SAFE=#{$SAFE}) : "; cmd.bye_msg; 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)
|
|
}
|
|
pack(:fill=>:x, :padx=>10, :pady=>10)
|
|
}
|
|
TkButton.new(:command=>proc{print "($SAFE=#{$SAFE}) : "; cmd.bye_msg; 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)
|
|
}
|
|
pack(:fill=>:x, :padx=>10, :pady=>10)
|
|
}
|
|
TkButton.new(:command=>proc{print "($SAFE=#{$SAFE}) : "; cmd.bye_msg; exit},
|
|
:parent=>f, :widgetname=>'quit'){
|
|
pack(:fill=>:x, :padx=>10, :pady=>10)
|
|
}
|
|
}
|
|
|
|
Tk.mainloop
|