# 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
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.