# File tk/lib/tk/text.rb, line 306
def self.at(x, y)
Tk::Text::IndexString.at(x, y)
end
# File tk/lib/tk/text.rb, line 262
def self.new(*args, &block)
obj = super(*args){}
obj.init_instance_variable
if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
obj.instance_exec(obj, &block) if defined? yield
else
obj.instance_eval(&block) if defined? yield
end
obj
end
# File tk/lib/tk/text.rb, line 278
def __destroy_hook__
TkTextTag::TTagID_TBL.mutex.synchronize{
TkTextTag::TTagID_TBL.delete(@path)
}
TkTextTag::TMarkID_TBL.mutex.synchronize{
TkTextMark::TMarkID_TBL.delete(@path)
}
end
# File tk/lib/tk/text.rb, line 340
def _addcmd(cmd)
@cmdtbl.push cmd
end
# File tk/lib/tk/text.rb, line 344
def _addtag(name, obj)
@tags[name] = obj
end
# File tk/lib/tk/text.rb, line 310
def at(x, y)
Tk::Text::IndexString.at(x, y)
end
# File tk/lib/tk/text.rb, line 620
def backspace
self.delete 'insert'
end
# File tk/lib/tk/text.rb, line 624
def bbox(index)
list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
end
# File tk/lib/tk/text.rb, line 334
def clear
tk_send_without_enc('delete', "1.0", 'end')
self
end
# File tk/lib/tk/text.rb, line 628
def compare(idx1, op, idx2)
bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1),
op, _get_eval_enc_str(idx2)))
end
# File tk/lib/tk/text.rb, line 633
def count(idx1, idx2, *opts)
# opts are Tk8.5 feature
cnt = 0
args = opts.collect{|opt|
str = opt.to_s
cnt += 1 if str != 'update'
'-' + str
}
args << _get_eval_enc_str(idx1) << _get_eval_enc_str(idx2)
if cnt <= 1
number(tk_send_without_enc('count', *opts))
else
list(tk_send_without_enc('count', *opts))
end
end
# File tk/lib/tk/text.rb, line 649
def count_info(idx1, idx2, update=true)
# Tk8.5 feature
opts = [
:chars, :displaychars, :displayindices, :displaylines,
:indices, :lines, :xpixels, :ypixels
]
if update
lst = count(idx1, idx2, :update, *opts)
else
lst = count(idx1, idx2, *opts)
end
info = {}
opts.each_with_index{|key, idx| info[key] = lst[idx]}
info
end
# File tk/lib/tk/text.rb, line 555
def current_image_configinfo(index, slot = nil)
if TkComm::GET_CONFIGINFO_AS_ARRAY
if slot
conf = image_configinfo(index, slot)
{conf[0] => conf[4]}
else
ret = {}
image_configinfo(index).each{|conf|
ret[conf[0]] = conf[4] if conf.size > 2
}
ret
end
else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
ret = {}
image_configinfo(index, slot).each{|k, conf|
ret[k] = conf[-1] if conf.kind_of?(Array)
}
ret
end
end
# File tk/lib/tk/text.rb, line 675
def debug
bool(tk_send_without_enc('debug'))
end
# File tk/lib/tk/text.rb, line 678
def debug=(boolean)
tk_send_without_enc('debug', boolean)
#self
boolean
end
# File tk/lib/tk/text.rb, line 612
def destroy
@tags = {} unless @tags
@tags.each_value do |t|
t.destroy
end
super()
end
# File tk/lib/tk/text.rb, line 684
def dlineinfo(index)
list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
end
# File tk/lib/tk/text.rb, line 700
def edit_redo
tk_send_without_enc('edit', 'redo')
self
end
# File tk/lib/tk/text.rb, line 704
def edit_reset
tk_send_without_enc('edit', 'reset')
self
end
# File tk/lib/tk/text.rb, line 708
def edit_separator
tk_send_without_enc('edit', 'separator')
self
end
# File tk/lib/tk/text.rb, line 712
def edit_undo
tk_send_without_enc('edit', 'undo')
self
end
# File tk/lib/tk/text.rb, line 319
def get_displaychars(*index)
# Tk8.5 feature
get('-displaychars', *index)
end
# File tk/lib/tk/text.rb, line 430
def image_cget(index, slot)
unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
image_cget_strict(index, slot)
else
begin
image_cget_strict(index, slot)
rescue => e
begin
if current_image_configinfo(index).has_key?(slot.to_s)
# not tag error & option is known -> error on known option
fail e
else
# not tag error & option is unknown
nil
end
rescue
fail e # tag error
end
end
end
end
# File tk/lib/tk/text.rb, line 418
def image_cget_strict(index, slot)
case slot.to_s
when 'text', 'label', 'show', 'data', 'file'
_fromUTF8(tk_send_without_enc('image', 'cget',
_get_eval_enc_str(index), "-#{slot}"))
else
tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget',
_get_eval_enc_str(index),
"-#{slot}")))
end
end
# File tk/lib/tk/text.rb, line 466
def image_configinfo(index, slot = nil)
if TkComm::GET_CONFIGINFO_AS_ARRAY
if slot
case slot.to_s
when 'text', 'label', 'show', 'data', 'file'
#conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
else
#conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
end
conf[0] = conf[0][1..-1]
conf
else
# tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
# conf = tk_split_simplelist(conflist)
tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
conf = tk_split_simplelist(conflist, false, true)
conf[0] = conf[0][1..-1]
case conf[0]
when 'text', 'label', 'show', 'data', 'file'
else
if conf[3]
if conf[3].index('{')
conf[3] = tk_split_list(conf[3])
else
conf[3] = tk_tcl2ruby(conf[3])
end
end
if conf[4]
if conf[4].index('{')
conf[4] = tk_split_list(conf[4])
else
conf[4] = tk_tcl2ruby(conf[4])
end
end
end
conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
conf
}
end
else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
if slot
case slot.to_s
when 'text', 'label', 'show', 'data', 'file'
#conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
else
#conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
end
key = conf.shift[1..-1]
{ key => conf }
else
ret = {}
#tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
# conf = tk_split_simplelist(conflist)
tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
conf = tk_split_simplelist(conflist, false, true)
key = conf.shift[1..-1]
case key
when 'text', 'label', 'show', 'data', 'file'
else
if conf[2]
if conf[2].index('{')
conf[2] = tk_split_list(conf[2])
else
conf[2] = tk_tcl2ruby(conf[2])
end
end
if conf[3]
if conf[3].index('{')
conf[3] = tk_split_list(conf[3])
else
conf[3] = tk_tcl2ruby(conf[3])
end
end
end
if conf.size == 1
ret[key] = conf[0][1..-1] # alias info
else
ret[key] = conf
end
}
ret
end
end
end
# File tk/lib/tk/text.rb, line 452
def image_configure(index, slot, value=None)
if slot.kind_of?(Hash)
_fromUTF8(tk_send_without_enc('image', 'configure',
_get_eval_enc_str(index),
*hash_kv(slot, true)))
else
_fromUTF8(tk_send_without_enc('image', 'configure',
_get_eval_enc_str(index),
"-#{slot}",
_get_eval_enc_str(value)))
end
self
end
# File tk/lib/tk/text.rb, line 576
def image_names
#tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
tagid2obj(elt)
}
end
# File tk/lib/tk/text.rb, line 314
def index(idx)
Tk::Text::IndexString.new(tk_send_without_enc('index',
_get_eval_enc_str(idx)))
end
# File tk/lib/tk/text.rb, line 273
def init_instance_variable
@cmdtbl = []
@tags = {}
end
# File tk/lib/tk/text.rb, line 593
def insert(index, chars, *tags)
if tags[0].kind_of?(Array)
# multiple chars-taglist argument :: str, [tag,...], str, [tag,...], ...
args = [chars]
while tags.size > 0
args << tags.shift.collect{|x|_get_eval_string(x)}.join(' ') # taglist
args << tags.shift if tags.size > 0 # chars
end
super(index, *args)
else
# single chars-taglist argument :: str, tag, tag, ...
if tags.size == 0
super(index, chars)
else
super(index, chars, tags.collect{|x|_get_eval_string(x)}.join(' '))
end
end
end
# File tk/lib/tk/text.rb, line 382
def mark_gravity(mark, direction=nil)
if direction
tk_send_without_enc('mark', 'gravity',
_get_eval_enc_str(mark), direction)
self
else
tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
end
end
# File tk/lib/tk/text.rb, line 375
def mark_names
#tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
tagid2obj(elt)
}
end
# File tk/lib/tk/text.rb, line 406
def mark_next(index)
tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next',
_get_eval_enc_str(index))))
end
# File tk/lib/tk/text.rb, line 412
def mark_previous(index)
tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous',
_get_eval_enc_str(index))))
end
# File tk/lib/tk/text.rb, line 392
def mark_set(mark, index)
tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark),
_get_eval_enc_str(index))
self
end
# File tk/lib/tk/text.rb, line 399
def mark_unset(*marks)
tk_send_without_enc('mark', 'unset',
*(marks.collect{|mark| _get_eval_enc_str(mark)}))
self
end
# File tk/lib/tk/text.rb, line 691
def modified(mode)
tk_send_without_enc('edit', 'modified', mode)
self
end
# File tk/lib/tk/text.rb, line 695
def modified=(mode)
modified(mode)
mode
end
# File tk/lib/tk/text.rb, line 688
def modified?
bool(tk_send_without_enc('edit', 'modified'))
end
# File tk/lib/tk/text.rb, line 665
def peer_names()
# Tk8.5 feature
list(tk_send_without_enc('peer', 'names'))
end
# File tk/lib/tk/text.rb, line 670
def replace(idx1, idx2, *opts)
tk_send('replace', idx1, idx2, *opts)
self
end
# File tk/lib/tk/text.rb, line 588
def set_current(index)
tk_send_without_enc('mark','set','current', _get_eval_enc_str(index))
self
end
# File tk/lib/tk/text.rb, line 583
def set_insert(index)
tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index))
self
end
# File tk/lib/tk/text.rb, line 745
def tag_add(tag, index1, index2=None)
tk_send_without_enc('tag', 'add', _get_eval_enc_str(tag),
_get_eval_enc_str(index1),
_get_eval_enc_str(index2))
self
end
def tag_bind(tag, seq, cmd=Proc.new, *args)
_bind([@path, 'tag', 'bind', tag], seq, cmd, *args) self
end
# File tk/lib/tk/text.rb, line 777
def tag_bind(tag, seq, *args)
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
if TkComm._callback_entry?(args[0]) || !block_given?
cmd = args.shift
else
cmd = Proc.new
end
_bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
self
end
def tag_bind_append(tag, seq, cmd=Proc.new, *args)
_bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args) self
end
# File tk/lib/tk/text.rb, line 792
def tag_bind_append(tag, seq, *args)
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
if TkComm._callback_entry?(args[0]) || !block_given?
cmd = args.shift
else
cmd = Proc.new
end
_bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
self
end
# File tk/lib/tk/text.rb, line 803
def tag_bind_remove(tag, seq)
_bind_remove([@path, 'tag', 'bind', tag], seq)
self
end
# File tk/lib/tk/text.rb, line 808
def tag_bindinfo(tag, context=nil)
_bindinfo([@path, 'tag', 'bind', tag], context)
end
# File tk/lib/tk/text.rb, line 754
def tag_delete(*tags)
tk_send_without_enc('tag', 'delete',
*(tags.collect{|tag| _get_eval_enc_str(tag)}))
TkTextTag::TTagID_TBL.mutex.synchronize{
if TkTextTag::TTagID_TBL[@path]
tags.each{|tag|
if tag.kind_of?(TkTextTag)
TkTextTag::TTagID_TBL[@path].delete(tag.id)
else
TkTextTag::TTagID_TBL[@path].delete(tag)
end
}
end
}
self
end
# File tk/lib/tk/text.rb, line 994
def tag_lower(tag, below=None)
tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag),
_get_eval_enc_str(below))
self
end
# File tk/lib/tk/text.rb, line 368
def tag_names(index=None)
#tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)))).collect{|elt|
tk_split_simplelist(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)), false, true).collect{|elt|
tagid2obj(elt)
}
end
# File tk/lib/tk/text.rb, line 1019
def tag_nextrange(tag, first, last=None)
simplelist(tk_send_without_enc('tag', 'nextrange',
_get_eval_enc_str(tag),
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
Tk::Text::IndexString.new(idx)
}
end
# File tk/lib/tk/text.rb, line 1028
def tag_prevrange(tag, first, last=None)
simplelist(tk_send_without_enc('tag', 'prevrange',
_get_eval_enc_str(tag),
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
Tk::Text::IndexString.new(idx)
}
end
def tag_cget(tag, key)
case key.to_s when 'text', 'label', 'show', 'data', 'file' tk_call_without_enc(@path, 'tag', 'cget', _get_eval_enc_str(tag), "-#{key}") when 'font', 'kanjifont' #fnt = tk_tcl2ruby(tk_send('tag', 'cget', tag, "-#{key}")) fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('tag','cget',_get_eval_enc_str(tag),'-font'))) unless fnt.kind_of?(TkFont) fnt = tagfontobj(tag, fnt) end if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/ # obsolete; just for compatibility fnt.kanji_font else fnt end else tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@path,'tag','cget',_get_eval_enc_str(tag),"-#{key}"))) end
end
def tag_configure(tag, key, val=None)
if key.kind_of?(Hash) key = _symbolkey2str(key) if ( key['font'] || key['kanjifont'] \ || key['latinfont'] || key['asciifont'] ) tagfont_configure(tag, key) else tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), *hash_kv(key, true)) end else if key == 'font' || key == :font || key == 'kanjifont' || key == :kanjifont || key == 'latinfont' || key == :latinfont || key == 'asciifont' || key == :asciifont if val == None tagfontobj(tag) else tagfont_configure(tag, {key=>val}) end else tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), "-#{key}", _get_eval_enc_str(val)) end end self
end
def tag_configinfo(tag, key=nil)
if TkComm::GET_CONFIGINFO_AS_ARRAY if key case key.to_s when 'text', 'label', 'show', 'data', 'file' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) when 'font', 'kanjifont' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) conf[4] = tagfont_configinfo(tag, conf[4]) else conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) end conf[0] = conf[0][1..-1] conf else ret = tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).collect{|conflist| conf = tk_split_simplelist(conflist) conf[0] = conf[0][1..-1] case conf[0] when 'text', 'label', 'show', 'data', 'file' else if conf[3] if conf[3].index('{') conf[3] = tk_split_list(conf[3]) else conf[3] = tk_tcl2ruby(conf[3]) end end if conf[4] if conf[4].index('{') conf[4] = tk_split_list(conf[4]) else conf[4] = tk_tcl2ruby(conf[4]) end end end conf[1] = conf[1][1..-1] if conf.size == 2 # alias info conf } fontconf = ret.assoc('font') if fontconf ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'} fontconf[4] = tagfont_configinfo(tag, fontconf[4]) ret.push(fontconf) else ret end end else # ! TkComm::GET_CONFIGINFO_AS_ARRAY if key case key.to_s when 'text', 'label', 'show', 'data', 'file' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) when 'font', 'kanjifont' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) conf[4] = tagfont_configinfo(tag, conf[4]) else conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}"))) end key = conf.shift[1..-1] { key => conf } else ret = {} tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).each{|conflist| conf = tk_split_simplelist(conflist) key = conf.shift[1..-1] case key when 'text', 'label', 'show', 'data', 'file' else if conf[2] if conf[2].index('{') conf[2] = tk_split_list(conf[2]) else conf[2] = tk_tcl2ruby(conf[2]) end end if conf[3] if conf[3].index('{') conf[3] = tk_split_list(conf[3]) else conf[3] = tk_tcl2ruby(conf[3]) end end end if conf.size == 1 ret[key] = conf[0][1..-1] # alias info else ret[key] = conf end } fontconf = ret['font'] if fontconf ret.delete('font') ret.delete('kanjifont') fontconf[3] = tagfont_configinfo(tag, fontconf[3]) ret['font'] = fontconf end ret end end
end
def current_tag_configinfo(tag, key=nil)
if TkComm::GET_CONFIGINFO_AS_ARRAY if key conf = tag_configinfo(tag, key) {conf[0] => conf[4]} else ret = {} tag_configinfo(tag).each{|conf| ret[conf[0]] = conf[4] if conf.size > 2 } ret end else # ! TkComm::GET_CONFIGINFO_AS_ARRAY ret = {} tag_configinfo(tag, key).each{|k, conf| ret[k] = conf[-1] if conf.kind_of?(Array) } ret end
end
# File tk/lib/tk/text.rb, line 988
def tag_raise(tag, above=None)
tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag),
_get_eval_enc_str(above))
self
end
# File tk/lib/tk/text.rb, line 1006
def tag_ranges(tag)
#l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
# _get_eval_enc_str(tag)))
l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
_get_eval_enc_str(tag)),
false, true)
r = []
while key=l.shift
r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
end
r
end
# File tk/lib/tk/text.rb, line 1000
def tag_remove(tag, *indices)
tk_send_without_enc('tag', 'remove', _get_eval_enc_str(tag),
*(indices.collect{|idx| _get_eval_enc_str(idx)}))
self
end
# File tk/lib/tk/text.rb, line 360
def tagid2obj(tagid)
if @tags[tagid]
@tags[tagid]
else
tagid
end
end
# File tk/lib/tk/text.rb, line 727
def text_copy
# Tk8.4 feature
tk_call_without_enc('tk_textCopy', @path)
self
end
# File tk/lib/tk/text.rb, line 733
def text_cut
# Tk8.4 feature
tk_call_without_enc('tk_textCut', @path)
self
end
# File tk/lib/tk/text.rb, line 739
def text_paste
# Tk8.4 feature
tk_call_without_enc('tk_textPaste', @path)
self
end
# File tk/lib/tk/text.rb, line 324
def value
_fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
end
# File tk/lib/tk/text.rb, line 328
def value= (val)
tk_send_without_enc('delete', "1.0", 'end')
tk_send_without_enc('insert', "1.0", _get_eval_enc_str(val))
val
end