class Tk::Text
Constants
- ItemConfCMD
- TkCommandNames
- WidgetClassName
Public Class Methods
Source
# File lib/tk/text.rb, line 307 def self.at(x, y) Tk::Text::IndexString.at(x, y) end
Source
# File 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
Calls superclass method
TkWindow::new
Public Instance Methods
Source
# File 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
Source
# File lib/tk/text.rb, line 345 def _addtag(name, obj) @tags[name] = obj end
Source
# File lib/tk/text.rb, line 625 def bbox(index) list(tk_send_without_enc('bbox', _get_eval_enc_str(index))) end
Source
# File lib/tk/text.rb, line 335 def clear tk_send_without_enc('delete', "1.0", 'end') self end
Also aliased as: erase
Source
# File 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
Source
# File 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', *args)) else list(tk_send_without_enc('count', *args)) end end
Source
# File 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
Source
# File 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
Source
# File lib/tk/text.rb, line 679 def debug=(boolean) tk_send_without_enc('debug', boolean) #self boolean end
Source
# File lib/tk/text.rb, line 613 def destroy @tags = {} unless @tags @tags.each_value do |t| t.destroy end super() end
Calls superclass method
TkWindow#destroy
Source
# File lib/tk/text.rb, line 685 def dlineinfo(index) list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index))) end
Source
# File lib/tk/text.rb, line 1432 def dump(type_info, *index, &block) if type_info.kind_of?(Symbol) type_info = [ type_info.to_s ] elsif type_info.kind_of?(String) type_info = [ type_info ] end args = type_info.collect{|inf| '-' + inf} args << '-command' << block if block str = tk_send('dump', *(args + index)) result = [] sel = nil i = 0 while i < str.size # retrieve key idx = str.index(/ /, i) result.push str[i..(idx-1)] i = idx + 1 # retrieve value case result[-1] when 'text' if str[i] == ?{ # text formed as {...} val, i = _retrieve_braced_text(str, i) result.push val else # text which may contain backslashes val, i = _retrieve_backslashed_text(str, i) result.push val end else idx = str.index(/ /, i) val = str[i..(idx-1)] case result[-1] when 'mark' case val when 'insert' result.push TkTextMarkInsert.new(self) when 'current' result.push TkTextMarkCurrent.new(self) when 'anchor' result.push TkTextMarkAnchor.new(self) else result.push tk_tcl2ruby(val) end when 'tagon' if val == 'sel' if sel result.push sel else result.push TkTextTagSel.new(self) end else result.push tk_tcl2ruby(val) end when 'tagoff' result.push tk_tcl2ruby(val) when 'window' result.push tk_tcl2ruby(val) when 'image' result.push tk_tcl2ruby(val) end i = idx + 1 end # retrieve index idx = str.index(/ /, i) if idx result.push(Tk::Text::IndexString.new(str[i..(idx-1)])) i = idx + 1 else result.push(Tk::Text::IndexString.new(str[i..-1])) break end end kvis = [] until result.empty? kvis.push [result.shift, result.shift, result.shift] end kvis # result is [[key1, value1, index1], [key2, value2, index2], ...] end
Source
# File lib/tk/text.rb, line 1551 def dump_all(*index, &block) dump(['all'], *index, &block) end
Source
# File lib/tk/text.rb, line 1566 def dump_image(*index, &block) dump(['image'], *index, &block) end
Source
# File lib/tk/text.rb, line 1554 def dump_mark(*index, &block) dump(['mark'], *index, &block) end
Source
# File lib/tk/text.rb, line 1557 def dump_tag(*index, &block) dump(['tag'], *index, &block) end
Source
# File lib/tk/text.rb, line 1560 def dump_text(*index, &block) dump(['text'], *index, &block) end
Source
# File lib/tk/text.rb, line 1563 def dump_window(*index, &block) dump(['window'], *index, &block) end
Source
# File lib/tk/text.rb, line 701 def edit_redo tk_send_without_enc('edit', 'redo') self end
Source
# File lib/tk/text.rb, line 705 def edit_reset tk_send_without_enc('edit', 'reset') self end
Source
# File lib/tk/text.rb, line 709 def edit_separator tk_send_without_enc('edit', 'separator') self end
Source
# File lib/tk/text.rb, line 713 def edit_undo tk_send_without_enc('edit', 'undo') self end
Source
# File lib/tk/text.rb, line 320 def get_displaychars(*index) # Tk8.5 feature get('-displaychars', *index) end
Source
# File 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
Source
# File 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
Source
# File 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
Source
# File 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
Source
# File 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
Source
# File lib/tk/text.rb, line 315 def index(idx) Tk::Text::IndexString.new(tk_send_without_enc('index', _get_eval_enc_str(idx))) end
Source
# File lib/tk/text.rb, line 274 def init_instance_variable @cmdtbl = [] @tags = {} end
Source
# File 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
Calls superclass method
TkTextWin#insert
Source
# File 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
Source
# File 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
Source
# File lib/tk/text.rb, line 407 def mark_next(index) tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next', _get_eval_enc_str(index)))) end
Also aliased as: next_mark
Source
# File lib/tk/text.rb, line 413 def mark_previous(index) tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous', _get_eval_enc_str(index)))) end
Also aliased as: previous_mark
Source
# File 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
Also aliased as: set_mark
Source
# File 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
Also aliased as: unset_mark
Source
# File lib/tk/text.rb, line 692 def modified(mode) tk_send_without_enc('edit', 'modified', mode) self end
Source
# File lib/tk/text.rb, line 689 def modified? bool(tk_send_without_enc('edit', 'modified')) end
Source
# File lib/tk/text.rb, line 666 def peer_names() # Tk8.5 feature list(tk_send_without_enc('peer', 'names')) end
Source
# File lib/tk/text.rb, line 671 def replace(idx1, idx2, *opts) tk_send('replace', idx1, idx2, *opts) self end
Source
# File lib/tk/text.rb, line 1428 def rsearch(pat,start,stop=None) rsearch_with_length(pat,start,stop)[0] end
Source
# File lib/tk/text.rb, line 1376 def rsearch_with_length(pat,start,stop=None) pat = pat.chr if pat.kind_of?(Integer) if stop != None return ["", 0] if compare(start,'<=',stop) txt = get(stop,start) if (pos = txt.rindex(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index(stop + " + #{pos} chars"), pat.split('').length] return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index(stop + " + #{pos} chars"), $&.split('').length] return [index(stop + " + #{pos} chars"), _ktext_length(match), match] end else return ["", 0] end else txt = get('1.0',start) if (pos = txt.rindex(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index("1.0 + #{pos} chars"), pat.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index("1.0 + #{pos} chars"), $&.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(match), match] end else txt = get('1.0','end - 1 char') if (pos = txt.rindex(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index("1.0 + #{pos} chars"), pat.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index("1.0 + #{pos} chars"), $&.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(match), match] end else return ["", 0] end end end end
Source
# File lib/tk/text.rb, line 1372 def search(pat,start,stop=None) search_with_length(pat,start,stop)[0] end
Source
# File lib/tk/text.rb, line 1315 def search_with_length(pat,start,stop=None) pat = pat.chr if pat.kind_of?(Integer) if stop != None return ["", 0] if compare(start,'>=',stop) txt = get(start,stop) if (pos = txt.index(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index(start + " + #{pos} chars"), pat.split('').length] return [index(start + " + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index(start + " + #{pos} chars"), $&.split('').length] return [index(start + " + #{pos} chars"), _ktext_length(match), match] end else return ["", 0] end else txt = get(start,'end - 1 char') if (pos = txt.index(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index(start + " + #{pos} chars"), pat.split('').length] return [index(start + " + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index(start + " + #{pos} chars"), $&.split('').length] return [index(start + " + #{pos} chars"), _ktext_length(match), match] end else txt = get('1.0','end - 1 char') if (pos = txt.index(pat)) match = $& #pos = txt[0..(pos-1)].split('').length if pos > 0 pos = _ktext_length(txt[0..(pos-1)]) if pos > 0 if pat.kind_of?(String) #return [index("1.0 + #{pos} chars"), pat.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup] else #return [index("1.0 + #{pos} chars"), $&.split('').length] return [index("1.0 + #{pos} chars"), _ktext_length(match), match] end else return ["", 0] end end end end
Source
# File lib/tk/text.rb, line 589 def set_current(index) tk_send_without_enc('mark','set','current', _get_eval_enc_str(index)) self end
Source
# File lib/tk/text.rb, line 584 def set_insert(index) tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index)) self end
Source
# File 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
Source
# File lib/tk/text.rb, line 774 def tag_bind(tag, seq, *args, &block) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block cmd = args.shift else cmd = block end _bind([@path, 'tag', 'bind', tag], seq, cmd, *args) self end
Source
# File lib/tk/text.rb, line 785 def tag_bind_append(tag, seq, *args, &block) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block cmd = args.shift else cmd = block end _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args) self end
Source
# File lib/tk/text.rb, line 796 def tag_bind_remove(tag, seq) _bind_remove([@path, 'tag', 'bind', tag], seq) self end
Source
# File lib/tk/text.rb, line 801 def tag_bindinfo(tag, context=nil) _bindinfo([@path, 'tag', 'bind', tag], context) end
Source
# File 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
Also aliased as: deltag, delete_tag
Source
# File lib/tk/text.rb, line 987 def tag_lower(tag, below=None) tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag), _get_eval_enc_str(below)) self end
Source
# File 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
Source
# File lib/tk/text.rb, line 1012 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
Source
# File lib/tk/text.rb, line 1021 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
Source
# File lib/tk/text.rb, line 981 def tag_raise(tag, above=None) tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag), _get_eval_enc_str(above)) self 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
Source
# File lib/tk/text.rb, line 999 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
Source
# File lib/tk/text.rb, line 993 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
Source
# File lib/tk/text.rb, line 361 def tagid2obj(tagid) if @tags[tagid] @tags[tagid] else tagid end end
Source
# File lib/tk/text.rb, line 728 def text_copy # Tk8.4 feature tk_call_without_enc('tk_textCopy', @path) self end
Source
# File lib/tk/text.rb, line 734 def text_cut # Tk8.4 feature tk_call_without_enc('tk_textCut', @path) self end
Source
# File lib/tk/text.rb, line 740 def text_paste # Tk8.4 feature tk_call_without_enc('tk_textPaste', @path) self end
Source
# File lib/tk/text.rb, line 1247 def tksearch(*args) # call 'search' subcommand of text widget # args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>] # If <pattern> is regexp, then it must be a regular expression of Tcl nocase = false if args[0].kind_of?(Array) opts = args.shift.collect{|opt| s_opt = opt.to_s nocase = true if s_opt == 'nocase' '-' + s_opt } else opts = [] end if args[0].kind_of?(Regexp) regexp = args.shift if !nocase && (regexp.options & Regexp::IGNORECASE) != 0 opts << '-nocase' end args.unshift(regexp.source) end opts << '--' ret = tk_send('search', *(opts + args)) if ret == "" nil else Tk::Text::IndexString.new(ret) end end
Source
# File lib/tk/text.rb, line 1280 def tksearch_with_count(*args) # call 'search' subcommand of text widget # args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>] # If <pattern> is regexp, then it must be a regular expression of Tcl nocase = false if args[0].kind_of?(Array) opts = args.shift.collect{|opt| s_opt = opt.to_s nocase = true if s_opt == 'nocase' '-' + s_opt } else opts = [] end opts << '-count' << args.shift if args[0].kind_of?(Regexp) regexp = args.shift if !nocase && (regexp.options & Regexp::IGNORECASE) != 0 opts << '-nocase' end args.unshift(regexp.source) end opts << '--' ret = tk_send('search', *(opts + args)) if ret == "" nil else Tk::Text::IndexString.new(ret) end end
Source
# File lib/tk/text.rb, line 325 def value _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char")) end
Source
# File 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
Source
# File lib/tk/text.rb, line 1214 def window_names # tk_split_simplelist(_fromUTF8(tk_send_without_enc('window', 'names'))).collect{|elt| tk_split_simplelist(tk_send_without_enc('window', 'names'), false, true).collect{|elt| tagid2obj(elt) } end
def window_cget(index, slot) case slot.to_s when 'text', 'label', 'show', 'data', 'file' _fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), "-#{slot}")) when 'font', 'kanjifont' #fnt = tk_tcl2ruby(tk_send('window', 'cget', index, "-#{slot}")) fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), '-font'))) unless fnt.kind_of?(TkFont) fnt = tagfontobj(index, fnt) end if slot.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/ # obsolete; just for compatibility fnt.kanji_font else fnt end else tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), "-#{slot}"))) end end def window_configure(index, slot, value=None) if index.kind_of?(TkTextWindow) index.configure(slot, value) else if slot.kind_of?(Hash) slot = _symbolkey2str(slot) win = slot['window'] # slot['window'] = win.epath if win.kind_of?(TkWindow) slot['window'] = _epath(win) if win if slot['create'] p_create = slot['create'] if p_create.kind_of?(Proc)
#=begin
slot['create'] = install_cmd(proc{ id = p_create.call if id.kind_of?(TkWindow) id.epath else id end })
#=end
slot['create'] = install_cmd(proc{_epath(p_create.call)}) end end tk_send_without_enc('window', 'configure', _get_eval_enc_str(index), *hash_kv(slot, true)) else if slot == 'window' || slot == :window # id = value # value = id.epath if id.kind_of?(TkWindow) value = _epath(value) end if slot == 'create' || slot == :create p_create = value if p_create.kind_of?(Proc)
#=begin
value = install_cmd(proc{ id = p_create.call if id.kind_of?(TkWindow) id.epath else id end })
#=end
value = install_cmd(proc{_epath(p_create.call)}) end end tk_send_without_enc('window', 'configure', _get_eval_enc_str(index), "-#{slot}", _get_eval_enc_str(value)) end end self end def window_configinfo(win, 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('window', 'configure', _get_eval_enc_str(win), "-#{slot}"))) else conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}"))) end conf[0] = conf[0][1..-1] conf else tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).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 } 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('window', 'configure', _get_eval_enc_str(win), "-#{slot}"))) else conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}"))) end key = conf.shift[1..-1] { key => conf } else ret = {} tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).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 } ret end end end def current_window_configinfo(win, slot = nil) if TkComm::GET_CONFIGINFO_AS_ARRAY if slot conf = window_configinfo(win, slot) {conf[0] => conf[4]} else ret = {} window_configinfo(win).each{|conf| ret[conf[0]] = conf[4] if conf.size > 2 } ret end else # ! TkComm::GET_CONFIGINFO_AS_ARRAY ret = {} window_configinfo(win, slot).each{|k, conf| ret[k] = conf[-1] if conf.kind_of?(Array) } ret end end
Source
# File lib/tk/text.rb, line 718 def xview_pickplace(index) tk_send_without_enc('xview', '-pickplace', _get_eval_enc_str(index)) self end
Source
# File lib/tk/text.rb, line 723 def yview_pickplace(index) tk_send_without_enc('yview', '-pickplace', _get_eval_enc_str(index)) self end
Private Instance Methods
Source
# File lib/tk/text.rb, line 302 def __strval_optkeys super() << 'inactiveseletcionbackground' end
Calls superclass method
TkConfigMethod#__strval_optkeys
Source
# File lib/tk/text.rb, line 1221 def _ktext_length(txt) if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!! return txt.length end ########################### if $KCODE !~ /n/i return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length end # $KCODE == 'NONE' if JAPANIZED_TK tk_call_without_enc('kstring', 'length', _get_eval_enc_str(txt)).to_i else begin tk_call_without_enc('encoding', 'convertto', 'ascii', _get_eval_enc_str(txt)).length rescue StandardError, NameError # sorry, I have no plan txt.length end end end
Source
# File lib/tk/text.rb, line 1534 def _retrieve_backslashed_text(str, i) j = i idx = nil loop { idx = str.index(/ /, j) if str[idx-1] == ?\\ j += 1 else break end } val = str[i..(idx-1)] val.gsub!(/\\( |\{|\})/, '\1') return val, idx + 1 end
Source
# File lib/tk/text.rb, line 1515 def _retrieve_braced_text(str, i) cnt = 0 idx = i while idx < str.size case str[idx] when ?{ cnt += 1 when ?} cnt -= 1 if cnt == 0 break end end idx += 1 end return str[i+1..idx-1], idx + 2 end
Source
# File lib/tk/text.rb, line 288 def create_self(keys) #if keys and keys != None # #tk_call_without_enc('text', @path, *hash_kv(keys, true)) # tk_call_without_enc(self.class::TkCommandNames[0], @path, # *hash_kv(keys, true)) #else # #tk_call_without_enc('text', @path) # tk_call_without_enc(self.class::TkCommandNames[0], @path) #end super(keys) init_instance_variable end
Calls superclass method
TkWindow#create_self
Source
# File lib/tk/text.rb, line 349 def tagid(tag) if tag.kind_of?(TkTextTag) \ || tag.kind_of?(TkTextMark) \ || tag.kind_of?(TkTextImage) \ || tag.kind_of?(TkTextWindow) tag.id else tag # maybe an Array of configure parameters end end