# File tk/lib/tkextlib/blt/tree.rb, line 281
def self.id2obj(tree, id)
tpath = tree.path
TreeTagID_TBL.mutex.synchronize{
if TreeTagID_TBL[tpath]
if TreeTagID_TBL[tpath][id]
TreeTagID_TBL[tpath][id]
else
begin
# self.new(tree, id)
(obj = self.allocate).instance_eval{
@parent = @tree = tree
@tpath = @parent.path
@path = @id = id.dup.freeze if id
TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
TreeTagID_TBL[@tpath][@id] = self
}
obj
rescue
id
end
end
else
id
end
}
end
# File tk/lib/tkextlib/blt/tree.rb, line 308
def initialize(tree, tag_str = nil)
@parent = @tree = tree
@tpath = @parent.path
if tag_str
@path = @id = tag_str.dup.freeze
else
TreeTag_ID.mutex.synchronize{
@path = @id = TreeTag_ID.join(TkCore::INTERP._ip_id_)
TreeTag_ID[1].succ!
}
end
TreeTagID_TBL.mutex.synchronize{
TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
TreeTagID_TBL[@tpath][@id] = self
}
end
# File tk/lib/tkextlib/blt/tree.rb, line 330
def add(*nodes)
tk_call(@tpath, 'tag', 'add', @id, *nodes)
self
end
# File tk/lib/tkextlib/blt/tree.rb, line 335
def delete(*nodes)
tk_call(@tpath, 'tag', 'delete', @id, *nodes)
self
end
# File tk/lib/tkextlib/blt/tree.rb, line 340
def forget()
tk_call(@tpath, 'tag', 'forget', @id)
TreeTagID_TBL.mutex.synchronize{
TreeTagID_TBL[@tpath].delete(@id)
}
self
end
# File tk/lib/tkextlib/blt/tree.rb, line 348
def nodes()
simplelist(tk_call(@tpath, 'tag', 'nodes', @id)).collect{|node|
Tk::BLT::Tree::Node.id2obj(@path, node)
}
end