1
0
Fork 0
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:
matz 2000-06-13 09:57:40 +00:00
parent 9ee0cafbfe
commit 00bd38a3b1
2 changed files with 173 additions and 14 deletions

View file

@ -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

View file

@ -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