# File tk/lib/tk/text.rb, line 307 def self.at(x, y) Tk::Text::IndexString.at(x, y) end
# File tk/lib/tk/text.rb, line 263 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 279 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 341 def _addcmd(cmd) @cmdtbl.push cmd end
# File tk/lib/tk/text.rb, line 345 def _addtag(name, obj) @tags[name] = obj end
# File tk/lib/tk/text.rb, line 311 def at(x, y) Tk::Text::IndexString.at(x, y) end
# File tk/lib/tk/text.rb, line 621 def backspace self.delete 'insert' end
# File tk/lib/tk/text.rb, line 625 def bbox(index) list(tk_send_without_enc('bbox', _get_eval_enc_str(index))) end
# File tk/lib/tk/text.rb, line 335 def clear tk_send_without_enc('delete', "1.0", 'end') self end
# File tk/lib/tk/text.rb, line 629 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 634 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 650 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 556 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 676 def debug bool(tk_send_without_enc('debug')) end
# File tk/lib/tk/text.rb, line 679 def debug=(boolean) tk_send_without_enc('debug', boolean) #self boolean end
# File tk/lib/tk/text.rb, line 613 def destroy @tags = {} unless @tags @tags.each_value do |t| t.destroy end super() end
# File tk/lib/tk/text.rb, line 685 def dlineinfo(index) list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index))) end
# File tk/lib/tk/text.rb, line 701 def edit_redo tk_send_without_enc('edit', 'redo') self end
# File tk/lib/tk/text.rb, line 705 def edit_reset tk_send_without_enc('edit', 'reset') self end
# File tk/lib/tk/text.rb, line 709 def edit_separator tk_send_without_enc('edit', 'separator') self end
# File tk/lib/tk/text.rb, line 713 def edit_undo tk_send_without_enc('edit', 'undo') self end
# File tk/lib/tk/text.rb, line 320 def get_displaychars(*index) # Tk8.5 feature get('-displaychars', *index) end
# File tk/lib/tk/text.rb, line 431 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 419 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 467 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 453 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 577 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 315 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 274 def init_instance_variable @cmdtbl = [] @tags = {} end
# File tk/lib/tk/text.rb, line 594 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 383 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 376 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 407 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 413 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 393 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 400 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 692 def modified(mode) tk_send_without_enc('edit', 'modified', mode) self end
# File tk/lib/tk/text.rb, line 696 def modified=(mode) modified(mode) mode end
# File tk/lib/tk/text.rb, line 689 def modified? bool(tk_send_without_enc('edit', 'modified')) end
# File tk/lib/tk/text.rb, line 666 def peer_names() # Tk8.5 feature list(tk_send_without_enc('peer', 'names')) end
# File tk/lib/tk/text.rb, line 671 def replace(idx1, idx2, *opts) tk_send('replace', idx1, idx2, *opts) self end
# File tk/lib/tk/text.rb, line 589 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 584 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 746 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 778 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 793 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 804 def tag_bind_remove(tag, seq) _bind_remove([@path, 'tag', 'bind', tag], seq) self end
# File tk/lib/tk/text.rb, line 809 def tag_bindinfo(tag, context=nil) _bindinfo([@path, 'tag', 'bind', tag], context) end
# File tk/lib/tk/text.rb, line 755 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 995 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 369 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 1020 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 1029 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 989 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 1007 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 1001 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 361 def tagid2obj(tagid) if @tags[tagid] @tags[tagid] else tagid end end
# File tk/lib/tk/text.rb, line 728 def text_copy # Tk8.4 feature tk_call_without_enc('tk_textCopy', @path) self end
# File tk/lib/tk/text.rb, line 734 def text_cut # Tk8.4 feature tk_call_without_enc('tk_textCut', @path) self end
# File tk/lib/tk/text.rb, line 740 def text_paste # Tk8.4 feature tk_call_without_enc('tk_textPaste', @path) self end
# File tk/lib/tk/text.rb, line 325 def value _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char")) end
# File tk/lib/tk/text.rb, line 329 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, code samples, 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.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.