# File tk/lib/tk/texttag.rb, line 25
def TkTextTag.id2obj(text, id)
tpath = text.path
TTagID_TBL.mutex.synchronize{
if TTagID_TBL[tpath]
TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id
else
id
end
}
end
# File tk/lib/tk/texttag.rb, line 36
def initialize(parent, *args)
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#end
@parent = @t = parent
@tpath = parent.path
Tk_TextTag_ID.mutex.synchronize{
# @path = @id = Tk_TextTag_ID.join('')
@path = @id = Tk_TextTag_ID.join(TkCore::INTERP._ip_id_).freeze
Tk_TextTag_ID[1].succ!
}
TTagID_TBL.mutex.synchronize{
TTagID_TBL[@id] = self
TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
TTagID_TBL[@tpath][@id] = self
}
#tk_call @t.path, "tag", "configure", @id, *hash_kv(keys)
if args != []
keys = args.pop
if keys.kind_of?(Hash)
add(*args) if args != []
configure(keys)
else
args.push keys
add(*args)
end
end
@t._addtag id, self
end
# File tk/lib/tk/texttag.rb, line 128
def []=(key,val)
configure key, val
val
end
# File tk/lib/tk/texttag.rb, line 87
def add(*indices)
tk_call_without_enc(@t.path, 'tag', 'add', @id,
*(indices.collect{|idx| _get_eval_enc_str(idx)}))
self
end
def bind(seq, cmd=Proc.new, *args)
_bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self
end
# File tk/lib/tk/texttag.rb, line 198
def bind(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([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
self
end
def #bind_append(seq, cmd=Proc.new, *args)
_bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self
end
# File tk/lib/tk/texttag.rb, line 213
def bind_append(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([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
self
end
# File tk/lib/tk/texttag.rb, line 224
def bind_remove(seq)
_bind_remove([@t.path, 'tag', 'bind', @id], seq)
self
end
# File tk/lib/tk/texttag.rb, line 229
def bindinfo(context=nil)
_bindinfo([@t.path, 'tag', 'bind', @id], context)
end
# File tk/lib/tk/texttag.rb, line 136
def cget(key)
@t.tag_cget @id, key
end
# File tk/lib/tk/texttag.rb, line 139
def cget_strict(key)
@t.tag_cget_strict @id, key
end
# File tk/lib/tk/texttag.rb, line 133
def cget_tkstring(key)
@t.tag_cget_tkstring @id, key
end
def configure(key, val=None)
if key.kind_of?(Hash) tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key) else tk_call @t.path, 'tag', 'configure', @id, "-#{key}", val end
end def configure(key, value)
if value == FALSE value = "0" elsif value.kind_of?(Proc) value = install_cmd(value) end tk_call @t.path, 'tag', 'configure', @id, "-#{key}", value
end
# File tk/lib/tk/texttag.rb, line 186
def configinfo(key=nil)
@t.tag_configinfo @id, key
end
def cget(key)
case key.to_s when 'text', 'label', 'show', 'data', 'file' _fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#{key}")) when 'font', 'kanjifont' #fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#{key}")) fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, '-font'))) unless fnt.kind_of?(TkFont) fnt = tagfontobj(@id, 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(@t.path, 'tag', 'cget', @id, "-#{key}"))) end
end
# File tk/lib/tk/texttag.rb, line 167
def configure(key, val=None)
@t.tag_configure @id, key, val
end
# File tk/lib/tk/texttag.rb, line 190
def current_configinfo(key=nil)
@t.current_tag_configinfo @id, key
end
# File tk/lib/tk/texttag.rb, line 245
def destroy
tk_call_without_enc(@t.path, 'tag', 'delete', @id)
TTagID_TBL.mutex.synchronize{
TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath]
}
self
end
# File tk/lib/tk/texttag.rb, line 70
def exist?
#if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'names'))).find{|id| id == @id } )
if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'names'), false, true).find{|id| id == @id } )
true
else
false
end
end
# File tk/lib/tk/texttag.rb, line 79
def first
Tk::Text::IndexString.new(@id + '.first')
end
# File tk/lib/tk/texttag.rb, line 66
def id
Tk::Text::IndexString.new(@id)
end
# File tk/lib/tk/texttag.rb, line 83
def last
Tk::Text::IndexString.new(@id + '.last')
end
# File tk/lib/tk/texttag.rb, line 239
def lower(below=None)
tk_call_without_enc(@t.path, 'tag', 'lower', @id,
_get_eval_enc_str(below))
self
end
# File tk/lib/tk/texttag.rb, line 108
def nextrange(first, last=None)
simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id,
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
Tk::Text::IndexString.new(idx)
}
end
# File tk/lib/tk/texttag.rb, line 116
def prevrange(first, last=None)
simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id,
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
Tk::Text::IndexString.new(idx)
}
end
# File tk/lib/tk/texttag.rb, line 233
def raise(above=None)
tk_call_without_enc(@t.path, 'tag', 'raise', @id,
_get_eval_enc_str(above))
self
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.