mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
tk font patch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9ee0cafbfe
commit
00bd38a3b1
2 changed files with 173 additions and 14 deletions
|
@ -593,6 +593,36 @@ module Tk
|
|||
tk_tcl2ruby(tk_call('focus', '-lastfor', win))
|
||||
end
|
||||
|
||||
def Tk.show_kinsoku(mode='both')
|
||||
begin
|
||||
if /^8\.*/ === TK_VERSION && JAPANIZED_TK
|
||||
tk_split_simplelist(tk_call('kinsoku', 'show', mode))
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
def Tk.add_kinsoku(chars, mode='both')
|
||||
begin
|
||||
if /^8\.*/ === TK_VERSION && JAPANIZED_TK
|
||||
tk_split_simplelist(tk_call('kinsoku', 'add', mode,
|
||||
*(chars.split(''))))
|
||||
else
|
||||
[]
|
||||
end
|
||||
rescue
|
||||
[]
|
||||
end
|
||||
end
|
||||
def Tk.delete_kinsoku(chars, mode='both')
|
||||
begin
|
||||
if /^8\.*/ === TK_VERSION && JAPANIZED_TK
|
||||
tk_split_simplelist(tk_call('kinsoku', 'delete', mode,
|
||||
*(chars.split(''))))
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
||||
def toUTF8(str,encoding)
|
||||
INTERP._toUTF8(str,encoding)
|
||||
end
|
||||
|
@ -1184,6 +1214,73 @@ module TkKinput
|
|||
end
|
||||
end
|
||||
|
||||
module TkXIM
|
||||
include Tk
|
||||
extend Tk
|
||||
|
||||
def TkXIM.useinputmethods(window=nil, value=nil)
|
||||
if window
|
||||
if value
|
||||
tk_call 'tk', 'useinputmethods', '-displayof', window.path, value
|
||||
else
|
||||
tk_call 'tk', 'useinputmethods', '-displayof', window.path
|
||||
end
|
||||
else
|
||||
if value
|
||||
tk_call 'tk', 'useinputmethods', value
|
||||
else
|
||||
tk_call 'tk', 'useinputmethods'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def TkXIM.configure(window, slot, value=None)
|
||||
begin
|
||||
if /^8\.*/ === Tk::TK_VERSION && JAPANIZED_TK
|
||||
if slot.kind_of? Hash
|
||||
tk_call 'imconfigure', window.path, *hash_kv(slot)
|
||||
else
|
||||
tk_call 'imconfigure', window.path, "-#{slot}", value
|
||||
end
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
||||
def TkXIM.configinfo(window, slot=nil)
|
||||
begin
|
||||
if /^8\.*/ === Tk::TK_VERSION && JAPANIZED_TK
|
||||
if slot
|
||||
conf = tk_split_list(tk_call('imconfigure', window.path, "-#{slot}"))
|
||||
conf[0] = conf[0][1..-1]
|
||||
conf
|
||||
else
|
||||
tk_split_list(tk_call('imconfigure', window.path)).collect{|conf|
|
||||
conf[0] = conf[0][1..-1]
|
||||
conf
|
||||
}
|
||||
end
|
||||
else
|
||||
[]
|
||||
end
|
||||
rescue
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def useinputmethods(value=nil)
|
||||
TkXIM.useinputmethods(self, value=nil)
|
||||
end
|
||||
|
||||
def imconfigure(window, slot, value=None)
|
||||
TkXIM.configinfo(window, slot, value)
|
||||
end
|
||||
|
||||
def imconfiginfo(slot=nil)
|
||||
TkXIM.configinfo(window, slot)
|
||||
end
|
||||
end
|
||||
|
||||
module TkXIM
|
||||
include Tk
|
||||
extend Tk
|
||||
|
|
|
@ -13,8 +13,42 @@ class TkFont
|
|||
Tk_FontNameTBL = {}
|
||||
Tk_FontUseTBL = {}
|
||||
|
||||
case Tk::TK_VERSION
|
||||
when /^4\.*/
|
||||
DEFAULT_LATIN_FONT_NAME = 'a14'.freeze
|
||||
DEFAULT_KANJI_FONT_NAME = 'k14'.freeze
|
||||
when /^8\.*/
|
||||
if JAPANIZED_TK
|
||||
begin
|
||||
fontnames = tk_call('font', 'names')
|
||||
case fontnames
|
||||
when /defaultgui/
|
||||
# Tcl/Tk-JP for Windows
|
||||
ltn = 'defaultgui'
|
||||
knj = 'defaultgui'
|
||||
when /Mincho:Helvetica-12/
|
||||
# Tcl/Tk-JP for UNIX/X
|
||||
ltn, knj = tk_split_simplelist(tk_call('font', 'configure',
|
||||
'Mincho:Helvetica-12',
|
||||
'-compound'))
|
||||
else
|
||||
# unknown Tcl/Tk-JP
|
||||
ltn = 'Helvetica'
|
||||
knj = 'mincho'
|
||||
end
|
||||
rescue
|
||||
ltn = 'Helvetica'
|
||||
knj = 'mincho'
|
||||
end
|
||||
DEFAULT_LATIN_FONT_NAME = ltn.freeze
|
||||
DEFAULT_KANJI_FONT_NAME = knj.freeze
|
||||
else
|
||||
DEFAULT_LATIN_FONT_NAME = 'Helvetica'.freeze
|
||||
DEFAULT_KANJI_FONT_NAME = 'mincho'.freeze
|
||||
end
|
||||
end
|
||||
p "default latin font = #{DEFAULT_LATIN_FONT_NAME}" if $DEBUG
|
||||
p "default kanji font = #{DEFAULT_KANJI_FONT_NAME}" if $DEBUG
|
||||
|
||||
###################################
|
||||
# class methods
|
||||
|
@ -48,9 +82,10 @@ class TkFont
|
|||
end
|
||||
|
||||
def TkFont.create_copy(font)
|
||||
fail 'source-font need to be TkFont' unless font.kind_of? TkFont
|
||||
keys = {}
|
||||
font.configinfo.each{|key,value| keys[key] = value }
|
||||
new_font = TkFont.new(font.latin_font, font.kanji_font, keys)
|
||||
TkFont.new(font.latin_font, font.kanji_font, keys)
|
||||
end
|
||||
|
||||
def TkFont.get_obj(name)
|
||||
|
@ -120,6 +155,15 @@ class TkFont
|
|||
end
|
||||
end
|
||||
|
||||
def TkFont.failsafe(font)
|
||||
begin
|
||||
if /^8\.*/ === Tk::TK_VERSION && JAPANIZED_TK
|
||||
tk_call('font', 'failsafe', font)
|
||||
end
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
||||
###################################
|
||||
private
|
||||
###################################
|
||||
|
@ -191,7 +235,11 @@ class TkFont
|
|||
@latinfont = font.latin_font
|
||||
|
||||
else
|
||||
if font
|
||||
@latinfont = font
|
||||
else
|
||||
@latinfont = DEFAULT_LATIN_FONT_NAME
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -237,7 +285,11 @@ class TkFont
|
|||
elsif font.kind_of? TkFont
|
||||
@kanjifont = font.kanji_font
|
||||
else
|
||||
if font
|
||||
@kanjifont = font
|
||||
else
|
||||
@kanjifont = DEFAULT_KANJI_FONT_NAME
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -256,13 +308,22 @@ class TkFont
|
|||
|
||||
if JAPANIZED_TK
|
||||
if font.kind_of? Hash
|
||||
if font['charset']
|
||||
tk_call('font', 'create', @latinfont, *hash_kv(font))
|
||||
else
|
||||
tk_call('font', 'create', @latinfont,
|
||||
'-charset', 'iso8859', *hash_kv(font))
|
||||
end
|
||||
elsif font.kind_of? Array
|
||||
tk_call('font', 'create', @latinfont, '-copy', array2tk_list(font))
|
||||
tk_call('font', 'configure', @latinfont, '-charset', 'iso8859')
|
||||
elsif font.kind_of? TkFont
|
||||
tk_call('font', 'create', @latinfont, '-copy', font.latin_font)
|
||||
elsif font
|
||||
tk_call('font', 'create', @latinfont, '-copy', font,
|
||||
'-charset', 'iso8859')
|
||||
else
|
||||
tk_call('font', 'create', @latinfont, '-copy', font)
|
||||
tk_call('font', 'create', @latinfont, '-charset', 'iso8859')
|
||||
end
|
||||
else
|
||||
if font.kind_of? Hash
|
||||
|
@ -273,7 +334,7 @@ class TkFont
|
|||
actual_core(array2tk_list(font)).each{|key,val| keys[key] = val}
|
||||
elsif font.kind_of? TkFont
|
||||
actual_core(font.latin_font).each{|key,val| keys[key] = val}
|
||||
else
|
||||
elsif font
|
||||
actual_core(font).each{|key,val| keys[key] = val}
|
||||
end
|
||||
tk_call('font', 'create', @latinfont, *hash_kv(keys))
|
||||
|
@ -299,12 +360,13 @@ class TkFont
|
|||
elsif font.kind_of? Array
|
||||
tk_call('font', 'create', @kanjifont, '-copy', array2tk_list(font))
|
||||
tk_call('font', 'configure', @kanjifont, '-charset', 'jisx0208.1983')
|
||||
|
||||
elsif font.kind_of? TkFont
|
||||
tk_call('font', 'create', @kanjifont, '-copy', font.kanji_font)
|
||||
else
|
||||
elsif font
|
||||
tk_call('font', 'create', @kanjifont, '-copy', font,
|
||||
'-charset', 'jisx0208.1983')
|
||||
else
|
||||
tk_call('font', 'create', @kanjifont, '-charset', 'jisx0208.1983')
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -319,7 +381,7 @@ class TkFont
|
|||
actual_core(array2tk_list(font)).each{|key,val| keys[key] = val}
|
||||
elsif font.kind_of? TkFont
|
||||
actual_core(font.kanji_font).each{|key,val| keys[key] = val}
|
||||
else
|
||||
elsif font
|
||||
actual_core(font).each{|key,val| keys[key] = val}
|
||||
end
|
||||
tk_call('font', 'create', @kanjifont, *hash_kv(keys))
|
||||
|
@ -399,9 +461,9 @@ class TkFont
|
|||
""
|
||||
elsif option
|
||||
if window
|
||||
tk_call('font', 'actual', font, "-#{option}")
|
||||
else
|
||||
tk_call('font', 'actual', font, "-displayof", window, "-#{option}")
|
||||
else
|
||||
tk_call('font', 'actual', font, "-#{option}")
|
||||
end
|
||||
else
|
||||
l = tk_split_simplelist(if window
|
||||
|
@ -663,7 +725,7 @@ class TkFont
|
|||
alias measure_core measure_core_tk8x
|
||||
alias metrics_core metrics_core_tk8x
|
||||
|
||||
when /^8\.[12]/
|
||||
when /^8\.[123]/
|
||||
alias create_latinfont create_latinfont_tk8x
|
||||
alias create_kanjifont create_kanjifont_tk81
|
||||
alias create_compoundfont create_compoundfont_tk81
|
||||
|
|
Loading…
Reference in a new issue