# File tk/lib/tk/textmark.rb, line 22
def TkTextMark.id2obj(text, id)
tpath = text.path
TMarkID_TBL.mutex.synchronize{
if TMarkID_TBL[tpath]
TMarkID_TBL[tpath][id]? TMarkID_TBL[tpath][id]: id
else
id
end
}
end
# File tk/lib/tk/textmark.rb, line 33
def initialize(parent, index)
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@parent = @t = parent
@tpath = parent.path
Tk_TextMark_ID.mutex.synchronize{
# @path = @id = Tk_TextMark_ID.join('')
@path = @id = Tk_TextMark_ID.join(TkCore::INTERP._ip_id_).freeze
Tk_TextMark_ID[1].succ!
}
TMarkID_TBL.mutex.synchronize{
TMarkID_TBL[@id] = self
TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
TMarkID_TBL[@tpath][@id] = self
}
tk_call_without_enc(@t.path, 'mark', 'set', @id,
_get_eval_enc_str(index))
@t._addtag id, self
end
# File tk/lib/tk/textmark.rb, line 58
def exist?
#if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'names'))).find{|id| id == @id } )
if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'mark', 'names'), false, true).find{|id| id == @id } )
true
else
false
end
end
# File tk/lib/tk/textmark.rb, line 114
def gravity
tk_call_without_enc(@t.path, 'mark', 'gravity', @id)
end
# File tk/lib/tk/textmark.rb, line 118
def gravity=(direction)
tk_call_without_enc(@t.path, 'mark', 'gravity', @id, direction)
#self
direction
end
# File tk/lib/tk/textmark.rb, line 54
def id
Tk::Text::IndexString.new(@id)
end
# File tk/lib/tk/textmark.rb, line 124
def next(index = nil)
if index
@t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', _get_eval_enc_str(index))))
else
@t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', @id)))
end
end
# move to Tk::Text::IndexModMethods module def +(mod)
return chars(mod) if mod.kind_of?(Numeric) mod = mod.to_s if mod =~ /^\s*[+-]?\d/ Tk::Text::IndexString.new(@id + ' + ' + mod) else Tk::Text::IndexString.new(@id + ' ' + mod) end
end
def -(mod)
return chars(-mod) if mod.kind_of?(Numeric) mod = mod.to_s if mod =~ /^\s*[+-]?\d/ Tk::Text::IndexString.new(@id + ' - ' + mod) elsif mod =~ /^\s*[-]\s+(\d.*)$/ Tk::Text::IndexString.new(@id + ' - -' + $1) else Tk::Text::IndexString.new(@id + ' ' + mod) end
end
# File tk/lib/tk/textmark.rb, line 94
def pos
@t.index(@id)
end
# File tk/lib/tk/textmark.rb, line 98
def pos=(where)
set(where)
end
# File tk/lib/tk/textmark.rb, line 132
def previous(index = nil)
if index
@t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', _get_eval_enc_str(index))))
else
@t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', @id)))
end
end
# File tk/lib/tk/textmark.rb, line 102
def set(where)
tk_call_without_enc(@t.path, 'mark', 'set', @id,
_get_eval_enc_str(where))
self
end
# File tk/lib/tk/textmark.rb, line 108
def unset
tk_call_without_enc(@t.path, 'mark', 'unset', @id)
self
end