mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* bug fix : wrong resource file format (resource.{en,jp})
* 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
This commit is contained in:
parent
75362fbd47
commit
bc8b42fc1e
5 changed files with 72 additions and 12 deletions
|
@ -1155,8 +1155,6 @@ class MultiTkIp
|
||||||
# from tkencoding.rb by ttate@jaist.ac.jp
|
# from tkencoding.rb by ttate@jaist.ac.jp
|
||||||
alias __eval _eval
|
alias __eval _eval
|
||||||
alias __invoke _invoke
|
alias __invoke _invoke
|
||||||
private :__eval
|
|
||||||
private :__invoke
|
|
||||||
|
|
||||||
def encoding
|
def encoding
|
||||||
@encoding[0]
|
@encoding[0]
|
||||||
|
|
|
@ -1509,8 +1509,6 @@ if /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
|
||||||
# from tkencoding.rb by ttate@jaist.ac.jp
|
# from tkencoding.rb by ttate@jaist.ac.jp
|
||||||
alias __eval _eval
|
alias __eval _eval
|
||||||
alias __invoke _invoke
|
alias __invoke _invoke
|
||||||
private :__eval
|
|
||||||
private :__invoke
|
|
||||||
|
|
||||||
attr_accessor :encoding
|
attr_accessor :encoding
|
||||||
|
|
||||||
|
@ -1521,7 +1519,7 @@ if /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
|
||||||
__eval(cmd)
|
__eval(cmd)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def _invoke(*cmds)
|
def _invoke(*cmds)
|
||||||
if defined? @encoding
|
if defined? @encoding
|
||||||
cmds = cmds.collect{|cmd| _toUTF8(cmd, @encoding)}
|
cmds = cmds.collect{|cmd| _toUTF8(cmd, @encoding)}
|
||||||
|
@ -1557,6 +1555,16 @@ if /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
|
||||||
def encoding_system=(enc)
|
def encoding_system=(enc)
|
||||||
tk_call('encoding', 'system', enc)
|
tk_call('encoding', 'system', enc)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def encoding_convertfrom(str, enc=None)
|
||||||
|
TkCore::INTERP.__invoke('encoding', 'convertfrom', enc, str)
|
||||||
|
end
|
||||||
|
alias encoding_convert_from encoding_convertfrom
|
||||||
|
|
||||||
|
def encoding_convertto(str, enc=None)
|
||||||
|
TkCore::INTERP.__invoke('encoding', 'convertto', enc, str)
|
||||||
|
end
|
||||||
|
alias encoding_convert_to encoding_convertto
|
||||||
end
|
end
|
||||||
|
|
||||||
extend Encoding
|
extend Encoding
|
||||||
|
@ -1580,6 +1588,11 @@ if /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
|
||||||
|
|
||||||
else
|
else
|
||||||
# dummy methods
|
# dummy methods
|
||||||
|
class TclTkIp
|
||||||
|
alias __eval _eval
|
||||||
|
alias __invoke _invoke
|
||||||
|
end
|
||||||
|
|
||||||
module Tk
|
module Tk
|
||||||
module Encoding
|
module Encoding
|
||||||
extend Encoding
|
extend Encoding
|
||||||
|
@ -1599,6 +1612,16 @@ else
|
||||||
def encoding_system=(enc)
|
def encoding_system=(enc)
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def encoding_convertfrom(str, enc=None)
|
||||||
|
str
|
||||||
|
end
|
||||||
|
alias encoding_convert_from encoding_convertfrom
|
||||||
|
|
||||||
|
def encoding_convertto(str, enc=None)
|
||||||
|
str
|
||||||
|
end
|
||||||
|
alias encoding_convert_to encoding_convertto
|
||||||
end
|
end
|
||||||
|
|
||||||
extend Encoding
|
extend Encoding
|
||||||
|
@ -2848,6 +2871,43 @@ module TkOptionDB
|
||||||
tk_call 'option', 'readfile', file, pri
|
tk_call 'option', 'readfile', file, pri
|
||||||
end
|
end
|
||||||
module_function :add, :clear, :get, :readfile
|
module_function :add, :clear, :get, :readfile
|
||||||
|
|
||||||
|
def read_with_encoding(file, f_enc=nil, pri=None)
|
||||||
|
i_enc = Tk.encoding()
|
||||||
|
|
||||||
|
unless f_enc
|
||||||
|
f_enc = i_enc
|
||||||
|
end
|
||||||
|
|
||||||
|
cline = ''
|
||||||
|
open(file, 'r') {|f|
|
||||||
|
while line = f.gets
|
||||||
|
cline += line.chomp!
|
||||||
|
case cline
|
||||||
|
when /\\$/ # continue
|
||||||
|
cline.chop!
|
||||||
|
next
|
||||||
|
when /^!/ # coment
|
||||||
|
cline = ''
|
||||||
|
next
|
||||||
|
when /^([^:]+):\s(.*)$/
|
||||||
|
pat = $1
|
||||||
|
val = $2
|
||||||
|
p "ResourceDB: #{[pat, val].inspect}" if $DEBUG
|
||||||
|
pat = TkCore::INTERP._toUTF8(pat, f_enc)
|
||||||
|
pat = TkCore::INTERP._fromUTF8(pat, i_enc)
|
||||||
|
val = TkCore::INTERP._toUTF8(val, f_enc)
|
||||||
|
val = TkCore::INTERP._fromUTF8(val, i_enc)
|
||||||
|
add(pat, val, pri)
|
||||||
|
cline = ''
|
||||||
|
else # unknown --> ignore
|
||||||
|
cline = ''
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end
|
||||||
|
module_function :read_with_encoding
|
||||||
|
|
||||||
# support procs on the resource database
|
# support procs on the resource database
|
||||||
@@resource_proc_class = Class.new
|
@@resource_proc_class = Class.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
!
|
||||||
# see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
|
! see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
|
||||||
#
|
!
|
||||||
*BtnFrame.borderWidth: 5
|
*BtnFrame.borderWidth: 5
|
||||||
*BtnFrame.relief: ridge
|
*BtnFrame.relief: ridge
|
||||||
*BtnFrame.Button.background: wheat
|
*BtnFrame.Button.background: wheat
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
!
|
||||||
# see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
|
! see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
|
||||||
#
|
!
|
||||||
*BtnFrame.borderWidth: 5
|
*BtnFrame.borderWidth: 5
|
||||||
*BtnFrame.relief: ridge
|
*BtnFrame.relief: ridge
|
||||||
*BtnFrame.Button.background: wheat
|
*BtnFrame.Button.background: wheat
|
||||||
|
|
|
@ -10,7 +10,9 @@ require "tk"
|
||||||
|
|
||||||
if ENV['LANG'] =~ /^ja/
|
if ENV['LANG'] =~ /^ja/
|
||||||
# read Japanese resource
|
# read Japanese resource
|
||||||
TkOptionDB.readfile(File.expand_path('resource.ja', File.dirname(__FILE__)))
|
TkOptionDB.read_with_encoding(File.expand_path('resource.ja',
|
||||||
|
File.dirname(__FILE__)),
|
||||||
|
'euc-jp')
|
||||||
else
|
else
|
||||||
# read English resource
|
# read English resource
|
||||||
TkOptionDB.readfile(File.expand_path('resource.en', File.dirname(__FILE__)))
|
TkOptionDB.readfile(File.expand_path('resource.en', File.dirname(__FILE__)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue